Model Context Protocol (MCP) Streamable HTTP シナリオでは、コンテキストの一貫性を確保するために、同じ MCP セッションのリクエストを同じ関数インスタンスにルーティングする必要があります。MCP Streamable HTTP アフィニティ機能は、MCP プロトコルバージョン 2025-03-26 および 2025-06-18 に基づいています。システムは HTTP 応答ヘッダーの Mcp-Session-Id フィールドを解析して、セッションバインディングを確立します。これにより、同じ Mcp-Session-Id を持つリクエストが、セッションを初期化したインスタンスにルーティングされます。この機能は、MCP Streamable HTTP トランスポートを使用するシナリオに適しています。
主要な設定
関数設定ページで、[詳細設定] > [分離とアフィニティ] に移動し、[セッション保持] スイッチを有効にして、[MCP Streamable HTTP アフィニティ] を選択し、[インスタンスあたりの同時セッション数] を設定します。HTTP トリガーが GET、POST、DELETE メソッドをサポートしていることを確認し、[デプロイ] をクリックして機能を有効にします。
クライアントは POST リクエストを送信してセッションを初期化し、応答ヘッダーから Mcp-Session-Id を取得します。この ID を持つ後続のリクエストは、同じインスタンスにルーティングされます。
適用範囲
一般的な制限:詳細については、「セッション保持の一般的な制限と原則」をご参照ください。
プロトコルバージョンの要件:この機能は、MCP プロトコルバージョン
2025-03-26および2025-06-18をサポートします。クライアントと関数は、対応するバージョンのトランスポートレイヤー仕様に準拠する必要があります。互換性:MCP Streamable HTTP アフィニティが有効になっている関数を呼び出すために、Server-Sent Events (SSE) と共に MCP HTTP を使用しないでください。セッション管理メカニズムに互換性がないため、呼び出しが失敗します。
アクセス方法の制限:この機能は、HTTP トリガーまたはカスタムドメイン名によるアクセスのみをサポートします。
HTTP トリガーの設定要件:HTTP トリガーは
GET、POST、DELETEメソッドをサポートする必要があります。DELETE メソッドが必要な理由
クライアントはDELETEリクエストを送信することで、セッションをアクティブに終了できます。その後、Function Compute はセッションのリソース (インスタンスの同時実行クォータを含む) を取り消します。DELETE メソッドが有効になっていない場合、システムはリクエストを拒否し、セッションを正常に解放できません。リクエストの制限:
1 つのインスタンスで複数のセッションを同時に処理できます。デフォルト値は 20、最大値は 200 です。単一のインスタンスにバインドされたセッション数がこの制限に達すると、システムは自動的に新しいインスタンスを作成します。
複数のセッションは、インスタンスの同時実行クォータ 200 を共有します。このクォータは、SSE 持続的接続と POST リクエストの両方で共有されます。
SessionAPI 管理はサポートされていません。
MCP Streamable HTTP アフィニティの設定
フローの概要
MCP Streamable HTTP アフィニティの設定には、セッション保持の有効化、MCP Streamable HTTP タイプの選択、HTTP トリガーの設定、デプロイ前のパラメーター設定の 4 つのステップが含まれます。関数コードが MCP プロトコル仕様を実装していることを確認してください。
セッション保持の有効化
Function Compute コンソールにログインします。
関数リストに移動し、対象の関数を選択するか、関数を作成します。
関数の作成時に、[詳細設定] セクションで [分離とアフィニティ] 設定項目を設定できます。
「関数詳細」ページで、[設定] タブをクリックします。
[高度な設定] セクションで、[分離とアフィニティ] 設定項目を探します。
[分離とアフィニティ] をクリックして構成パネルを展開します。
[セッションアフィニティ] スイッチをオンにします。
MCP Streamable HTTP アフィニティタイプの選択
セッション保持の構成エリアで、[MCP Streamable HTTP Affinity] ラジオボタンを選択します。
システムは自動的に MCP Streamable HTTP アフィニティの設定オプションを表示します。
HTTP トリガーの設定
目的:HTTP トリガーが MCP Streamable HTTP プロトコルで要求されるリクエストメソッドをサポートしていることを確認します。
手順:
関数詳細ページで、[トリガー] タブをクリックします。
HTTP トリガーを確認または作成します。
トリガーが次のリクエストメソッドをサポートしていることを確認します。
GET:SSE 持続的接続用 (オプション)。
POST:MCP リクエストおよびセッション初期化用 (必須)。
DELETE:セッション終了用 (必須)。
セッションパラメーターの設定
目的:セッション数、ライフサイクル、アイドルタイムアウトを設定して、セッションバインディングとリソース使用量を制御します。
手順:
[インスタンスあたりの同時セッション数]:単一のインスタンスが同時に処理できるセッションの最大数です。
デフォルト値:20
有効値の範囲:1~200
推奨:テストシナリオでは 10 などの小さい値を設定します。本番環境では、必要に応じて値を調整してください。
[セッションのライフサイクル]:セッションの作成から破棄までの最大期間です。
デフォルト値:21,600 秒 (6 時間)
説明:この時間が経過すると、システムは自動的にセッションを破棄し、アフィニティは保証されなくなります。
[セッションのアイドルタイムアウト]:アイドル状態のセッションが自動的に破棄されるまでの期間を指定します。
デフォルト値:1,800 秒 (30 分)
説明:セッションがこの期間を超えてリクエストを受信しない場合、セッションはアイドル状態と見なされ、自動的に破棄されます。
[デプロイ] ボタンをクリックして、構成を保存します。
重要:
セッション保持を有効にすると、システムは自動的に [インスタンスあたりの同時実行数] を 200 に設定します。これはデフォルト値であり、手動で変更することはできません。
HTTP トリガーが GET、POST、DELETE メソッドをサポートしていることを確認してください。DELETE メソッドはセッションを終了するために使用されます。
MCP Streamable HTTP アフィニティ設定の検証
アフィニティ設定を検証するには、標準の MCP クライアントを使用して関数にリクエストを送信します。Function Compute が提供するデフォルトの HTTP トリガードメイン名またはカスタムドメイン名を使用できます。詳細については、公式の MCP ドキュメント「Build an MCP client」をご参照ください。
よくある質問
MCP Streamable HTTP アフィニティが機能しないのはなぜですか?
考えられる原因:
HTTP トリガーが GET、POST、DELETE メソッドをサポートしていません。
リクエストが標準の MCP プロトコルを使用して送信されていません。
トラブルシューティングの手順:
HTTP トリガーが GET、POST、DELETE メソッドをサポートしているか確認します。
リクエストが標準の MCP Streamable プロトコルを使用して送信されていることを確認します。
セッションを終了するにはどうすればよいですか?
方法:
クライアントは DELETE リクエストを送信してセッションを終了します。
リクエストヘッダーには
Mcp-Session-Idフィールドを含める必要があります。その後、システムはセッションをパージし、関連するリソースを解放します。