MCP Fusion/Protocol and runtime/MCP 2.0準拠

MCP 2.0準拠

VinkiusについてAIに質問

プロトコル改訂 2026-07-28 からフレームワークが実装する内容: ステートレス転送、構造化コンテンツ、MRTRエリシテーション、リストキャッシュ SEP-2549、リクエスト状態の封印 SEP-2322、ヘッダールーティング、非推奨レジストリ。

MCP Fusion は既定でプロトコル改訂 2026-07-28 を対象とし、非推奨レジストリを文書化して管理します。サーバーの下でプロトコルが変化することは、運用上のリスクになるためです。このページは準拠状況の一覧です。実装済みのもの、削除されたもの、フレームワークが許可しないものを確認できます。

構造化コンテンツ

ToolResponse はテキストコンテンツとともに MCP 2.0 の structuredContent フィールドを保持します。successStructured(data) は機械可読オブジェクトと、古いクライアント向けの JSON テキストブロックを同時に設定します。.withOutputSchema(schema) と組み合わせることで、ツール定義に出力契約を公開できます。Presenters が Wire format に記載されたテキスト形式を生成する点に注意してください。structuredContent は並行する解析済みのチャネルであり、Presenter の出力ではありません。

複数ラウンドトリップリクエスト

2025 年のサーバー開始リクエストモデルは、サーバーレス環境では維持できません。2026 年の答えは戻り値ベースです。ハンドラーが入力を必要とすることを返し、クライアントが入力を満たして再び入ります。MCP Fusion では、requireInput()readInput()ask.* フィールド記述子、ツールの .interactive() として公開されており、詳細は Streaming and cancellation に記載されています。ドライバーは両方の世代をサポートします。2026 年の接続ではフレームワークが入力要求レスポンスをそのまま出力し、SDK が再試行を制御します。2025 年の永続接続ではライブチャネル上でリクエストを自ら満たします。チャネルがない場合、呼び出しは ELICITATION_UNSUPPORTED に縮退し、ループには上限があります。

リストキャッシュ (SEP-2549)

リスト結果には、コネクタの前段にある任意のプロキシ向けにキャッシュメタデータを付与できます。一度設定してください。

typescript
attachToServer(server, {
  listCacheTtlMs: 300_000,   // default: 5 minutes
  listCacheScope: 'private', // or 'public' for shared data
});

メタデータはこの改訂のレイアウトに従い、tools/listprompts/listresources/listresources/templates/list結果ルート に配置されます。listCacheTtlMs をゼロにすると、追加のオーバーヘッドなしで削除されます。これはリストに対するプロトコルレベルのキャッシュであり、State sync にあるツールレベルの古さの通知ではありません。

リクエスト状態の封印 (SEP-2322)

サーバーがクライアントを介して継続状態を往復させる場合、その状態を偽造できてはいけません。起動時にキーを指定してください。

typescript
startServer(registry, {
  transport: 'http',
  requestStateKey: process.env.REQUEST_STATE_KEY,  // 32 bytes or more
});

sealRequestState(payload) は有効期限付きの HMAC-SHA256 封印トークンを作成します。サーバーはハンドラーに再入する前に、受信した封印済み状態をすべて検証します。キーがない場合、フレームワークは通常の JSON シリアライズに戻り、ドキュメント上で 信頼できないものとして示します。機微でない継続には安全ですが、ID には使えません。

ヘッダールーティングと x-mcp-header

ステートレス転送はセッションではなく Mcp-MethodMcp-Name ヘッダーでリクエストをルーティングします。そのため、ラウンドロビンロードバランサーの背後にある任意のインスタンスが任意の呼び出しを処理できます。パラメーターを HTTP ヘッダーへミラーすることもできます。.withHeaderParam('tenant', 'X-Tenant') はスキーマに x-mcp-header を付与し、クライアントは Mcp-Param-X-Tenant として送信します。これにより、インフラストラクチャはボディを解析せずにルーティングできます。この方法で公開するパラメーターは秘密情報であってはいけません。フレームワークは空のヘッダー名でエラーを発生させ、RFC 9110 のトークン制約を文書化します。

変更通知

4 つのリストおよびリソースイベントが接続されています。notifications/tools/list_changed (FSM 遷移、ハンドオフ、ホットリロード)、notifications/prompts/list_changednotifications/resources/updatednotifications/resources/list_changed です。MCP 2.0 では subscriptions/listen ストリームがフィルターを登録して確認するため、クライアントは一度購読すれば、要求したイベントクラスだけを受け取れます。

非推奨レジストリ

機能MCP Fusion での状態
Roots未実装 (クライアント側機能); フラグなし
SamplingYAML スキーマでのみ受け付け、検証警告付きで deprecated と表示; 一級 API なし
Logging (notifications/message)未実装; テレメトリシンクと OpenTelemetry に置き換え
Dynamic Client RegistrationSDK と OAuth パッケージに委譲; 文書化された経路は Client ID Metadata Documents
HTTP + SSE 転送選択不可: 転送タイプは stdiohttpstateless
includeContextどこにも公開されない
命令型 ask()v5 で削除; MRTR requireInput() に置き換え

非推奨ポリシーはスタイルについて正直です。サーバー側の意味を持たない機能は単に存在せず、推奨されない機能は検証時に警告し、削除された機能は静かに縮退させずに取り除かれます。非推奨セットの公開された削除期間は 2027-07-28 までです。

ディスカバリーアーティファクト

httpstateless では、サーバーは /.well-known/mcp/server-card.json にサーバーカードを返します。内容はスキーマ URL、バージョン、プロトコルバージョン、サーバー情報、転送方式 (streamable-http、エンドポイント /mcp、または stdio)、宣言済み機能、ツールエントリです。起動時に一度コンパイルされ、5 分間の公開キャッシュヘッダーを付けて配信されます。内部の詳細は Introspection を参照してください。

SDK が扱うエラーコード

この改訂では、ヘッダー不一致、必須クライアント機能の欠落、未対応プロトコルバージョンに対するプロトコルレベルのコードを定義しています。これらはフレームワークの下位にある SDK v2 サーバーレイヤーが出力します。フレームワーク独自のエラー契約は、Errors に記載された <tool_error> エンベロープです。

次のステップ