翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
MCP プロトコル契約
エージェントがツールとエージェントサーバーを呼び出すことができるように、モデルコンテキストプロトコル (MCP) を実装するための要件を理解します。
コード例については、AgentCore ランタイムで MCP サーバーをデプロイする」を参照してください。
プロトコル実装要件
MCP サーバーは、以下の特定のプロトコル要件を実装する必要があります。
-
トランスポート: Streamable-http トランスポートが必要です。デフォルトでは、ステートレスモード ()
stateless_http=Trueを使用して、 AWSのセッション管理とロードバランシングとの互換性を確保します。 -
セッション管理: プラットフォームはセッション分離の
Mcp-Session-Idヘッダーを自動的に追加します。ステートレスモードでは、プラットフォームで生成されたMcp-Session-Idヘッダーを拒否しないように、サーバーはステートレスオペレーションをサポートする必要があります。
ヒント
Amazon Bedrock AgentCore は、誘発 (マルチターンユーザーインタラクション) stateless_http=False やサンプリング (LLM 生成コンテンツ) などの機能を有効にするステートフル MCP サーバー () もサポートしています。MCP プロトコルバージョン 2025-11-25以前では、サーバーがオープンセッションでこれらのリクエストを配信するため、誘発とサンプリングにはステートフルモードが必要です。バージョン 2026-07-28以降では、誘発とサンプリングはマルチラウンドトリップリクエスト (MRTR) パターンを使用します。これはステートフルモードを必要としません。MRTR の詳細については、Model Context Protocol ドキュメントの「マルチラウンドトリップリクエスト
ステートフルモードは、複数のリクエストにわたって MCP セッション内で状態を保持します。ステートレス MCP サーバーは、データベースなど、アプリケーションが管理するバッキングストアに状態を保持します。明示的な状態ハンドルを使用して、その状態を参照します。サーバーはツールの結果に状態識別子を返し、クライアントは後でキーを に呼び出すときにそれをストアに返します。明示的な状態ハンドルの詳細については、Model Context Protocol ドキュメントの「明示的な状態ハンドル
MCP セッション管理と microVM の維持
Model Context Protocol (MCP) は、 Mcp-Session-Idヘッダーを使用してセッション状態とルートリクエストを管理します。MCP の仕様については、「MCP Streamable HTTP Transport
MicroVM の永続性: Amazon Bedrock AgentCore は Mcp-Session-Idヘッダーを使用して、リクエストを同じ microVM インスタンスにルーティングします。クライアントは、レスポンスでMcp-Session-Id返された をキャプチャし、以降のすべてのリクエストに含めて、セッションのアフィニティを確保する必要があります。一貫したセッション ID がないと、各リクエストが新しいmicroVM にルーティングされ、コールドスタートによるレイテンシーが増加する可能性があります。
ステートレス MCP ( stateless_http=True ):
-
プラットフォームは を生成
Mcp-Session-Idし、それを MCP サーバーへのリクエストに含めます。 -
MCP サーバーは、プラットフォームが提供するセッション ID を受け入れる必要があります (拒否しないでください)。
-
プラットフォームは、レスポンスで同じ をクライアント
Mcp-Session-Idに返します。 -
クライアントは、microVM アフィニティの後続のすべてのリクエストにこのセッション ID を含める必要があります。
ステートフル MCP ( stateless_http=False ):
-
クライアントは、
Mcp-Session-Idヘッダーなしで初期化リクエストを送信します。 -
プラットフォームはレスポンス
Mcp-Session-Idで を返します。 -
クライアントは、セッション状態とmicroVM アフィニティの両方の後続のすべてのリクエスト
Mcp-Session-Idにこれを含める必要があります。
ステートフル MCP セッション管理の詳細については、「MCP セッション管理仕様
注記
どちらのモードでも、Amazon Bedrock AgentCore は常にクライアントに Mcp-Session-Idヘッダーを返します。最適なパフォーマンスを得るには、常にこのヘッダーをキャプチャして再利用してください。
コンテナの要件
MCP サーバーは、以下の仕様を満たすコンテナ化されたアプリケーションとしてデプロイする必要があります。
-
ホスト:
0.0.0.0 -
ポート :
8000- MCP サーバー通信の標準ポート (HTTP プロトコルとは異なります) -
プラットフォーム : ARM64 コンテナ - AWS Amazon Bedrock AgentCore ランタイム環境との互換性のために必要です
パスの要件
/mcp - POST
目的
MCP RPC メッセージを受信し、エージェントのツール機能を通じて処理します。標準の MCP RPC メッセージを使用して InvokeAgentRuntime API ペイロードを完全にパススルーします。
レスポンスの形式
JSON-RPC ベースのリクエスト/レスポンス形式。 application/jsonと の両方をレスポンスコンテンツタイプtext/event-streamとしてサポート
ユースケース
/mcp エンドポイントには、いくつかの重要な目的があります。
-
ツールの呼び出しと管理
-
エージェント機能検出
-
リソースのアクセスと操作
-
マルチステップエージェントワークフロー
エラー処理
MCP サーバーは、標準の JSON-RPC 2.0 エラーレスポンスとしてエラーを返します。ほとんどのエラーは、MCP 仕様の要求に従って、HTTP 200 ステータスコードを持つ JSON-RPC error オブジェクトで実行されます。認証、認可、プロトコルレベルのリクエストエラーのみが、200 以外の HTTP ステータスコードを使用します。次の表は、各ランタイム例外を JSON-RPC エラーコード、HTTP ステータスコード、およびメッセージにマッピングしています。一部の例外は JSON-RPC エラーコードを共有しますが、異なるメッセージを返すため、別々の行としてリストされます。
| JSON-RPC エラーコード | ランタイム例外 | HTTP エラーコード | エラーメッセージ |
|---|---|---|---|
|
-32001 |
UnauthorizedException |
401 |
認証エラー - 無効な認証情報 |
|
-32002 |
AccessDeniedException |
403 |
認可エラー - アクセス許可が不十分 |
|
-32003 |
ThrottlingException |
200 |
レート制限を超えました - リクエストが多すぎます |
|
-32003 |
ServiceQuotaExceededException |
200 |
レート制限を超えました - リクエストが多すぎます |
|
-32004 |
ResourceNotFoundException |
200 |
リソースが見つかりません - リクエストされたリソースは存在しません |
|
-32005 |
ConflictException |
200 |
リソースの競合 - リソースが既に存在します |
|
-32005 |
RetryableConflictException |
200 |
セッションオペレーションが進行中です。再試行してください |
|
-32006 |
ValidationException |
200 |
検証エラー - 無効なリクエストデータ |
|
-32010 |
RuntimeClientError |
200 |
ツール実行エラー - 詳細については、CloudWatch ログを確認してください |
|
-32011 |
McpRequestUnacceptableException |
406 |
Accept Header エラー - MCP プロトコルには Accept ヘッダーが必要です: application/json、text/event-stream |
|
-32603 |
その他の例外 |
200 |
内部エラー - サーバーエラー |
ConflictException と RetryableConflictExceptionはどちらも JSON-RPC エラーコード -32005 (HTTP 200) を使用しますが、メッセージによって区別されます。サービスがそのセッションをプロビジョニングまたは破棄している間に 2 番目のオペレーションがセッションをターゲットにすると、サービスは RetryableConflictException (Session operation in progress, please retry) を返します。MCP は JSON-RPC 本文のエラーで HTTP 200 を返すため、発信者はレスポンス本文を検査し、短いエクスポネンシャルバックオフで再試行する必要があります。MCP クライアントはそれを自動再試行しません。
エラー応答のサンプル:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }
OAuth 認証レスポンス
OAuth 設定のエージェントは、RFC 6749 (OAuth 2.0)
401 Unauthorized
認可ヘッダーが欠落しているか空の場合に返されます。
レスポンスには WWW-Authenticate ヘッダーが含まれます。
WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
注記
SigV4-configuredのエージェントはACCESS_DENIEDエラーで HTTP 403 を返し、WWW-Authenticateヘッダーは含まれません。