View a markdown version of this page

MCP プロトコル契約 - Amazon Bedrock AgentCore

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 サーバーが同じツール呼び出し内の複数のリクエストにわたってセッションコンテキストを維持する必要がある場合は、ステートフルモードが必要です。詳細と例については、「ステートフル MCP サーバー機能」を参照してください。

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 エンドポイントには、いくつかの重要な目的があります。

  • ツールの呼び出しと管理

  • エージェント機能検出

  • リソースのアクセスと操作

  • マルチステップエージェントワークフロー

OAuth 認証レスポンス

OAuth 設定のエージェントは、RFC 6749 (OAuth 2.0) 認証標準に従います。認証がない場合、サービスは WWW-Authenticate ヘッダー (RFC 7235 ごと) を含む 401 Unauthorized レスポンスを返します。これにより、クライアントは GetRuntimeProtectedResourceMetadata API を通じて認可サーバーエンドポイントを検出できます。

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ヘッダーは含まれません。