メインコンテンツまでスキップ

AWS Labs Amazon Kendra Index MCPサーバー

Amazon Kendra 向けの AWS Labs Model Context Protocol (MCP) サーバーです。この MCP サーバーを使用すると、Kendra インデックスを RAG の追加コンテキストとして利用できます。

機能

  • 既存の MCP 対応チャットボットを追加の RAG インデックスで強化します
  • Kiro、Cline、Cursor、Windsurf などのコーディングアシスタントの応答を強化します

前提条件

  1. AWS アカウントにサインアップする
  2. RAG 用ドキュメントを使用して Amazon Kendra インデックスを作成する
  3. Astral または GitHub README から uv をインストールする
  4. uv python install 3.10 を使用して Python をインストールする

ツール

KendraQueryTool

  • KendraQueryTool は、ユーザーが指定したクエリを受け取り、Kendra インデックスにクエリを実行して、応答のための追加コンテキストを取得します。デフォルトのインデックス、またはユーザーのプロンプトで指定されたインデックスのいずれかにクエリを実行します。
  • 必須パラメータ: query (str)
  • オプションパラメータ: indexId (str)、region (str)
  • 例:
    • Can you help me understand how to implement a progress event in the CreateHandler using Java? Use the KendraQueryTool to gain additional context.
    • Can you use the test-kendra-index to help answer the following questions...

KendraListIndexesTool

  • KendraListIndexesTool は、アカウント内の Kendra インデックスを一覧表示します。デフォルトでは、mcp 設定ファイルに環境変数として指定されたリージョン内のすべてのインデックスを一覧表示します。それ以外の場合は、プロンプトでリージョンを指定できます。
  • オプションパラメータ: region (str)
  • 例:
    • Can you list the Kendra Indexes in my account in the us-west-2 region

セットアップ

IAM の設定

  1. AWS アカウントの IAM でユーザーをプロビジョニングします
  2. 少なくとも kendra:Querykendra:ListIndices の権限を含むポリシーをアタッチします。代わりに、AWS マネージドの AmazonKendraFullAccess ポリシーをアタッチすることもできます。ユーザーに権限を付与する際は、常に最小権限の原則に従ってください。Amazon Kendra の IAM 権限の詳細については、ドキュメントを参照してください。
  3. 環境上で aws configure を使用して、認証情報(アクセス ID とアクセスキー)を設定します

インストール

KiroCursorVS Code
Add to KiroInstall MCP ServerInstall on VS Code

MCP クライアントの設定で MCP サーバーを設定します(例: Kiro の場合は ~/.kiro/settings/mcp.json を編集します):

{
"mcpServers": {
"awslabs.amazon-kendra-index-mcp-server": {
"command": "uvx",
"args": ["awslabs.amazon-kendra-index-mcp-server"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"KENDRA_INDEX_ID": "[Your Kendra Index Id]",
"AWS_PROFILE": "[Your AWS Profile Name]",
"AWS_REGION": "[Region where your Kendra Index resides]"
},
"disabled": false,
"autoApprove": []
}
}
}

Windows でのインストール

Windows ユーザーの場合、MCP サーバーの設定形式は少し異なります:

{
"mcpServers": {
"awslabs.amazon-kendra-index-mcp-server": {
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "uv",
"args": [
"tool",
"run",
"--from",
"awslabs.amazon-kendra-index-mcp-server@latest",
"awslabs.amazon-kendra-index-mcp-server.exe"
],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"KENDRA_INDEX_ID": "[Your Kendra Index Id]",
"AWS_PROFILE": "[Your AWS Profile Name]",
"AWS_REGION": "[Region where your Kendra Index resides]"
}
}
}
}

または、docker build -t awslabs/amazon-kendra-index-mcp-server. が成功した後に docker を使用します:

# fictitious `.env` file with AWS temporary credentials
AWS_ACCESS_KEY_ID=<from the profile you set up>
AWS_SECRET_ACCESS_KEY=<from the profile you set up>
AWS_SESSION_TOKEN=<from the profile you set up>
  {
"mcpServers": {
"awslabs.amazon-kendra-index-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--env-file",
"/full/path/to/file/above/.env",
"awslabs/amazon-kendra-index-mcp-server:latest"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}

注: 認証情報はホスト側で継続的に更新しておく必要があります

ベストプラクティス

  • IAM 権限を設定する際は最小権限の原則に従ってください
  • 環境(開発、テスト、本番)ごとに別々の AWS プロファイルを使用してください
  • パフォーマンスや問題を把握するために、ブローカーのメトリクスとログを監視してください
  • クライアントアプリケーションに適切なエラーハンドリングを実装してください

セキュリティに関する考慮事項

この MCP サーバーを使用する際は、次の点を考慮してください:

  • この MCP サーバーには、Amazon Kendra インデックスをクエリおよび一覧表示するための権限が必要です
  • この MCP サーバーは、アカウント内のリソースを作成、変更、削除することはできません

トラブルシューティング

  • 権限エラーが発生した場合は、IAM ユーザーに正しいポリシーがアタッチされているかを確認してください
  • 接続の問題については、ネットワーク設定とセキュリティグループを確認してください
  • リソースの変更がタグ検証エラーで失敗する場合、そのリソースは MCP サーバーによって作成されたものではないことを意味します
  • Amazon Kendra に関する一般的な問題については、Amazon Kendra 開発者ガイドを参照してください

バージョン

現在の MCP サーバーのバージョン: 0.0.0