MCPのステートレス化(2026-07-28仕様):MCPサーバー移行チェックリスト

MCP 2026-07-28仕様にてハンドシェイクとセッションIDが廃止され、MCPサーバーは通常のロードバランサー配下でステートレスに動作可能になります。サーバー開発者向けの移行チェックリストをアーキテクト視点から解説します。

MCPのステートレス化(2026-07-28仕様):MCPサーバー移行チェックリスト
  • 課題:MCPの歴史上最大の仕様アップデート(2026-07-28)により、プロトコルレイヤーでのセッション管理が廃止されます。セッション状態を保持していた既存のMCPサーバーは移行対応が必要です。
  • 解決策:廃止されるもの(ハンドシェイク、Mcp-Session-Id)を正確に理解し、ステートレス化に向けた移行チェックリスト(明示的ハンドルへの切り替え、新規ルーティングヘッダーの付与、Tasksライフサイクル移行、認証の強化)に沿って対応を進めます。
  • 効果:サーバー開発者向けの簡潔な移行チェックリストが得られます。また、リリースロードマップを把握することで、慌てずに対応を計画できます(RC版は確定済み、非推奨機能の廃止猶予は最低12ヶ月保証されます)。

MCPの誕生以来、最大規模のアップデートとなる2026-07-28仕様がリリースされます。本アップデートにより、initialize/initialized による接続ハンドシェイクと Mcp-Session-Id ヘッダーが撤廃され、プロトコル全体が完全に**ステートレス(stateless)**になります。

インフラ運用における実質的なメリットは、リモートMCPサーバーをスティッキーセッションや共有セッションストアを介さずに、通常のラウンドロビン方式のロードバランサー配下で稼働させられるようになる点です。単にMCPをクライアントとして利用するだけであれば、大部分はSDKが自動で対応します。しかし、セッションごとに状態(State)を保持するようなMCPサーバーを自ら開発・提供している場合、この移行対応を計画する必要があります。リリース候補版(RC版)はすでにロック(2026年5月21日)されており、正式仕様は2026年7月28日に公開されます。今こそ移行の準備を整える最適なタイミングです。

TL;DR (エグゼクティブ・サマリー)

  • 課題: プロトコル層におけるセッション機能が撤廃されます。Mcp-Session-Id を用いてクライアントを特定のサーバーインスタンスに固定(Pin)していた構成は、状態保持のアプローチを修正する必要があります。
  • 解決策: 廃止される機能(ハンドシェイク、セッションID、tasks/list)と、新たに追加される機能(_metaserver/discoverMcp-Method/Mcp-Name ヘッダー)を把握し、移行チェックリスト(セッションに代わる明示的ハンドルの発行、ルーティングヘッダーの実装、Tasksの新ライフサイクル移行、認証の強化)を実行します。
  • 効果: サーバー開発者向けの明快な移行計画チェックリストです。非推奨期間として最低12ヶ月の猶予が保証されているため、焦らずに移行を進められます。

「ステートレス化」がもたらすアーキテクチャ上のインパクト

これまでの仕様では、リモートMCPサーバーはクライアントを「記憶」する必要がありました。initialize ハンドシェイクによってセッションを開始し、Mcp-Session-Id を使って特定のインスタンスへ接続を固定していました。これを水平分散(スケールアウト)させようとすると、セッションIDに基づくスティッキーなルーティングを設定するか、Redisなどの共有ストアを構築してすべてのインスタンスがセッション情報を同期できるようにしなければなりませんでした。これは、分散システムを運用したことのあるエンジニアなら誰もが避けたい複雑さです。

2026-07-28仕様は、まさにこの部分を根本から解決します。プロトコル層でのハンドシェイクとセッションIDを排除したことで、**「任意のインフラリクエストが任意のサーバーインスタンスに到達しても問題がない」**状態になります。サーバーは標準的なHTTPインフラの上で動作し、スティッキー設定なしで単純なラウンドロビンでスケール可能になります。

デリバリーおよびインフラの運用面から見れば、保守すべきサーバーインフラのレイヤーが1つ減ることを意味します。しかし一方で、「有効なセッションが存在する」ことを前提として記述された状態保持ロジックは、設計を書き換える必要があります。

廃止される機能と追加される機能の対比

区分 詳細 関連SEP
廃止 ハンドシェイク(initialize/initialized)の撤廃 SEP-2575
廃止 Mcp-Session-Id ヘッダーおよびプロトコル層のセッション管理の廃止 SEP-2567
廃止 tasks/list メソッドの廃止(セッション廃止に伴うセキュリティ上の理由)
追加 各リクエストの _meta パラメータ内にクライアント情報およびCapabilityを付与
追加 クライアントが初期段階でサーバー能力を取得するための server/discover メソッド
追加 HTTPリクエストボディを解析せずにパケットルーティングを可能にする Mcp-Method および Mcp-Name ヘッダー SEP-2243

思考のパラダイムシフト:状態(State)そのものが消滅するわけではありません。「トランスポート層の裏側に隠されていた状態」から「会話ログの中で明確に記述される状態」へと移行するのです。サーバーがセッションとして記憶する代わりに、モデルに向けて明示的な「ハンドル」を発行し、以降のやり取りでモデル自身にそのハンドルを持たせて呼び出させます。

MCPサーバーのステートレス移行チェックリスト

現在稼働中の既存MCPサーバーを移行する際の推奨手順です。

1. 公式SDKのアップデート: 利用している言語用のSDKが2026-07-28仕様をサポートするのを待ちます(Tier 1の主要SDKは、10週間の検証ウィンドウ内に対応予定です)。公式SDKの準備が整う前に、独自のラッパーを実装するのは避けるのが賢明です。

2. Mcp-Session-Id への依存性の排除: サーバーコード内でセッションIDを読み取って状態を検索している箇所をすべて洗い出します。これが今回の移行での最大の修正ポイントです。

3. 明示的なハンドル設計への移行: 状態を初期化するツールから明示的なハンドル(例: basket_idbrowser_id)を発行・返却するように変更します。関連する後続ツールは、このハンドルを通常の引数(パラメータ)として受け取れるように設計し、状態の受け渡し責任をモデル側に持たせます。

4. 新規ルーティングヘッダーの実装: リクエストボディ全体を解析することなくロードバランサー等がパケットを振り分けられるよう、Mcp-Method および Mcp-Name ヘッダー(SEP-2243)を出力・認識できるようにします。

5. 複数ステップのインタラクションの「InputRequired」化: クライアントからのデータ入力を待つためにSSEなどの接続を開き続けるのをやめ、InputRequiredResultinputRequests および requestState を内包)を返却して即時応答します。クライアントは入力値を含めた inputResponses と、サーバーからエコーバックされた requestState を持たせて再度リクエストします。これにより、再試行リクエストが別のインスタンスに振り分けられても破綻しません。

6. Tasksを新ライフサイクル仕様へ移行: 実験的なTasks(2025-11-25仕様の段階)を利用していた場合は、正式な標準ライフサイクルへ切り替えます。tools/call でタスクハンドルを返却し、クライアントからの tasks/gettasks/updatetasks/cancel を通じて状態制御を行います(SEP-2663 ―― これは破壊的変更になります)。

7. 認証機能の堅牢化(Hardening): セキュリティ関連のSEPに準拠します。RFC 9207に基づく iss パラメータの検証(SEP-2468)、動的クライアント登録(DCR)時のOIDC application_type の明示(SEP-837)、認証情報を issuer にバインドし変更時に再登録する仕組み(SEP-2352)などを実装します。

チェックリストのまとめ:**手順2〜3が移行のコア(本質)**であり(暗黙的なセッションを廃止し、明示的ハンドルにする)、その他はルーティングヘッダー、Tasks、認証の標準化対応です。もし提供しているサーバーが読み取り専用(状態非保持)であれば、移行の負担はほぼゼロです。

拡張(Extensions)フレームワークの標準化:MCP AppsとTasksが正式採用へ

今回の仕様アップデートでは、新たに拡張(Extensions)フレームワーク(SEP-2133)が正式に規格化されます。これらは逆DNS表記の識別子を持ち、機能交渉(Negotiation)はCapabilities内の extensions マップを介して行われます。コア仕様とは独立してバージョン管理され、ext-* リポジトリで開発されます。中でも特に注目される2つの公式拡張機能は以下の通りです。

  • MCP Apps(SEP-1865) ―― サーバーが動的なHTMLユーザーインターフェースをホスト側に送信し、ホストはセキュリティが確保されたサンドボックス化されたiframe内で描画(レンダリング)します。ツールは事前にUIテンプレートを宣言するため、ホストは先読み(Prefetch)やキャッシュ、事前のセキュリティスキャンを行えます。UI操作からサーバーへのコールバックは、既存のJSON-RPCチャンネルを介して送信されるため、通常のツール呼び出しと同様にセキュリティ監査のログに記録されます。これにより、MCPは「テキストやデータのみを返す」プロトコルから「インターフェース全体を直接届ける」プロトコルへと進化します。
  • Tasks(SEP-2663) ―― 接続を開き続けずに、バックグラウンドでの長時間処理を管理するための標準規格です。サーバーがタスク識別用のハンドルを返却し、クライアントは必要に応じて tasks/gettasks/updatetasks/cancel を通じて状態を確認・制御します。

過剰な懸念は不要:非推奨化ロードマップの確立

本バージョンより、公式の非推奨化(Deprecation)ポリシー(SEP-2577)が導入されます。機能は「Active → Deprecated → Removed」の3フェーズで段階的に整理され、Deprecated(非推奨)に指定されてから実際にRemoved(削除)されるまで、最低でも12ヶ月間の猶予が保証されます。

今回の仕様策定において非推奨に指定される3つの注釈的アノテーション機能(現行バージョンでは動作します):

非推奨となる機能 推奨される代替手法
Roots ツールの引数、リソースのURI定義、またはサーバーの環境構成設定
Sampling LLMプロバイダーのAPIを直接呼び出す方式への切り替え
Logging stderr(標準エラー出力によるログ転送)またはOpenTelemetryによる構造化ログ

MCPのアドバンスド領域において広く議論されていた機能群ですが、仕様策定チームはこれらを別の手法に整理することを決定しました。ただし、実質的に移行のための猶予期間が1年以上残されているため、7月28日に何かが突然動かなくなる心配はありません。

おわりに

MCPは着実に進化を遂げています。接続セッションと暗黙の内部状態を前提とした旧仕様から、HTTP標準に乗るステートレスなプロトコルへ。そして、拡張フレームワークによって規律ある機能拡張が可能となりました。

ユーザー側としてMCPを利用する立場であれば、基本的にはSDKのアップデートのみで対応が完了します。一方で、MCPサーバーを提供する開発者側にとっての要点は極めてシンプルです。**「暗黙的なセッションを捨て、状態を明示的なハンドルに変換し、新しいルーティングヘッダーを出力する。そして非推奨となった機能群については、1年以内のタイムラインで順次書き換えていく」**ということです。

さらに理解を深めたい方は、MCPの基本構造(クライアント/サーバー構成、3大機能、トランスポート)を説明したModel Context Protocol、およびそのアドバンスドガイドをご参照ください。また、これらのサーバーを呼び出すエージェントを自ら開発する際は、Claude Agent SDK vs Claude API vs Claude Codeを参考にしてください。ブラウザ上で動作するWebエージェントに関してはWebMCPで解説しています。学習ロードマップ全体は [/learn/claude?lang=ja] にまとめられています。


Nguyễn Phúc Nguyên Châu
Delivery Manager
ベトナム・日本市場向けに14年のデリバリー経験(Web・システム・AI自動化)

よくある質問

MCP 2026-07-28仕様における最大の変更点は何ですか?

プロトコルの完全な「ステートレス(stateless)化」です。接続時のハンドシェイク(initialize/initialized)および `Mcp-Session-Id` ヘッダーが廃止されます。これにより、任意のインフラリクエストが任意のサーバーインスタンスに到達できるようになり、スティッキーセッションや共有セッションストアを介さずとも、一般的なラウンドロビン方式のロードバランサー配下でリモートMCPサーバーをスケールさせることが可能になります。

既存のMCPサーバーは7月28日に即座に動かなくなりますか?

即座に動かなくなることはありません。新たな非推奨化(Deprecation)方針(SEP-2577)が導入され、機能は「Active → Deprecated → Removed」の順に遷移し、非推奨化告知から実際の削除(Removed)まで最低12ヶ月の猶予期間が設けられます。今回のリリースではアノテーション系のいくつかの機能(Roots, Sampling, Logging)が非推奨化されますが、動作自体は継続します。ただし、プロトコルのセッションIDに依存した設計のサーバーは、早期に移行計画を立てる必要があります。

セッションが廃止される場合、状態(State)はどこで保持すべきですか?

トランスポート層に隠された暗黙的なセッションに頼るのではなく、サーバー側の特定のツール呼び出しから明示的なハンドル(例: `basket_id` や `browser_id`)を発行(Mint)して返却します。そして、以降のツール呼び出し時に、モデルにそのハンドルを通常のパラメータとして明示的に引き渡させます。これにより、状態情報はメタデータに隠蔽されず、モデルから見える明示的な文脈となります。

MCP AppsとTasksとは何ですか?

新しい拡張(Extensions)フレームワークにおける2つの公式拡張機能です。MCP Apps(SEP-1865)は、サーバーからインタラクティブなHTMLユーザーインターフェースを送信し、ホスト側がサンドボックス化されたiframe内でレンダリングします。Tasks(SEP-2663)は長時間実行タスクを標準化するもので、サーバーがタスクハンドルを返し、クライアントが `tasks/get`、`tasks/update`、`tasks/cancel` を通じて進捗確認や中止制御を行います。