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

Amazon Bedrock Knowledge Bases との MCP 統合

このリポジトリでは、Model Context Protocol と Amazon Bedrock Knowledge Bases を統合する基本的な実装を紹介します。

概要

この実装は 2 つの部分から構成されています。

  1. チャットボットの Streamlit / ユーザーインターフェイスを処理する user_interfaces/chat_bedrock_st.py ファイル
  2. MCP クライアントとサーバーの実装を処理する client_server.py ファイル

この実装で使用している実際の MCP サーバーのコードは、src/bedrock-kb-retrieval-mcp-server フォルダにあります。

アーキテクチャ

Architecture

セットアップ

前提条件

  • 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 での再ランク付けがサポートされているリージョンとモデル を参照してください。

インストール

  1. リポジトリをクローンします。
git clone https://github.com/awslabs/mcp.git
  1. サンプルディレクトリに移動し、.env.example ファイルを .env にコピーして AWS 認証情報を追加します。
cd mcp/samples/mcp-integration-with-kb
cp .env.example .env
  1. 2 つの異なるターミナルを開き、それぞれで依存関係をインストールします。
uv sync

その後、仮想環境を有効化します。

source .venv/bin/activate
  1. 一方のターミナルで、FastAPI サーバーを実行します。
uvicorn clients.client_server:app --reload
  1. もう一方のターミナルで、Streamlit アプリを実行します。
streamlit run user_interfaces/chat_bedrock_st.py
  1. これでチャットボットが http://localhost:8501/ で実行されているはずです。

使い方

Bedrock ナレッジベースのコンソールから Bedrock ナレッジベース ID を取得し、まず左側のメニューで UI に追加します。

あとは自由に質問してください。

トラブルシューティング

ログは FastAPI サーバーを実行したターミナルで確認でき、サーバーが実行したさまざまなステップやアクションが記載されています。

boto3 または streamlit が見つからないというエラーが表示される場合は、仮想環境を有効化していないことが原因である可能性が高いです。

uv sync
source .venv/bin/activate