AWS Bedrock MCP Client and Server について
Amazon BedrockモデルとMCPツールをREST APIで連携させるSpring Bootアプリケーションです。ツールを使うモデルクエリを必要とする用途向けで、API Gatewayの背後にあるAWS Lambdaへデプロイできます。
主な機能
- 01REST APIによるAmazon Bedrockクエリ
- 02計算と天気のMCPツール
- 03ウェブページ取得とMarkdown変換
- 04複数ツールを使う複雑なクエリへの対応
- 05API Gateway経由のAWS Lambdaデプロイ
活用シーン
- 01ツールを使ったBedrockでの数値計算
- 02指定地域の天気の取得
- 03モデルクエリによるウェブページ要約
MCP 対応
このアプリケーションはMCPクライアントとサーバーを備えます。クライアントはAmazon Bedrockとの対話でMCPツールを利用し、サーバーは計算、天気、ウェブページ取得のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AWS Bedrock MCP クライアントとサーバー
ツールを使用できる Amazon Bedrock AI モデルとのやり取りを可能にする、Model Context Protocol(MCP)クライアントとして機能する Spring Boot アプリケーションです。
アプリケーションの概要
このアプリケーションは、次の機能を提供する REST API を実装しています。
- Amazon Bedrock モデルとの通信
- 計算、天気情報、Web ページの取得に MCP ツールを使用
- 複数のツールが必要になる可能性のある複雑な AI クエリへの対応
- このアプリケーションは API Gateway の背後で AWS Lambda 関数として実行されるため、サーバーレスでスケーラブルです。
前提条件
- Java 21 以降
- Maven 3.8+
- 適切な認証情報を設定した AWS CLI
- AWS CDK がインストールされていること(npm install -g aws-cdk)
- https://www.weatherapi.com/my/ で取得した Weather API キー
環境設定
リポジトリのクローン
git clone https://github.com/sverze/aws-bedrock-mcp-client-server
cd aws-bedrock-mcp-client-server
AWS の設定
次のサービスを利用する権限を持つ認証情報が必要です。
- Lambda
- API Gateway
- Bedrock
- Bedrock モデル Anthropic Sonnet 4.0
ローカル認証情報を設定するには、次のコマンドを実行します。
aws configure
アプリケーションのビルド
このプロジェクトは、マルチモジュールの Maven 構成を採用しています。すべてのモジュールをビルドするには、親ディレクトリで次のコマンドを実行します。
mvn clean package install -DWEATHER_API_KEY=<your_api_key_here>
これにより、すべてのモジュールが正しい順序でビルドされます。
- aws-bedrock-mcp-server
- aws-bedrock-mcp-client
- aws-bedrock-mcp-client-server-cdk
AWS へのデプロイ
AWS のデプロイは AWS CDK を使用して管理します。アプリケーションをデプロイするには、次のコマンドを実行します。
cd aws-bedrock-mcp-client-server-cdk
cdk bootstrap
cdk deploy --context WEATHER_API_KEY=<your_api_key_here>
デプロイが完了すると、CDK によって API Gateway の URL がターミナルに出力されます。 API を操作し、以下のテストを実行するには、この URL が必要です。
API のテスト
デプロイ後、curl または Postman などのツールを使用して API エンドポイントをテストできます。
-
Hello World エンドポイントをテストする
curl https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/hello期待される応答:MCP Client からの Hello World!
-
利用可能なツールを一覧表示する
curl https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/tools -
計算を実行する
curl -X POST "https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/calculate?operation=add&a=5&b=3" -
天気情報を取得する
curl -X POST "https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/weather?location=New%20York&format=celsius" -
Web ページを Markdown に変換する
curl -X POST "https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/webpage?url=https://example.com" -
複雑なクエリを実行する — 天気
curl -X POST "https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/query?query=What%20is%20the%20weather%20in%20London%20and%20calculate%2045%20divided%20by%209" -
複雑なクエリを実行する — Web ページの要約
curl -X POST "https://<your-api-id>.execute-api.<region>.amazonaws.com/prod/query?query=Summarise%20the%20following%20webpage%20https://example.com"
モニタリングとログ
CloudWatch Logs でアプリケーションログを確認します。
- AWS CloudWatch コンソールに移動します
- /aws/lambda/McpClientServerFunction ロググループを確認します
クリーンアップ
デプロイしたすべてのリソースを削除するには、次を実行します。
cd aws-bedrock-mcp-client-server-cdk
cdk destroy
アーキテクチャ
このアプリケーションは、サーバーレスアーキテクチャを実装しています。
- API Gateway が HTTP エンドポイントとして機能します
- AWS Lambda が Spring Boot アプリケーションを実行します
- Amazon Bedrock が AI モデルの機能を提供します
- MCP サーバーがツールの実装を提供します
- AWS CDK スタックが、Amazon Bedrock へのアクセスに必要な適切な権限を持つ IAM ロールを含め、必要なすべての AWS リソースを作成して設定します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。