Amazon Bedrock Knowledge Bases との MCP 統合
このリポジトリでは、Model Context Protocol と Amazon Bedrock Knowledge Bases を統合する基本的な実装を紹介します。
概要
この実装は 2 つの部分から構成されています。
- チャットボットの Streamlit / ユーザーインターフェイスを処理する
user_interfaces/chat_bedrock_st.pyファイル - MCP クライアントとサーバーの実装を処理する
client_server.pyファイル
この実装で使用している実際の MCP サーバーのコードは、src/bedrock-kb-retrieval-mcp-server フォルダにあります。
アーキテクチャ

セットアップ
前提条件
- uv パッケージマネージャー
- Bedrock へのアクセス権と適切な IAM 権限を持つ AWS アカウント - Amazon Bedrock の使用開始
- Bedrock ナレッジベース
- ナレッジベースのセットアップのクイックリファレンスとしては、e2e RAG solution via CDK リポジトリを参照してください。これにより、IAM ロール、ベクトルストレージ(OpenSearch Serverless または Aurora PostgreSQL のいずれか)、サンプルデータを含む完全に構成されたナレッジベースなど、必要なものがすべて用意されます。この実装で実際に必要となるコンポーネントはナレッジベースのみです。
Note: Amazon Bedrock の再ランク付けは us-east-1 ではサポートされていません。再ランク付けでサポートされているリージョンとモデルの詳細については、Amazon Bedrock での再ランク付けがサポートされているリージョンとモデル を参照してください。
インストール
- リポジトリをクローンします。
git clone https://github.com/awslabs/mcp.git
- サンプルディレクトリに移動し、.env.example ファイルを .env にコピーして AWS 認証情報を追加します。
cd mcp/samples/mcp-integration-with-kb
cp .env.example .env
- 2 つの異なるターミナルを開き、それぞれで依存関係をインストールします。
uv sync
その後、仮想環境を有効化します。
source .venv/bin/activate
- 一方のターミナルで、FastAPI サーバーを実行します。
uvicorn clients.client_server:app --reload
- もう一方のターミナルで、Streamlit アプリを実行します。
streamlit run user_interfaces/chat_bedrock_st.py
- これでチャットボットが http://localhost:8501/ で実行されているはずです。
使い方
Bedrock ナレッジベースのコンソールから Bedrock ナレッジベース ID を取得し、まず左側のメニューで UI に追加します。
あとは自由に質問してください。
トラブルシューティング
ログは FastAPI サーバーを実行したターミナルで確認でき、サーバーが実行したさまざまなステップやアクションが記載されています。
boto3 または streamlit が見つからないというエラーが表示される場合は、仮想環境を有効化していないことが原因である可能性が高いです。
uv sync
source .venv/bin/activate