0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCPがステートレス化、AIエージェント基盤の水平スケーリング対応が可能に

0
Posted at

はじめに

2026年7月28日、Model Context Protocol (MCP) の新仕様が公開されました。Google Developers Blog の記事「Scaling AI Agent Infrastructure with the MCP Stateless updates」によると、今回の変更の最大のポイントは MCP のコアが完全にステートレス化された ことです。

これまで MCP サーバー / クライアントの実装は、セッション状態をサーバー側に保持する「ステートフル」な前提で作られることが多く、これがクラウドネイティブな環境でのスケーリングを難しくしていました。今回の仕様更新により、水平スケーリング・サーバーレスデプロイ・標準的なラウンドロビン負荷分散が可能になり、AI エージェント基盤を本番運用する上での大きな障壁が取り除かれます。

📌 影響を受ける人

  • 自前で MCP サーバー / クライアントを実装している開発者
  • MCP を使ったエージェント基盤をクラウド上でスケールさせたい方
  • Python / TypeScript / Go / C# で MCP SDK を利用しているプロジェクトの担当者

変更の全体像

今回の変更は、MCP のアーキテクチャそのものを「ステートフル」から「ステートレス」へと転換するものです。全体像を図にすると以下のようになります。

従来のステートフルコアでは、特定のセッションを特定のサーバーインスタンスに固定する必要があり、スケールアウトやサーバーレス展開との相性が悪いという課題がありました。ステートレスコア化によって、どのリクエストをどのインスタンスが処理しても良くなり、一般的な Web バックエンドと同様のスケーリング手法がそのまま適用できるようになります。

変更内容

今回のアップデートで導入された主な変更点は次の5つです。

# 変更点 概要
1 ステートレスコア化 セッション状態をサーバー側に持たない設計に変更。水平スケーリング・サーバーレス展開・ラウンドロビン負荷分散が可能に
2 標準化 HTTP ヘッダー ディープパケットインスペクション不要で効率的なルーティングを実現
3 キャッシュ制御機構 レスポンスのキャッシュ可否・有効期限などを標準的な方法で制御可能に
4 Multi Round-Trip Requests (MRTR) コネクションをブロックせずに対話的処理・長時間実行タスクを扱える仕組み
5 ベータ SDK 提供 Python / TypeScript / Go / C# 向けに移行用の beta SDK が公開

特に注目すべきは MRTR (Multi Round-Trip Requests) です。従来はコネクションを張ったままにして長時間タスクの完了を待つ実装になりがちでしたが、MRTR によって「リクエストを分割して複数回のやり取りで完結させる」ことが標準化されました。これにより、ロードバランサーやサーバーレス環境でのタイムアウト制約に縛られずに、対話的なエージェント処理や長時間実行タスクを実装しやすくなります。

⚠️ Breaking Change
既存のステートフル前提で構築された MCP サーバー / クライアント実装は、そのままでは新仕様と互換性がありません。セッション状態をサーバーのメモリ内で保持しているようなコードは、移行作業が必要です。

影響と対応

誰が対応する必要があるか

  • 自前で MCP サーバーを実装している場合: セッション状態の保持方法を見直し、ステートレスな設計(外部ストア利用や、リクエストごとに必要な情報を明示的にやり取りする方式)へ移行する必要があります。
  • MCP クライアントを実装している場合: 新しい標準 HTTP ヘッダーや MRTR に対応したリクエスト/レスポンスの扱いへの追従が求められます。
  • サードパーティの MCP サーバーを利用しているだけの場合: 直接的な実装変更は不要なケースが多いですが、利用しているサーバーが新仕様に対応しているか、稼働状況の変化がないか確認しておくと安心です。

対応のステップ

💡 Tips
移行は一度に全て行う必要はありません。まずは Python / TypeScript / Go / C# いずれかの beta SDK を導入し、開発環境でステートレス動作を検証してから、段階的に本番のロードバランシング構成へ適用するのが安全です。

コード例

ステートフル実装とステートレス実装の考え方の違いを、簡易的な TypeScript の擬似コードで比較します(beta SDK の実際の API 名称は今後変わる可能性があるため、概念的な例として参照してください)。

Before(ステートフル実装のイメージ)

// セッション状態をサーバーのメモリ内に保持
const sessions = new Map<string, SessionState>();

server.on("request", (req) => {
  const session = sessions.get(req.sessionId) ?? createSession();
  sessions.set(req.sessionId, session);

  // このサーバーインスタンスが同一セッションを
  // 継続して処理し続けることが前提
  return handleWithState(session, req);
});

このような実装では、同じセッションのリクエストは必ず同じサーバーインスタンスに届く必要があり、素朴なラウンドロビン負荷分散を導入すると状態が失われてしまいます。

After(ステートレス実装のイメージ)

server.on("request", (req) => {
  // 状態はリクエストに含まれる情報や外部ストアから都度取得
  const context = resolveContextFromRequest(req);

  // MRTRにより、長時間タスクは複数回のラウンドトリップに分割
  if (req.requiresMultiRoundTrip) {
    return handleAsMultiRoundTrip(context, req);
  }

  return handleStateless(context, req);
});

ステートレス化により、どのインスタンスがリクエストを受けても処理を継続できるため、標準的なラウンドロビン負荷分散やサーバーレス環境(リクエストごとにインスタンスが起動・終了する環境)でも問題なく動作します。

まとめ

  • MCP の 2026-07-28 仕様で、コアアーキテクチャが ステートフルからステートレスへ 転換された
  • これにより 水平スケーリング・サーバーレス展開・ラウンドロビン負荷分散 が可能になった
  • 標準化された HTTP ヘッダー によるルーティング、キャッシュ制御機構MRTR(長時間タスク向けの複数ラウンドトリップ) が新たに導入された
  • Python / TypeScript / Go / C# 向けの beta SDK が提供され、既存のステートフル実装は移行対応が必要
  • 自前で MCP サーバー / クライアントを構築している場合は、早めに beta SDK を試し、ステートレス設計への移行計画を立てることを推奨します

AI エージェント基盤を本番環境でスケールさせたいと考えているチームにとって、今回の MCP のステートレス化は見逃せないアップデートです。既存実装への影響範囲を洗い出し、計画的に移行を進めましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?