MCP(Model Context Protocol)が切り拓くAIエージェント間通信の標準化——2026年7月新仕様「ステートレス化」で何が変わるか
MCP(Model Context Protocol)が切り拓くAIエージェント間通信の標準化——2026年7月新仕様「ステートレス化」で何が変わるか
はじめに — AIエージェントとツールを繋ぐ「統合の苦しみ」
AIエージェントに外部ツールを繋ごうとしたことがあるだろうか。データベースにクエリを投げさせたい。ファイルシステムにアクセスさせたい。社内APIを叩かせたい。そのたびに、ツールごとに専用の統合コードを書き、エラーハンドリングを設計し、認証フローを実装する——この「N+1問題」が開発者の時間を蝕んできた。
2024年11月、Anthropicはこの問題を解決するため「Model Context Protocol(MCP)」をオープンソース化した。AIアプリケーションと外部ツール/データソースを、統一された規格で接続するプロトコルである。USB-Cが様々なケーブルの混乱を解消したように、MCPは統合の乱立をただ一本の線で結ぶことを目指した。
それから18ヶ月。OpenAI、Microsoft、Googleが続き、Linux Foundationの下でガバナンスは成熟し、MCPは事実上の業界標準として定着した。そして2026年7月28日、MCPプロジェクトはローンチ以来最大の仕様改訂「2026-07-28」を公開した。最大のテーマは「ステートレス化」である。
本記事では、この新仕様が何を変え、何を残し、エンジニアとアーキテクトに何を求めているのかを徹底解説する。
MCPとは何か——18ヶ月でデファクトスタンダードへ
プロトコルの基本概念
MCP(Model Context Protocol)は、AIモデルと外部システムの間の通信を標準化するオープンプロトコルである。具体的には、AIアプリケーション(クライアント)が、ツール提供側(サーバー)の機能を発見し、呼び出し、結果を受け取るための共通言語を定義している。
MCP登場以前、AIアプリに外部ツールを統合するには、ツールごとに専用のAPI連携コードを書く必要があった。5つのツールを使いたければ5セットの統合コード。ツールを追加するたびに開発とメンテナンスのコストが線形に増大する。MCPはこれを「MCPサーバーを実装するだけで、どのMCP対応クライアントからでも利用可能」という形に変えた。
成長の軌跡
timeline
title MCPの成長タイムライン
2024-11 : Anthropicがオープンソース化
2025-Q1 : Claude Desktop統合で初期エコフォーム
2025-Q2 : OpenAI/Microsoft/Googleが採用を発表
2025-11 : 初回周年仕様「2025-11-25」公開
2025-12 : Linux Foundation/AAIFへガバナンス移管
2026-03 : 2026ロードマップ公開
2026-07 : 新仕様「2026-07-28」公開——ステートレス化
MCPの成長速度は驚異的だった。Anthropicの単独プロジェクトとして始まり、わずか1年で主要AI企業すべてがサポートするマルチカンパニー標準へと成長した。2025年12月にはLinux Foundation傘下のAgentic AI Foundation(AAIF)へガバナンスが移管され、中立性が確保された。
現在のエコシステム
公開時点で、以下の公式SDKが提供されている:
| SDK | 対応バージョン | 特徴 |
|---|---|---|
| Python | v2 | FastMCP→MCPServerにリネーム、デコレータAPI維持 |
| TypeScript | v2 | 個別パッケージ分割(@modelcontextprotocol/server等)、ESMのみ |
| Go | v1.7.0-pre | 同じモジュールパスで新仕様対応 |
| C# | 2.0.0-preview.1 | プレビュー版として提供 |
| Rust | ベータ版 | コミュニティ主導で新仕様対応中 |
MCPのリードメンテナーであるDavid Soria Parra氏は、今回のリリースについて「個人と企業が共に作り上げたコミュニティの成果」と強調し、仕様策定に協力した企業としてAnthropic、Google、Microsoft、OpenAIを挙げている。
従来のMCPの課題——ステートフルプロトコルの限界
セッション管理の重荷
2026-07-28以前のMCP(仕様バージョン2025-11-25)は、プロトコル層でステートフルなセッションを管理していた。具体的には、クライアントがツールを呼ぶ前に、以下の初期化プロセスが必要だった。
初期化ハンドシェイク(廃止前)
クライアントは最初にinitializeリクエストを送り、サーバーはMcp-Session-Idを発行する:
POST /mcp HTTP/1.1
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-11-25","capabilities":{},
"clientInfo":{"name":"my-app","version":"1.0"}}}
サーバーはセッションIDを返し、その後のすべてのリクエストにこのIDを含める必要があった:
POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json
{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"search","arguments":{"q":"otters"}}}
スケーリングの壁
このステートフル設計は、本番環境での運用に深刻な課題をもたらしていた。
graph TD
subgraph "従来のステートフルMCP(問題のある構成)"
Client1[クライアントA] -->|Session: abc123| LB[ロードバランサー]
Client2[クライアントB] -->|Session: def456| LB
LB -->|sticky: abc123| Server1[サーバー1]
LB -->|sticky: def456| Server2[サーバー2]
Server1 -.->|セッション共有| Redis[(共有セッションストア)]
Server2 -.->|セッション共有| Redis
Server3[サーバー3] -.->|セッション共有| Redis
end
3つの致命的な問題:
- スティッキーセッションの必須化: クライアントがサーバーインスタンスに固定されるため、ロードバランサーでスティッキールーティングを設定する必要がある。インスタンスが落ちればセッションが消失する。
- 共有セッションストアの要件: 複数インスタンスでセッションを共有するには、Redis等の外部ストアが必須。インフラコストとレイテンシが増大する。
- ゲートウェイでの深いパケットインスペクション: リクエストをルーティングするために、ゲートウェイがJSONボディを解析してメソッドを判定する必要がある。これはパフォーマンス上のオーバーヘッドであり、セキュリティ上の懸念でもある。
エンタープライズ環境では、これらの要件がMCPの本番導入を阻む最大の障壁となっていた。「プロトコルは優れているが、インフラが複雑すぎる」という評価は、開発者コミュニティで繰り返し指摘されていた課題であった。
ステートレス化のコア——何がどう変わったか
6つのSEPによる構造改革
2026-07-28仕様は、単一の変更ではなく、6つのSpecification Enhancement Proposal(SEP)が連携して実現した構造的変革である。ローンチ以来最大の改訂と言われる理由がここにある。
変更1: 初期化ハンドシェイクの廃止(SEP-2575)
initialize/initializedハンドシェイクが完全に削除された。プロトコルバージョン、クライアント情報、クライアントのケイパビリティは、接続時に一度交換するのではなく、毎リクエストの_metaフィールドに含めて送信されるようになった。
変更2: セッションIDの廃止(SEP-2567)
Mcp-Session-Idヘッダーと、それに伴うプロトコルレベルのセッションが削除された。これにより、任意のMCPリクエストを任意のサーバーインスタンスが処理できるようになった。
新しいリクエスト形式
同じツール呼び出しが、新仕様では単一の自己完結型リクエストになる:
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search","arguments":{"q":"otters"},
"_meta":{"io.modelcontextprotocol/clientInfo":{"name":"my-app","version":"1.0"}}}}
server/discoverメソッドの追加
サーバーのケイパビリティを事前に確認する必要がある場合は、新しいserver/discoverメソッドを呼び出す。ただし、最初に呼び出すことは必須ではない。必要な時に必要な分だけ取得する設計である。
graph TD
subgraph "新ステートレスMCP(簡素化された構成)"
Client1[クライアントA] -->|自己完結型リクエスト| LB[ラウンドロビンLB]
Client2[クライアントB] -->|自己完結型リクエスト| LB
LB -->|任意のインスタンスへ| Server1[サーバー1]
LB -->|任意のインスタンスへ| Server2[サーバー2]
LB -->|任意のインスタンスへ| Server3[サーバー3]
end
Before/After比較
| 特性 | 従来(2025-11-25) | 新仕様(2026-07-28) |
|---|---|---|
| 初期化ハンドシェイク | 必須(initialize/initialized) | 廃止 |
| セッション管理 | Mcp-Session-Id(必須) | 廃止 |
| リクエストの自己完結性 | 低い(セッション状態に依存) | 高い(全情報を_metaに含む) |
| サーバーインスタンス固定 | 必須(sticky routing) | 不要 |
| 共有セッションストア | 必須(Redis等) | 不要 |
| ロードバランサー要件 | スティッキーセッション対応 | 通常のラウンドロビン |
| 水平スケーリング | 困難・コスト高 | 容易・低コスト |
| ゲートウェイでのボディ解析 | 必要な場合あり | 不要(ヘッダーでルーティング) |
実践的な効果は即効性がある。従来、リモートMCPサーバーを本番運用するには「スティッキーセッション、共有セッションストア、ゲートウェイでの深いパケットインスペクション」の3点セットが必要だった。新仕様では、普通のラウンドロビンロードバランサーの背後に置くだけで運用できる。
「ステートレスプロトコル、ステートフル アプリケーション」の設計思想
プロトコルはステートレス、アプリはステートフル
「プロトコルがステートレスになった」と聞くと、「アプリケーションもステートレスにしなければならないのか」と思うかもしれない。答えはNoである。
MCP 2026-07-28の設計思想は「プロトコルはステートレス、アプリケーションは必要に応じてステートフル」である。重要なのは、状態を「どこで管理するか」の移行である。従来はプロトコル層(セッション)が状態を管理していた。新仕様では、アプリケーション層が明示的に管理する。
明示的ハンドル(Explicit Handle)パターン
複数のツール呼び出しにまたがる状態が必要な場合、サーバーはツールの戻り値として明示的ハンドルを発行する。そして、モデルが後続のツール呼び出しでそのハンドルを通常の引数として渡す。
実装例:ショッピングカート
# MCPサーバー側(Python擬似コード)
@mcp.tool()
def create_cart() -> dict:
cart_id = generate_cart_id()
return {"cart_id": cart_id, "items": []}
@mcp.tool()
def add_item(cart_id: str, product_id: str, quantity: int) -> dict:
cart = load_cart(cart_id)
cart.add(product_id, quantity)
return {"cart_id": cart_id, "items": cart.items, "total": cart.total}
@mcp.tool()
def checkout(cart_id: str) -> dict:
cart = load_cart(cart_id)
result = process_payment(cart)
return {"status": "completed", "order_id": result.order_id}
このパターンでは、cart_idが明示的ハンドルである。モデルは最初のcreate_cartでハンドルを取得し、add_itemとcheckoutで引き渡す。プロトコルは一切状態を持たないが、アプリケーションは必要な状態を管理している。
なぜこれは従来より「強力」なのか
MCPチームは、この明示的ハンドルパターンが「単なる代替手段」以上であると強調している。実際、従来のセッション状態よりも強力なパターンである理由は以下の通りである:
- モデルから状態が見える: セッションメタデータに隠された状態ではなく、モデルのコンテキスト内にハンドルが存在する。モデルは状態を推論し、操作し、構成できる。
- ツール間の状態共有: モデルは異なるツール間でハンドルを渡せる。検索ツールで得た
session_idを、別の要約ツールに引数として渡すといった構成が自然に書ける。 - デバッグ可能性: 状態が明示的な引数として受け渡しされるため、ログとトレースで追跡可能。不具合の原因特定が容易。
- 水平スケーラビリティ: ハンドルはステートレスなペイロードの一部なので、任意のサーバーインスタンスが処理を継続できる。状態の同期が不要。
この設計は、REST APIがステートレスでありながら豊富なアプリケーション体験を提供してきたのと同じ哲学である。「状態を見える場所に置く」という判断は、プロトコルの複雑さを減らし、システム全体の透明性を高める。
Multi Round-Trip Requests(MRTR)——ステートレスでの対話
対話型処理の課題
ステートレスプロトコルになっても、サーバーが処理の途中でユーザーに入力を求めるニーズは消えない。例えば:
- ファイル削除の確認:「3件のファイルを削除しますか?」
- 追加情報の要求:「検索条件を絞り込んでください」
- 認可プロンプト:「この操作には管理者権限が必要です」
従来の仕様では、このような対話はServer-Sent Events(SSE)ストリームを開きっぱなしにすることで実現していた。サーバーがクライアントにメッセージを送り、クライアントが応答する——この双方向ストリームはステートフルな接続に依存していた。
MRTRの仕組み
新仕様はMulti Round-Trip Requests(MRTR)でこの課題を解決する(SEP-2322)。SSEストリームを維持する代わりに、サーバーはInputRequiredResultを返す:
{
"resultType": "input_required",
"inputRequests": {
"confirm": {
"type": "elicitation",
"message": "Delete 3 files?",
"schema": { "type": "boolean" }
}
},
"requestState": "eyJzdGVwIjoxLCJmaWxlcyI6WyJhIiwiYiIsImMiXX0="
}
クライアントはユーザーからの回答を集め、元のリクエストをinputResponsesとrequestStateを添えて再送信する。requestStateはサーバーが発行した不透明なトークンで、処理の進行状況をエンコードしている。
sequenceDiagram
participant C as クライアント
participant S as MCPサーバー(任意のインスタンス)
C->>S: tools/call (ファイル削除リクエスト)
S->>S: 処理開始、ユーザー確認が必要と判断
S-->>C: InputRequiredResult (confirm + requestState)
Note over C: ユーザーが「はい」を選択
C->>S: tools/call (元リクエスト + inputResponses + requestState)
Note over S: 別インスタンスでも処理可能<br/>(requestStateに全状態が含まれる)
S-->>C: 完了結果
サーバー主導リクエストの制約
ステートレス環境での安全性を確保するため、サーバー主導のリクエスト(クライアントへの確認や情報要求)はサーバーがクライアントのリクエストを処理中の場合にのみ発行できる(SEP-2260)。これにより:
- ユーザーが突然プロンプトを出されることはない
- すべての確認は、ユーザーまたはエージェントが開始した操作に追溯到できる
- ステートレスな環境でも安全な対話フローが保証される
この制約は従来「推奨」だったものが「必須」に昇格されたものである。ステートレス化に伴う安全性の再設計と言える。
運用性の向上——ルーティング、キャッシュ、トレーサビリティ
ルーティング可能なヘッダー(SEP-2243)
新仕様では、Streamable HTTPトランスポートのPOSTリクエストにMcp-Methodヘッダーが必須となった。さらに、tools/call、resources/read、prompts/getといった名前で特定のリソースを指定するリクエストでは、Mcp-Nameヘッダーも必須である。
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json
これにより、ゲートウェイ、ロードバランサー、レートリミッター、WAFがJSONボディを解析することなくルーティングと認可の判断を行える。ヘッダーとボディの不一致がある場合、サーバーはリクエストを拒否する。これはセキュリティ上の保護でもある。
実践的なユースケース:
- 特定のメソッド(
tools/call)のみレートリミットを強く設定 - 高負荷なツールへのリクエストを専用インスタンスにルーティング
- WAFで危険なメソッド呼び出しをパターンベースで遮断
キャッシュ制御(SEP-2549)
tools/list、prompts/list、resources/list等のリスト取得結果に、ttlMsとcacheScopeフィールドが追加された。これはHTTPのCache-Controlをモデル化したものである:
- ttlMs: レスポンスの鮮度期限(ミリ秒)。クライアントはこの期間内はキャッシュを再利用可能。
- cacheScope: キャッシュの共有範囲。
user(ユーザー固有)かserver(全ユーザーで共有)。
従来は、ツールリストの変更を検知するために長時間のSSEストリームを維持する必要があった。新仕様では、クライアントがキャッシュ期間を知っているため、不要な再取得を削減できる。
分散トレースの標準化(SEP-414)
W3C Trace Contextの伝播が_metaフィールド内で標準化された。traceparent、tracestate、baggageのキー名が固定されたことで、OpenTelemetry互換のバックエンドでエンドツーエンドの分散トレースが可能になった。
graph LR
A[ホストアプリ] -->|traceparent| B[クライアントSDK]
B -->|traceparent伝播| C[MCPサーバー]
C -->|traceparent伝播| D[下流サービス]
style A fill:#e1f5fe
style D fill:#e1f5fe
トレースがホストアプリで開始され、クライアントSDK、MCPサーバー、さらに下流のサービスまで続く。すべてが単一のスパンツリーとして可視化される。本番環境でのボトルネック特定と障害診断が劇的に改善される。
運用特性の比較
| 運用特性 | 従来(2025-11-25) | 新仕様(2026-07-28) |
|---|---|---|
| ルーティング判断 | ボディ解析が必要 | ヘッダーのみで判断 |
| リストキャッシュ | SSEストリームで変更通知 | ttlMs/cacheScopeで明示的 |
| トレース伝播 | 非標準・SDK依存 | W3C標準で固定 |
| レートリミット | ボディ解析ベース | ヘッダーベース |
| 障害診断 | ログ相関が困難 | OpenTelemetryで統一 |
| インフラ要件 | スティッキーLB + Redis | 通常のLBのみ |
拡張フレームワークとエンタープライズ機能
拡張の正式化
2026-07-28仕様では、コアプロトコルとは独立して機能を追加・更新するための拡張フレームワークが正式化された。これまで拡張は存在したが、正式なプロセスがなかった。新仕様では以下が定義されている:
- 識別子: リバースDNS記法(例:
io.modelcontextprotocol/tasks) - ネゴシエーション: クライアントとサーバーが
extensionsマップで対応拡張を宣言 - 独立性: 独立リポジトリで管理、コア仕様とは別にバージョニング
これにより、コミュニティがコア仕様の改訂を待たずに新しい機能を標準化できる。HTTPの拡張ヘッダーや、KubernetesのCRDに似た拡張性モデルである。
3つの公式拡張
MCP Apps——サーバー配信UI
MCP Apps拡張は、サーバーがインタラクティブなHTMLインターフェースを配信し、ホストアプリがそれをサンドボックス化されたiframeでレンダリングする仕組みを提供する。
これまでMCPサーバーはテキストベースの結果のみを返せた。MCP Appsにより、視覚的なダッシュボード、フォーム、グラフなどをサーバー側から提供できる。例えば、データベースツールがクエリ結果をテーブル形式のインタラクティブUIで返すことが可能になる。
Tasks——長時間実行タスク
Tasksは実験的なコア機能から公式拡張(io.modelcontextprotocol/tasks)に昇格した。長時間実行される処理をステートレスに管理するモデルである。
サーバーはtools/callのレスポンスとしてタスクハンドルを返し、クライアントは以下の操作でタスクを管理する:
| 操作 | 説明 |
|---|---|
tasks/get |
タスクの現在の状態と進捗を取得 |
tasks/update |
タスクのパラメータを更新 |
tasks/cancel |
タスクのキャンセルを要求 |
バックグラウンド処理、バッチジョブ、長時間分析などをMCPの枠組みで扱えるようになった。ステートレス設計と組み合わせることで、タスクの状態確認リクエストは任意のサーバーインスタンスが処理できる。
Enterprise-Managed Authorization(EMA)
EMAは、組織のIDプロバイダー(IdP)経由でMCPサーバーへのアクセスを一元管理する拡張である。エンタープライズ環境でのSSO(シングルサインオン)、監査ログ、アクセスポリシーをMCPプロトコルレイヤーで統合できる。
認可の強化
認可システムがOAuth 2.0およびOpenID Connectの本番運用により近い形に再設計された:
- iss検証の必須化: 認可レスポンスの
issパラメータをRFC 9207に従って検証。mix-up攻撃への対策。 - クライアントタイプの明示: Dynamic Client Registrationで
application_typeを宣言。デスクトップ/CLIクライアントが「web」タイプに誤って分類される問題を解決。 - DCRからCIMDへの移行: Dynamic Client Registration(DCR)は非推奨に。Client ID Metadata Documents(CIMD)への移行方針を提示。
- localhost リダイレクト: CLI/デスクトップクライアントのlocalhostリダイレクトURIが適切に処理されるよう改善。
これらの変更により、エンタープライズ環境でのMCP認可が実運用レベルに到達した。
非推奨機能とマイグレーション戦略
4つの非推奨機能
2026-07-28仕様では、以下の機能が非推奨(deprecated)に指定された。
| 非推奨機能 | 説明 | 推奨代替手段 |
|---|---|---|
| Roots | クライアントがサーバーにファイルシステム境界を通知する機能 | ツールパラメータまたはリソースURI |
| Sampling | サーバーがクライアントのモデルにテキスト生成を依頼する機能 | LLMプロバイダーAPIとの直接統合 |
| Logging | サーバーからクライアントへのプロトコルレベルログ通知 | OpenTelemetryによる構造化オブサーバビリティ |
| HTTP+SSEトランスポート | 旧来の双方向SSEベーストランスポート | Streamable HTTP |
重要なのは、非推奨≠即座削除である。これらの機能は本リリースおよび公開後12ヶ月以内のすべての仕様バージョンで動作し続ける。ただし「削除へのカウントダウン」は始まっている。
SDK移行ガイド
Python SDK(v2)
FastMCPクラスがMCPServerにリネーム- デコレータAPI(
@mcp.tool())は維持される - 内部的なセッション管理が全面書き換え
TypeScript SDK(v2)
- モノリシックSDKから個別パッケージに分割(
@modelcontextprotocol/server、@modelcontextprotocol/client等) - ESMのみのサポート(CommonJSは非対応)
import文の更新が必要
Go SDK(v1.7.0-pre.1)
- 同じモジュールパスを維持
go getでアップデート可能
C# SDK(2.0.0-preview.1)
- プレビュー版として提供
- 本番利用には安定版リリースを待つことを推奨
後方互換性
既存のクライアントとサーバーは、7月28日の公開と同時に壊れることはない。新仕様(2026-07-28)を話すクライアントは、2025-11-25以前のサーバーに遭遇した場合、自動的に初期化ハンドシェイクにフォールバックする。
ただし、ライブラリを公開している場合は新仕様への対応が強く推奨される。SDKのメジャーバージョンアップデートと新仕様対応は別々の作業として進められる。
マイグレーション前チェックリスト
新仕様へ移行する前に、以下の5項目を確認すること:
- [ ] 1. セッション依存の確認: アプリケーションが
Mcp-Session-Idに暗黙的に依存していないか。該当する場合、明示的ハンドルパターンへの移行が必要。 - [ ] 2. 非推奨APIの使用状況: Roots、Sampling、Loggingを使用していないか。使用している場合、代替手段への計画的移行が必要。
- [ ] 3. エラーコードのハードコード: リソース不在エラーの
-32002をハードコードしていないか。-32602への更新が必要。 - [ ] 4. SDKバージョンの互換性: 使用しているSDKの次期バージョンで破壊的変更がないか確認。特にTypeScript SDKのESM移行とPython SDKのクラスリネーム。
- [ ] 5. 認可フローの見直し: DCRを使用している場合、CIMDへの移行計画を策定。
issパラメータ検証の実装準備。
よくある質問(FAQ)
Q: MCPはREST APIやGraphQLを置き換えるものですか?
いいえ。MCPはAIモデルと外部ツールの接続に特化したプロトコルであり、REST APIやGraphQLを置き換えるものではありません。むしろ、MCPサーバーの内部実装がREST APIやGraphQLエンドポイントを呼び出すことが一般的です。MCPは「AIエージェントがツールを発見し、呼び出す方法」を標準化するレイヤーであり、バックエンドの実装技術は問いません。
Q: ステートレス化で既存のMCPサーバーは壊れますか?
いいえ。新仕様(2026-07-28)を話すクライアントは、従来のサーバー(2025-11-25以前)に遭遇した場合、自動的に初期化ハンドシェイクにフォールバックします。既存のクライアントとサーバーが即座に壊れることはありません。ただし、新仕様の恩恵(水平スケーリング、簡素化されたインフラ)を受けるには、両側のアップデートが必要です。
Q: MCPとA2A(Agent-to-Agent)プロトコルの関係は?
MCPは「エージェントとツール」の接続を標準化するプロトコルです。一方、A2Aプロトコルは「エージェントとエージェント」の通信を対象とします。2026ロードマップでは、エージェクト間通信の標準化が掲げられており、MCPの拡張フレームワークを通じてA2Aパターンのサポートが期待されています。現時点では、MCPとA2Aは補完的な関係にあります。
Q: ローカル(stdio)トランスポートにもステートレス化の影響はありますか?
プロトコル層のステートレス化は、主にHTTPベースのトランスポート(Streamable HTTP)に影響します。ローカルのstdioトランスポートは1対1の通信が前提であり、セッション管理のオーバーヘッドが元々小さいため、実質的な影響は限定的です。ただし、プロトコルの一貫性のため、initializeハンドシェイクの廃止等は全トランスポートに適用されます。
Q: MCPを本番環境で使い始めるための最小構成は?
最小構成は以下の通りです:
- MCPサーバー: いずれかの公式SDK(Python推奨)でツールを実装
- クライアント: MCP対応のホストアプリ(Claude Desktop等)または独自クライアント
- トランスポート: ローカルならstdio、リモートならStreamable HTTP
- 認可: 個人利用なら不要。チーム利用ならOAuth 2.0ベースの認可を推奨
新仕様により、リモート運用でも共有セッションストア不要、通常のロードバランサーのみで始められます。
まとめ — MCP 2026-07-28が意味する3つの本質変化
1. インフラの民主化
ステートレス化により、MCPサーバーの本番運用に必要なインフラが劇的に簡素化された。共有セッションストア、スティッキーセッション、深いパケットインスペクション——これらすべてが不要になった。「普通のHTTPサーバーのように運用できる」という変化は、小規模チームから大企業まで恩恵を受ける。
2. 拡張性の制度化
拡張フレームワークの正式化により、MCPは「プロトコル仕様」から「プロトコル・エコシステム」へと進化した。MCP Apps、Tasks、EMAという3つの公式拡張は、UI配信、長時間タスク、エンタープライズ認可という、これまでコア仕様の改訂を待たなければ実現できなかった領域を開拓する。
3. エンタープライズ準備の完了
OAuth 2.0/OpenID Connectとの完全な整合、OpenTelemetryベースのオブサーバビリティ、W3C Trace Contextの標準化——これらは「本番環境で安心して使える」ための最後のピースである。Linux Foundation/AAIFガバナンスの下での複数企業による仕様策定は、中立性と持続性を保証する。
今日から始める3つのアクション
- 現状把握: 使用しているMCP実装(SDK、サーバー、クライアント)のバージョンと、非推奨機能の利用状況を確認する
- ステートレス移行の計画: セッション状態に依存する処理を特定し、明示的ハンドルパターンへの移行計画を立てる
- 新機能の評価: MCP AppsやTasks拡張が、自社のユースケース(ダッシュボード配信、バッチ処理等)にどう適用できるかを検証する
MCPは「AIのUSB-C」になるという愿景を掲げてから18ヶ月。2026-07-28は、その愿景を支えるインフラがついに「完成」したリリースである。
参考文献
- The 2026-07-28 MCP Specification Release Candidate - MCP公式ブログ
- MCP仕様「2026-07-28」を公開 - gihyo.jp
- 2026-07-28 MCP: stateless, multi-round-trip - 4sysops
- MCP公式ロードマップ
- MCP 2026-07-28 Final Spec - abhs.in
- MCP(Model Context Protocol)とは? - NTT西日本
- MCP 2026ロードマップ完全解説 - Qiita
- AI Agent Frameworks 2026 - morphllm