【MCP互換性ガイド】2026-07-28 リリース候補の変更点と移行手順:ステートレス化・認証強化・拡張機能フレームワーク
MCP(Model Context Protocol)は、2026年7月28日に公開予定の新仕様に向けて、プロトコル史上最大の改訂を迎えている。2026年5月21日に公開されたリリース候補(RC)は、ステートレスコアへの移行、拡張機能フレームワークの導入、認証の大幅強化、そして複数の非推奨機能を含む破壊的変更の集大成だ。 現在の仕様(2025-11-25)を使用しているMCPサーバー・クライアントは、この60日間の移行ウィンドウの中で対応が求められる。本記事では、全ての変更点を5つの柱に整理し、具体的な移行手順をコード例付きで解説する。 MCP 2026-07-28 の全体像 2026-07-28 RCの変更点は、以下の5つの柱に集約される。 ステートレスコア(Stateless Core) — プロトコル基盤の抜本的再設計 運用性レイヤー(Operability Layer) — HTTPヘッダーによるルーティング・トレーシング 拡張機能フレームワーク(Extensions Framework) — MCP Apps・Tasks の正式化 認証強化(Authorization Hardening) — OAuth 2.1 への準拠 非推奨ポリシー(Deprecation Policy) — Roots/Sampling/Logging の代替戦略 MCPは2026年3月時点で月間9,700万ダウンロード、登録サーバー数5,800を超え、Anthropic・OpenAI・Google・Microsoft・AWSが主要アダプターとして参加するまでに成長している。この規模でのプロトコル改訂は、エコシステム全体に影響を与える。 1. ステートレスコア — 最も重要な破壊的変更 なぜステートレスなのか MCPの当初の設計は、初期化ハンドシェイク(initialize/initialized)とセッションID(Mcp-Session-Id)に依存していた。これは「クライアントとサーバーが永続的な接続を張る」前提に基づいており、負荷分散、水平スケーリング、サーバーレス環境との相性が悪かった。 日本語コミュニティでも、この疑問は共有されていた。 MCPって単発のツール呼び出しのインターフェースを提供するだけなのに、なんでコネクション貼りっぱなしなんだ before/after の移行パターン 2025-11-25(現在の実装): import httpx # 初期化ハンドシェイク session_id = None async with httpx.AsyncClient() as client: # Step 1: initialize resp = await client.post("https://mcp-server.example.com/mcp", json={ "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2025-11-25", "capabilities": {} } }) data = resp.json() session_id = data["result"]["sessionId"] # Step 2: initialized notification await client.post("https://mcp-server.example.com/mcp", json={ "jsonrpc": "2.0", "method": "notifications/initialized" }) # Step 3: 以降は session_id をヘッダーに含めてリクエスト resp = await client.post( "https://mcp-server.example.com/mcp", headers={"Mcp-Session-Id": session_id}, json={ "jsonrpc": "2.0", "id": 2, "method": "tools/list" } ) 2026-07-28(移行先): ...