
本リリースは、AIエージェントとアプリケーション間のインターフェース層に対する構造的な変更を伴う。ツール探索機構の再設計、プロトコルレベルでのステートレス化、OAuth仕様の厳格化、そして検証ミドルウェアの追加が中核である。
ツール探索とキャッシュ
ToolSearchが導入された(#324)。search_toolsがクエリと件数上限を受け取り、該当ツールの名前・説明・入力スキーマを返却する。execute_toolsが指定ツールをバッチ実行する。サーバーは2つのツールを内部登録するだけで、既存ツール定義への変更は伴わない。
設計意図は明確である。すべてのツール定義をコンテキストウィンドウに乗せる従来方式は、エージェントが扱うツール数が増えるに従いトークン消費が線形に拡大する。常時ロード層と検索対象層を分離することで、低頻度ツールは必要なときだけコンテキストへ展開する。ツール数に対するスケーラビリティが改善する。
Cacheable属性をツール・プロンプト・リソースに付与し、既定のキャッシュ可否を宣言する。cacheHintsをメソッド単位でオーバーライドすれば、TTL・共有範囲・キャッシュキー粒度を個別指定できる。クライアント側でwithCacheを有効化すると、レスポンス中のttlMsが指定された値のみキャッシュ対象となり、欠損または0のレスポンスはキャッシュ対象外である。ツール呼び出しは性質上キャッシュ対象外とされている(#301, #326)。サーバーがTTLと共有範囲を宣言し、クライアントがそれに従う構造であり、リソース系エンドポイントで特に有効な粒度調整が可能となった。
ステートレス化と検証ミドルウェア
新プロトコルでは各リクエストが独立して処理されるステートレスモデルへ移行した。MCP-Session-Idヘッダ、Request::sessionId、Request::setSessionId、SessionInitializedイベントが廃止された。HTTPリクエストとstdioメッセージにはparams._meta内にプロトコルバージョンとクライアント対応機能を含める。関連リクエストの追跡が必要な場合は、引数または_meta内に独自識別子を渡す方式へ移行する。サーバーがステートレスとなることで、セッションストアへの書き込み・読み出し処理が消失し、水平スケール時のセッション同期コストが排除される点が実装上の主要な利得である(#285)。
ValidateMcpHeadersミドルウェアがMcp::webで登録された全ルートに適用される。新プロトコル準拠のPOSTリクエストにはMCP-Protocol-VersionとMcp-Methodヘッダがボディと整合する必要がある。tools/call、prompts/get、resources/readはMcp-Nameヘッダの整合性も検証対象である。ミスマッチ時はHTTP 400とJSON-RPCエラーコード-32020が返される。postJsonを用いるテストではこれらのヘッダとparams._metaフィールドの追加が必須となる。旧initialize経路で_metaにプロトコルメタデータを含まないクライアントは検証対象外として扱われる。
OAuth仕様とアップグレード影響
OAuth認可サーバーにはPKCEサポートが必須となった。metadataにcode_challenge_methods_supportedが含まれない場合、OAuthClient::redirectはOAuthExceptionを送出する(#323)。S256非対応のサーバーを拒否対象とする従来挙動に加え、当該フィールド自体を欠落させるサーバーも拒否対象へ含めた点が拡張である。
Client ID Metadata Documentsにも対応した。client_idをHTTPS URLとして表現し、URLが指すJSON文書でクライアント情報を記述する。Mcp::oAuthRoutesForがGET /mcp/oauth/{client}/client-metadata.jsonでこの文書を提供する。認可サーバーが対応する場合はDynamic Client Registrationより優先され、非対応時はフォールバックする。MCP 2026-07-28ではDynamic Client Registrationは非推奨とされている。
metadata文書利用時は$token->clientSecretがnullとなる。永続化層のclient_secretカラムはNULL許容が必要である。redirect実行ごとに認可サーバーへ新規クライアントが登録されていたバグも同時に修正されている(#342)。
0.9からのアップグレードで確認すべき項目は次の通りである。
- クライアント接続とリクエスト送信ロジックの見直し
- Server::CAPABILITY_UI定数の参照箇所削除
- カスタムトランスポートを実装している場合の契約更新
- エラーコード体系の変更反映
- postJsonを利用するテストのヘッダ・_meta追加
ステートレス化に伴うセッション管理コードの除去と、OAuthフローにおけるPKCE・metadata文書の検証ロジック追加が実装上の主要変更点である。コンテキスト消費の最適化は実運用でのトークン単価に直結する改善であり、MCPサーバーを本番運用する個人開発者にとっては性能・コスト両面での検証対象となる。