AgentCore ゲートウェイで MCP セッションを使用する
MCP セッションは、クライアントと AgentCore ゲートウェイ間のステートフルインタラクションを有効にします。セッションを有効にすると、ゲートウェイは初期化中に一意のセッション識別子を生成し、複数のリクエストにわたって状態を維持し、誘発やサンプリングなどの高度な MCP 機能を有効にします。
セッションを使用する利点
- ステートフル MCP サーバーターゲットインタラクション
-
ゲートウェイは MCP サーバーターゲットのセッション ID を保存し、その後のツール呼び出しで再利用します。これにより、すべてのリクエストの再初期化が回避され、ターゲットは呼び出し間でコンテキストを維持できます。
- AgentCore ランタイムターゲットによる応答の高速化
-
ターゲットのセッションが再利用されると、AgentCore ランタイムはリクエストごとに新しい MCP サーバー接続をコールドスタートする必要がないため、応答時間が短縮されます。
- 高度な MCP 機能を有効にする
-
セッションは、複数のリクエストで状態を追跡する必要がある誘発とサンプリングの前提条件です。
- ユーザースコープのセキュリティ (認証されたゲートウェイ)
-
インバウンド認証を使用するゲートウェイの場合、セッションは検証済みユーザー ID にバインドされ、セッションのハイジャックが防止されます。
ゲートウェイでセッションを有効にする
セッションを有効にするには、ゲートウェイを作成または更新するときに sessionConfiguration protocolConfiguration.mcpフィールドに を指定します。
{ "protocolConfiguration": { "mcp": { "sessionConfiguration": { "sessionTimeoutInSeconds": 3600 } } } }
sessionTimeoutInSeconds パラメータはオプションです。省略した場合、デフォルトのタイムアウトは 3600 秒 (1 時間) です。有効な範囲は 900 (15 分) から 28800 (8 時間) です。タイムアウトは、最初のinitializeリクエストから計算された絶対値です。
誘発やサンプリングなどのセッションに依存する機能も有効にするには、レスポンスストリーミングをさらに有効にする必要があります。
{ "protocolConfiguration": { "mcp": { "sessionConfiguration": { "sessionTimeoutInSeconds": 3600 }, "streamingConfiguration": { "enableResponseStreaming": true } } } }
注記
ゲートウェイでセッションが有効になっている場合、ゲートウェイターゲットmetadataConfigurationのヘッダー伝達設定の Mcp-Session-Idに を含めることはできません。ゲートウェイはセッション IDs。そうしようとすると、HTTP 400 Bad Request エラーが返されます。
セッションライフサイクル
セッションライフサイクルは、MCP プロトコルの初期化フローに従います。
-
クライアントはゲートウェイに
initializeリクエストを送信します。 -
ゲートウェイはセッションを作成し、セッションメタデータを保存し、レスポンスヘッダー
Mcp-Session-Idに一意の を返します。 -
クライアントは、後続のすべてのリクエストに
Mcp-Session-Idヘッダーを含めます。 -
ゲートウェイは、各リクエストでセッションの存在、有効期限、およびユーザー ID (認証されたゲートウェイの場合) を検証します。
-
セッションがタイムアウトするか、クライアントが切断されると、セッションは期限切れになります。
セッション内の MCP サーバーターゲットへの最初のツール呼び出しで、ゲートウェイはターゲットとの接続を初期化し、ターゲットのセッション ID を保存します。同じターゲットへの後続のツール呼び出しでは、この保存されたセッション ID が再利用されるため、反復的な初期化を回避できます。
ユーザー ID とセッションのスコープ
セッションは、セッションのハイジャックを防ぐために、認証されたユーザー ID に限定されます。ゲートウェイは、ゲートウェイで設定されたインバウンド認証方法に応じてユーザー ID を異なる方法で取得します。
| 認証方法 | ユーザー識別子 | 動作 |
|---|---|---|
|
OAuth / OIDC |
|
フルスコープ。セッションを作成したユーザーのみがセッションを使用できます。 |
|
AWS IAM (SigV4) |
[プリンシパル ARN] |
フルスコープ。セッションを作成した IAM プリンシパルのみが使用できます。プリンシパル ARN はグローバルに一意であり AWS、IAM エンティティの存続期間中は変更できません。例: |
|
認証なし |
なし |
ユーザースコープはありません。セッションは使用できますが、どの ID にもバインドされません。セッション ID を持つユーザーは誰でもセッションとやり取りできます。 |
重要
インバウンド認証のないゲートウェイの場合、セッションには MCP 仕様のセキュリティ上の考慮事項
認証されたゲートウェイの場合、別のユーザーが既存のセッション ID を使用しようとすると、ゲートウェイは HTTP 404 Not Found を返します。セッションは他のユーザーには表示されません。
セッションのタイムアウトと有効期限
セッションタイムアウトは、最初のinitializeリクエストから計算されます。タイムアウト期間が過ぎると、セッションは期限切れになり、使用できません。
-
デフォルトのタイムアウト: 3600 秒 (1 時間)
-
設定可能な範囲: 900 秒 (15 分) ~ 28800 秒 (8 時間)
ゲートウェイセッションがタイムアウトする前に MCP サーバーターゲットのセッションが期限切れになると、ゲートウェイはターゲットで透過的に再初期化し、保存されたターゲットセッション ID を更新します。ゲートウェイセッションはアクティブのままです。
エラー処理
| シナリオ | HTTP ステータス | 説明 |
|---|---|---|
|
セッション対応ゲートウェイに |
400 Bad Request |
以降のすべてのリクエストには、セッションヘッダーが含まれている |
|
無効または期限切れのセッション ID |
404 Not Found |
セッションが存在しないか、タイムアウトしました。 |
|
異なるユーザーが別のユーザーのセッション (認証されたゲートウェイ) を使用しようとする |
404 Not Found |
セッションは他のユーザーには表示されません。 |
|
|
400 Bad Request |
ターゲットを作成または更新するときにコントロールプレーンに返されます。 |