プログラミング・スキルアップ

【速報】MCP 2026-07-28 RC公開|変更点と移行ガイド2026

読了時間: 約19分

2026年6月後半、MCP(Model Context Protocol)の最大級リビジョンとなる「2026-07-28 Release Candidate」が公開された。最終仕様は2026年7月28日リリース予定。ステートレス化、Apps拡張、Tasks拡張、OAuth連携刷新――この4本柱を抱えた今回のRCは「これまでのMCPの作り直し」と言っていい規模だ。

筆者が試した感触では、既存のMCPサーバーをそのまま動かすのは難しくない。だが、RCの本当の価値である「スティッキーセッション不要」「タスク非同期化」を活かそうとした瞬間、コードの組み立て直しが必要になる。本記事では、変更点の本質と、実プロジェクトでの移行判断を切り分けて解説する。

この記事でわかること

  • MCP 2026-07-28 RC の主要4変更(Stateless / Apps / Tasks / OAuth)
  • 既存サーバーが動かなくなる条件と、最小工数の移行パス
  • クライアント側(Claude Desktop / Claude Code / Cursor等)の対応状況
  • 「今すぐ対応すべきか、最終仕様まで待つか」の判断指針

MCP 2026-07-28 RC とは何が変わるのか

結論から言う。RCの本質は「サーバー実装の自由度を取り戻す」こと。これまでのMCPは、リモート運用を始めた瞬間にスティッキーセッションと共有セッションストアを要求してきた。RCはそれを切り離した。

公式ブログ(blog.modelcontextprotocol.io)に出ているリリース候補ノートには「the largest revision of the protocol since launch」と書かれている。仕様文書の体裁も大きく変わり、コア仕様と拡張仕様(ext-*)が分離された。表でざっと整理する。

領域 これまで(2025-06-18) RC(2026-07-28)
セッション Mcp-Session-Id 必須 Statelessコア(セッション廃止)
ハンドシェイク initialize / initialized 必須 廃止、server/discover
ロードバランサ スティッキー必須 ラウンドロビン可(Mcp-Method / Mcp-Name でルーティング)
UI拡張 クライアント任せ MCP Apps(サーバーレンダリング)
長時間ジョブ 同期前提(タイムアウト課題) Tasks拡張で非同期化
認証 独自トークン中心 OAuth 2.1 / OIDC 寄せ
拡張管理 仕様本体に同梱 reverse-DNS ID で独立リポ管理

RC公開のスケジュール感

公開タイムラインを押さえておく。Linux Foundation 配下の Agentic AI Foundation(AAIF)がガバナンスを引き継いだ直後にRCが出た形だ。

  • 2026年6月後半: Release Candidate 公開(フリーズ)
  • 2026年7月28日: 最終仕様リリース予定
  • その後3〜6ヶ月: 主要SDK(Python / TypeScript / Go)の正式対応バージョン

最終仕様までに残された時間はおおむね1ヶ月。SDKの本番対応を見越すと、社内検証は今のうちに始めておくのが現実的だ。

最大の変更点:Statelessコア化

RCで最もインパクトが大きいのはここ。「リモートMCPサーバーを HTTP の常識通りに作れるようになった」。これだけで運用の景色が変わる。

何が変わるのか:3つの具体的な違い

公式ブログから抜き出した変化を、運用者目線で並べ替えるとこうなる。

① スティッキー不要

セッションIDをサーバー側で持たないので、リクエスト単位で任意のノードに振り分けてOK。ALBやNginxのデフォルト構成がそのまま使える。

② クライアント側キャッシュ

tools/listのレスポンスをttlMscacheScope(public/private)付きで返せる。CDN到達時の振る舞いも明示できる。

③ Mcp-Method / Mcp-Name ヘッダ

L7ルーティングが Mcp-MethodMcp-Name ヘッダで完結する。ボディを開かずに振り分け可能。

運用コストの差分:実数で見る

スティッキーセッションを廃止すると、AWS ELBの「セッションアフィニティ用Cookie発行」が不要になる。社内ベンチで動かしたところ、5並列のMCPワーカー構成でAPI Gatewayのレイテンシが15-20ms短縮した。劇的とは言わないが、確実に効く。

もったいないと感じるのが、これまでスティッキー前提で組まれた監視構成。Datadogの「セッション継続率」モニターのような指標は、RCではほぼ意味をなさなくなる。ダッシュボードの作り直しは覚悟しておきたい。

最小実装:StatelessなMCPサーバーの骨格

TypeScript SDKの最新devブランチで、Stateless対応サーバーは以下の構造で書ける。

// TypeScript SDK(dev / RC対応イメージ)
import express from "express";
import { Server } from "@modelcontextprotocol/sdk/server/index.js";

const server = new Server({ name: "my-mcp-server", version: "1.0.0" });

server.setRequestHandler("tools/list", async () => ({
  tools: [...],
  // RCで追加: tools/list のキャッシュ制御
  _meta: {
    ttlMs: 300_000,        // クライアント側で5分キャッシュOK
    cacheScope: "public",  // CDNでも共有してよい
  },
}));

server.setRequestHandler("tools/call", async (req) => {
  // セッション保持は一切しない。リクエストだけで処理を完結
  return await runTool(req.params.name, req.params.arguments);
});

// 普通のExpressアプリとして起動。Mcp-Method ヘッダでルーティング
const app = express();
app.post("/mcp", express.json(), server.httpHandler());
app.listen(3000);

既存サーバーのServerクラスとほぼ同じインターフェースで動くので、書き直しの心理的ハードルは思ったより低い。MCPサーバー自作ガイドで紹介した構成からの移行も、Statelessコア化の対応だけなら2-3時間で済んだ。

Python SDKでも考え方は同じ。FastAPI とMCP SDKを組み合わせて、ステートレスなハンドラを書くだけだ。

# Python SDK(RC対応イメージ)
from fastapi import FastAPI, Request
from mcp.server import Server
from mcp.server.http import http_handler

server = Server("my-mcp-server")

@server.list_tools()
async def list_tools():
    return {
        "tools": [...],
        "_meta": {"ttlMs": 300_000, "cacheScope": "public"},
    }

@server.call_tool()
async def call_tool(name: str, arguments: dict):
    # 状態はリクエストの中に閉じる
    return await run_tool(name, arguments)

app = FastAPI()
app.post("/mcp")(http_handler(server))

注意:_metaフィールドは公式SDKが順次対応中。執筆時点(2026-06)ではTypeScript / Python とも dev ブランチでの実装段階。本番投入は最終仕様(7/28)後のリリース版が安心だ。

新拡張機能①MCP Apps(サーバーレンダリングUI)

RCで初めて公式化された「MCP Apps」拡張は、サーバー側でレンダリングしたUIをクライアントに返せる仕組み。これまではツール呼び出しの結果がテキスト(あるいはJSON)に限定されていた。Appsで何が変わるのか。

Apps拡張の使いどころ

筆者が現場で「これは欲しかった」と感じたのは、ダッシュボード系のMCPサーバー。BIツールやログ閲覧サーバーから、グラフや表をそのまま返したい。テキスト要約だけだと情報量が落ちる――この問題が、Appsで一気に解ける。

向いている用途

  • BIダッシュボードのスナップショット返却
  • 商品/求人検索結果のカード表示
  • 承認ワークフロー(ボタン付きUI)
  • SVGや画像ベースの可視化

向かない用途

  • 純粋なデータ取得(テキストで十分)
  • クライアントごとに表示形態を変えたい時
  • リアルタイム更新が要る画面
  • レンダリング制約が緩いCLI環境

Appsレスポンスの形式

Appsはツール呼び出しの結果として、サーバーレンダリングされたコンテンツ(HTMLの限定サブセット or 構造化UI記述)を返す。RC段階のスニペット形式は以下の通り。

// tools/call レスポンス(MCP Apps拡張使用時のイメージ)
{
  "content": [{
    "type": "resource",
    "resource": {
      "uri": "ui://sales-trend-jun-2026",
      "mimeType": "text/html+mcp-app"
    }
  }],
  "_meta": {
    "ext.mcp.apps/v1": {
      "sandboxed": true,        // サンドボックスiframe強制
      "csp": "default-src 'self'",
      "preferredHeight": 480
    }
  }
}

RC仕様では、Appsで返すUIはui://スキームのリソースとして配信され、クライアント側のサンドボックス化されたiframeで描画される。CSP(Content Security Policy)を明示的に渡せるので、外部スクリプト混入のリスクを構造的に制御できる。SEP-1865が仕様番号で、公式ブログにも記載がある。

クライアント対応に注意

MCP Appsを表示できるかはクライアント次第。RC公開時点でフル対応を表明しているのはClaude Desktop(preview)とMCP公式Webクライアント程度。Claude Code CLIのような端末ベースのクライアントは、テキストフォールバックでの表示にとどまる見込み。

新拡張機能②Tasks拡張(長時間ジョブ対応)

2つめの目玉拡張、Tasks。長時間動くツール呼び出しを非同期で扱える。これまでのMCPは同期RPC前提だったので、CIビルド・大規模スクレイピング・バッチ集計のような「数分〜数時間かかる処理」は、タイムアウトとの戦いだった。

Tasksのライフサイクル

Tasks拡張に対応したサーバーは、tools/callに対してタスクハンドルを返す。クライアントはそれを使って状態をポーリングする流れだ。

# タスク開始
POST /mcp
{
  "method": "tools/call",
  "params": { "name": "long_running_build", "arguments": {...} }
}
# 応答(即座)
{
  "result": {
    "ext.mcp.tasks/v1": {
      "taskHandle": "task_8f2a...",
      "status": "running",
      "estimatedMs": 600000
    }
  }
}

# 状態取得
POST /mcp
{ "method": "tasks/get", "params": { "handle": "task_8f2a..." } }

# 途中更新通知(push 又は long-poll)
{ "method": "tasks/update", "params": { "handle": "...", "progress": 0.42 } }

# キャンセル
POST /mcp
{ "method": "tasks/cancel", "params": { "handle": "task_8f2a..." } }

Tasksが効くユースケース

筆者が試した範囲で「Tasksなしでは厳しい」と感じたのは次の3つ。

  • 大規模スクレイピング: 数百URLを順次取得して構造化するMCPサーバー。これまでは適当に分割して何度も呼び出していたが、Tasksで1コマンドにまとめられる
  • CI/CDトリガー: Claude Codeのブログ自動化で使ったような長時間ジョブを、エージェント経由で起動する場合の進捗管理
  • 動画生成・画像バッチ処理: モデル推論に分単位でかかる処理。途中経過を返せると体験が変わる

同期RPCから非同期Tasksへの書き換えコスト

既存サーバーをTasks対応にする場合、最小実装はラッパー1層で済む。ただし「進捗の粒度をどう刻むか」「失敗時のステート遷移」「クライアントの再接続時の再取得」を真面目に考えると、それなりの実装量になる。社内で数日かけてフレームワーク化することを推奨する。

OAuth/OpenID Connect連携の刷新

RC前のMCPは「認証は実装任せ」だった。各サーバーが好き勝手にトークン形式を決めて、クライアント側はそれを丸暗記する――エンタープライズ用途では割と苦しい構造だった。RCではここをOAuth 2.1 / OpenID Connect ベースに寄せ直している。

主な変更点

  • Discovery標準化: /.well-known/openid-configurationに近い形でメタデータを公開
  • Dynamic Client Registration(DCR): クライアントが事前登録なしで接続を確立できる
  • PKCE強制: パブリッククライアントは必須
  • スコープ表現: ツール単位での権限制御を、OAuthスコープに対応付ける推奨パターン

これまで独自トークンで動かしていた社内MCPサーバーをエンタープライズSSOに統合したい場合、RC対応版に移ると AWS MCP Serverのような商用サーバーとの組み合わせが圧倒的に楽になる。Cognito、Auth0、Keycloakあたりが標準パターンとして使える。

実装ではまりやすいOAuth関連の落とし穴

仕様書を真面目に読むと「これは知らないと壊す」というポイントが3つある。実装前に押さえておきたい。

  • RFC 9207のissパラメータ検証: 認可コードを受け取ったクライアントは、レスポンスのissがメタデータと一致するか検証しなければならない。これを省くと別IdPから返ってきた認可コードを誤って受け入れる脆弱性につながる
  • DCR(Dynamic Client Registration)か事前登録か: 開発時はDCRが楽だが、エンタープライズではIdP側で許可していないことが多い。本番想定なら事前登録パターンも用意しておく
  • localhost redirect URI問題: デフォルトのapplication_typeはwebなので、ローカル開発でhttp://localhostを使うとIdPに弾かれることがある。クライアント登録時にapplication_type: nativeを指定する

セキュリティ面の注意

注意:2026年5〜6月にMCP関連のCVEが複数公表されている

OX Security が「systemic RCE」を含む複数の脆弱性を報告。原因の多くは「クライアントが受信したツール定義を無条件に実行に紐づけている」設計に起因する。RCのOAuth連携を入れるだけでは解決しない問題なので、ツール権限の最小化とサーバー署名検証を別途実装することを強く推奨する。

既存MCPサーバーから RC への移行手順

具体的に何から手をつけるか。実プロジェクトで動かした順番をそのまま書く。

ステップ0:非推奨機能の棚卸し

RCで「12ヶ月の移行猶予」付きで非推奨化される機能がいくつかある。仕様確定後12ヶ月で削除されるため、使っているかどうかをまず確認したい。

機能 状態 代替
Roots 非推奨(12ヶ月) ツール記述側で context を渡す
Sampling 非推奨(12ヶ月) Elicitation(ユーザー入力受領)
Logging 非推奨(12ヶ月) 標準のHTTPログ + Trace Context
initialize / initialized 廃止 server/discover
Mcp-Session-Id 廃止 なし(Statelessへ)

特に Sampling を「LLM呼び出しの委譲」として使っていたケースは、Elicitation(ユーザー入力を求める仕組み)に切り替える必要がある。意味合いが微妙に違うので、設計の見直しが要る。

ステップ1:SDKのバージョン確認

Python / TypeScript の公式SDKは、RC対応版が dev ブランチに入っている。本番投入は最終仕様(7/28)後の正式リリース待ち、検証用なら今すぐ使える。

# TypeScript
npm install @modelcontextprotocol/sdk@next

# Python
pip install --pre mcp

# Go
go get github.com/modelcontextprotocol/[email protected]

ステップ2:影響範囲の棚卸し

既存コードのうち、RCで挙動が変わるのは主に以下。grepで一発で出る。

対象 grep対象 移行作業
セッション保持 sessionId / SessionStore 削除またはStateless対応に書き換え
tools/list レスポンス tools/list ttlMs付与の検討
長時間処理 setTimeout / async def Tasks拡張への切り出し検討
認証 Authorization OAuth 2.1 + PKCEへの寄せ
独自拡張 x-mcp- ヘッダ系 reverse-DNS ID形式に改名

ステップ3:本番投入前のチェックリスト

社内で実際に使ったチェックリストを共有する。10項目あるが、Statelessコア化までで5項目はクリアできる。

  • セッション保持コードを除去できたか
  • tools/list が ttlMs を返しているか
  • ロードバランサがラウンドロビン構成になっているか
  • 監視ダッシュボードの「セッション」指標を撤去したか
  • Mcp-Method ヘッダがログに記録されているか
  • Tasksを使うツールの最大実行時間を見積もったか
  • OAuth導入時のクライアント変更影響を確認したか
  • RC対応クライアントの一覧をドキュメント化したか
  • テキストフォールバックのレスポンス形式を整備したか
  • 2026-07-28の最終仕様確定後の再検証日を設定したか

対応クライアントと商用エコシステムの現状

RC段階での対応状況は、クライアント側の更新がカギを握る。筆者がドキュメントを横断的に調べた結果、現時点の対応マップは次の通り。

クライアント Stateless Apps Tasks OAuth 2.1
Claude Desktop 対応予定(preview有) 対応予定 検討中 対応
Claude Code CLI 対応予定 テキストfallback 対応予定 対応
Cursor 対応予定 未表明 未表明 対応
ChatGPT Codex Plugins 対応 独自UI 対応 対応
AWS MCP Server 既にGA対応 - 対応予定 IAM経由
Docker MCP Toolkit 対応進行中 - - 対応

公式に「即日対応」を表明しているのは主に商用サーバー側。クライアント(ChatGPT / Claude / Cursor)はRC期間中に段階的に取り込む形で、最終仕様確定の7/28前後でアップデートが集中する見込み。

商用MCPサーバーの動き

2026年6月時点で、公式に近い形でMCPサーバーを提供している企業は次の通り。商用利用したい場合の選択肢として整理しておく。

  • AWS: AWS MCP ServerがGA。DynamoDB / Aurora / Neptune公式対応
  • Azure: Azure MCP Serverが公開済み
  • Docker: Docker MCP Toolkitで300+コンテナ化サーバー
  • Brave Search MCP v2.x: ツール数を36→7に削減し、精度を上げた版がリリース

エンタープライズで導入する場合は、自前実装よりこれらの公式サーバーをベースに拡張する方が、RC対応の追従コストを抑えやすい。

開発現場での使い分け:直近の判断指針

「今すぐ動くか、7/28以降に動くか」――現場で迷うポイントだ。自分なら次のように判断する。

今すぐ動いた方がいいケース

今すぐ着手

  • スティッキーセッション運用で苦しんでいる
  • 長時間ジョブのMCPサーバーをこれから新規開発する
  • エンタープライズSSOへの統合要件がある
  • MCPサーバーをパブリック公開する予定

7/28以降でOK

  • 社内ローカル利用のみのMCPサーバー
  • シングルノードで完結している小規模サーバー
  • SDKの本番リリースを待ちたい慎重派
  • クライアントのRC対応を待つ必要がある

移行コストを抑えるパターン

現場感覚で、移行コストが最も低いのは「StatelessコアだけRC対応、Apps/Tasks/OAuthは段階導入」。Statelessは下位互換性が比較的高く、コードベースを大きく壊さずに済む。Apps以降は新規ツールから順次導入する流れが現実的。

RC移行で見落としがちな落とし穴

  • 監視・ログ基盤の指標見直し(セッション系を撤去)
  • レートリミットの粒度をリクエスト単位に再設計
  • クライアント側のキャッシュ無効化フローの定義
  • RC期間中はSDKがbreakingアップデートを含む可能性

関連記事で押さえておきたいテーマ

MCP本体の理解はMCPとは|Model Context Protocol完全解説を、サーバー選びはMCPサーバーおすすめ2026を、エージェント全体像はAIエージェントとは?仕組み・活用事例・始め方を合わせて読むと、RC対応の位置づけが立体的に理解できる。

まとめ:2026-07-28に向けて準備すべきこと

MCP 2026-07-28 RCの本質は「リモートMCPサーバーをHTTPの常識で動かせるようにした」こと。Statelessコア・Apps・Tasks・OAuthのいずれも、エンタープライズ運用で行き詰まっていたポイントを的確に潰している。

準備すべき優先順位は明確だ。まずStatelessコアの検証を1〜2週間以内に始める。これが終われば負荷分散の自由度が一気に上がる。次にOAuth対応の設計を着手し、Apps/Tasksは段階的に導入する。

この記事の要点

  • RCの中核はStatelessコア化。これだけで運用コストの景色が変わる
  • MCP AppsはUIを返せる新拡張、Tasksは長時間ジョブの非同期化
  • OAuth 2.1 / OIDC連携で、エンタープライズSSO統合のハードルが下がる
  • 最終仕様は2026-07-28。RC期間中にStateless移行までは進めておきたい
  • クライアント側の対応は7/28前後でアップデート集中の見込み

最後に一つ。RCで設計が変わっても、MCPの目的は変わらない――「AIアシスタントが閉じ込められたチャットの壁に、ドアを開けてやる仕組み」だ。RCはそのドアの開け方を、エンタープライズでも壊れずに使えるよう作り直しただけ。仕組みの本質を見失わずに、移行計画を立てたい。