概要
Agents SDK v0.20.0 は MCP 2026-07-28 リリース候補へのクライアントとサーバーのサポートを追加しました。Workers は MCP トランスポートセッションや Durable Object を使わずにツール、プロンプト、リソース、elicitation を提供できます。Agents は MCP 2026-07-28 サーバーと既存のレガシーサーバーの両方に接続できます。
クライアントサポート
- MCP クライアントマネージャは現在
@modelcontextprotocol/client を使用します。
- 各接続で
server/discover により MCP 2026-07-28 の対応をプローブします。サーバーがステートレスプロトコルをサポートしない場合、クライアントは同一接続上でレガシーの initialize ハンドシェイクにフォールバックします。
- 既存の
addMcpServer 呼び出しはプロトコルバージョン設定やプロトコル世代ごとの別クライアントを必要としません。
- ステートレスリクエストでは、elicitation は
input_required を使いマルチラウンドトリップリクエスト(MRTR)に対応します。レガシーパスはプッシュされたリクエストに対して同じフォームと URL ハンドラを使用します。
- SDK は入力を収集し、元の操作をリトライし、元の
callTool、getPrompt、または readResource のプロミスを最終結果で解決します。
- OAuth コールバックは v2 SDK を通じて発行者メタデータを検証します。Discovery 状態と発行者に紐づく資格情報はブラウザリダイレクトや Durable Object のハイバネーション間で永続化されます。
ステートレスサーバーの実行
createMcpHandler は @modelcontextprotocol/server からのサーバーを返すファクトリを受け取れるようになりました。ファクトリは各リクエストごとに分離されたサーバーを作成します。例:
import { McpServer } from "@modelcontextprotocol/server" ;
import { createMcpHandler } from "agents/mcp/server" ;
function createServer () {
return new McpServer ({ name: "example" , version: "1.0.0"});
}
export default {
fetch ( request , env , ctx ) {
return createMcpHandler (createServer)(request, env, ctx);
},
};
別の例(型注釈付き):
import { McpServer } from "@modelcontextprotocol/server" ;
import { createMcpHandler } from "agents/mcp/server" ;
function createServer () {
return new McpServer ({ name: "example" , version: "1.0.0" });
}
export default {
fetch ( request , env , ctx ) {
return createMcpHandler (createServer)(request, env, ctx);
},
} satisfies ExportedHandler ;
agents/mcp/server の分離されたエントリは McpAgent、WorkerTransport、MCP クライアントトランスポート、および SDK v1 モジュールをステートレスサーバーバンドルから除外します。
- Workers ラッパーは現在のブラウザ Origin を検証し、信頼された Origin ミドルウェアへの明示的な委任をサポートし、リクエストハンドリングと型付きの変更通知を公開します。
後方互換性
- 同一の
createMcpHandler(createServer)(request, env, ctx) ルートは、MCP 2026-07-28 クライアントとステートレスリクエストを使うレガシークライアントの両方に対応します。通常のツール、プロンプト、リソースに対して個別のルートやツール定義は不要です。
McpAgent は非推奨(deprecated)かつ機能凍結です。既存の McpAgent サーバーはできるだけ早くステートレスハンドラへ移行してください。
- サーバーがプロトコルセッション、RPC、サーバーからクライアントへのプッシュリクエスト、独立したストリーム、またはリプレイに依存する場合、マイグレーションガイドを参照してステートレスの同等機能を設計し、クライアント移行中は両方のルートを併行して実行してください。
既存の SDK v1 サーバーの移行
-
Agents SDK をアップグレードします:
npm yarn pnpm bun npm i agents@latest yarn add agents@latest pnpm add agents@latest bun add agents@latest
-
既存の SDK v1 サーバー定義を SDK v2 ファクトリに移し、createMcpHandler で提供します。ハンドラのデフォルトのレガシー互換性により、ほとんどのステートレス展開はルートを1つだけで済みます。
-
既存の McpAgent サーバーがまだセッション依存の機能を必要とする場合、その横にステートレスパスを追加します。isLegacyRequest() を使ってレガシーのトラフィックのみ既存ルートに送る例:
import { isLegacyRequest } from "@modelcontextprotocol/server" ;
import { createMcpHandler } from "agents/mcp/server" ;
import { MyMcpAgent } from "./legacy-server" ;
import { createServer } from "./server" ;
const stateless = createMcpHandler (createServer, { route: "/mcp" , legacy: "reject" , });
const legacy = MyMcpAgent. serve ( "/mcp" );
export default {
async fetch ( request , env , ctx ) {
if ( await isLegacyRequest (request)) {
return legacy. fetch (request, env, ctx);
}
return stateless (request, env, ctx);
},
};
-
型注釈例:
import { isLegacyRequest } from "@modelcontextprotocol/server" ;
import { createMcpHandler } from "agents/mcp/server" ;
import { MyMcpAgent } from "./legacy-server" ;
import { createServer } from "./server" ;
const stateless = createMcpHandler (createServer, { route: "/mcp" , legacy: "reject" , });
const legacy = MyMcpAgent. serve ( "/mcp" );
export default {
async fetch ( request : Request , env : Env , ctx : ExecutionContext ) {
if ( await isLegacyRequest (request)) {
return legacy. fetch (request, env, ctx);
}
return stateless (request, env, ctx);
},
} satisfies ExportedHandler<Env>;
- 残るセッション依存機能を移行し、既存セッションのドレインを許可した後にレガシールートを削除してください。
- パッケージ変更、互換性の制限、ロールアウト手順については「Migrate to MCP SDK v2」を参照してください。
v0.20.0 の非推奨(Deprecated)事項
以下の Agents SDK API がこのリリースで非推奨になりました。
| Deprecated API | 置換 | ステータス |
|---|
McpAgent | SDK v2 ファクトリと createMcpHandler を使ってステートレスサーバーに移行します。状態ful 機能を削除する前にマイグレーションガイドを参照してください。 | 機能凍結。削除バージョンは未定。 |
createMcpHandler(v1Server, options) | サーバーを SDK v2 ファクトリに移し createMcpHandler(factory, options) を呼び出してください。セッション依存の機能については一時的な橋渡しとして createLegacyMcpHandler のみを使ってください。 | 次のメジャーリリースで削除予定。 |
MCPClientManager.callTool(params, resultSchema, options) と withX402Client 相当のオーバーロード | callTool(params, options) または callTool(confirm, params, options) を使用してください。 | 互換性のためのオーバーロード。削除バージョンは未定。 |
- MCP 2026-07-28 草案では、Roots、Sampling、Logging、旧 HTTP+SSE トランスポート、および Dynamic Client Registration の個別 deprecate も行われています。