Agents SDK v0.6.0: MCP用RPCトランスポート、オプションのOAuth、強化されたスキーマ変換、@cloudflare/ai-chatの修正
2026年2月25日
Agents SDKの最新リリースでは、同一Worker内でAgentとMcpAgentを定義し、RPC経由で接続できるようになりました。HTTPやネットワークオーバーヘッドは不要です。また、シンプルなMCP接続でOAuthをオプトインにし、本番ワークロード向けにスキーマコンバーターを強化し、@cloudflare/ai-chatの信頼性修正を多数提供します。
MCP用RPCトランスポート
HTTP URLの代わりにDurable Objectバインディングを使用して、同一Worker内でAgentをMcpAgentに接続できるようになりました。接続はCloudflareランタイム内で完全に処理され、ネットワークラウンドトリップやシリアライゼーションオーバーヘッドはありません。
Durable Objectネームスペースを直接addMcpServerに渡します:
import { Agent } from "agents";
export class MyAgent extends Agent {
async onStart() {
await this.addMcpServer("counter", env.MY_MCP);
await this.addMcpServer("counter", env.MY_MCP, {
props: { userId: "user-123", role: "admin" },
});
}
}
addMcpServerメソッドは、完全なTypeScriptオーバーロードを持つstring | DurableObjectNamespaceを第2パラメータとして受け入れるため、HTTPとRPCパスはタイプセーフで混在できません。
主要機能:
- ハイバネーションサポート — RPC接続はDurable Objectハイバネーションを自動的に生き残ります。バインディング名とpropsはストレージに永続化され、ウェイクアップ時に復元されます。これはHTTP MCP接続の動作と一致します。
- 重複排除 — 同じサーバー名で
addMcpServerを呼び出すと、重複を作成する代わりに既存の接続を返します。接続IDはハイバネーション復元を通じて安定しています。
- より小さな表面積 — RPCトランスポートの内部が書き直され、609行から245行に削減されました。
RPCServerTransportは手書きのチェックの代わりに、MCP SDKのJSONRPCMessageSchemaを検証に使用するようになりました。
注意: RPCトランスポートは実験的です。フィードバックに基づいてAPIが変更される可能性があります。更新についてはトラッキングissueを参照してください。
MCP接続のオプションOAuth
addMcpServer()は、すべての接続に対してOAuthプロバイダーを積極的に作成しなくなりました。認証を必要としないサーバーの場合、シンプルな呼び出しだけで十分です:
await this.addMcpServer("my-server", "https://mcp.example.com");
サーバーが401で応答した場合、SDKは明確なエラーを投げます:「このMCPサーバーはOAuth認証を必要とします。OAuthフローを有効にするには、addMcpServerオプションでcallbackHostを提供してください。」
ストレージからの復元フローも、コールバックURLの欠落を適切に処理し、非OAuthサーバーの認証プロバイダー作成をスキップします。
強化されたJSON SchemaからTypeScriptへのコンバーター
generateTypes()とgetAITools()で使用されるスキーマコンバーターは、以前本番環境でクラッシュを引き起こしていたエッジケースを処理するようになりました:
- 深度と循環参照ガード — 再帰的または深くネストされたスキーマでのスタックオーバーフローを防止
- $ref解決 — 内部JSONポインター(
#/definitions/...、#/$defs/...、#)をサポート
- タプルサポート —
prefixItems(JSON Schema 2020-12)と配列items(draft-07)
- OpenAPI 3.0 nullable: true — すべてのスキーマブランチでサポート
- ツールごとのエラー分離 — 1つの不正なスキーマが
generateTypes()やgetAITools()の完全なパイプラインをクラッシュさせることができません
- inputSchemaフォールバックの欠落 —
getAITools()は例外を投げる代わりに{ type: "object" }にフォールバック
@cloudflare/ai-chatの修正
- ツール拒否フロー — 拒否されたツール承認(
approved: false)は、tool_resultを持つoutput-deniedに遷移し、Anthropicプロバイダーの互換性を修正します。カスタム拒否メッセージはstate: "output-error"とerrorTextでサポートされます。
- 中止/キャンセルサポート — ストリーミング応答は、中止シグナルが発火したときにリーダーループを適切にキャンセルし、クライアントにdoneシグナルを送信します。
- 重複メッセージ永続化 —
persistMessages()は、コンテンツと順序でアシスタントメッセージを調整し、クライアントが完全な履歴を再送信したときの重複行を防止します。
- OnChatMessageOptionsのrequestId — ハンドラーは、ストリーム前の失敗に対して適切にタグ付けされたエラー応答を送信できます。
- redacted_thinking保持 — メッセージサニタイザーはAnthropic redacted_thinkingブロックを削除しなくなりました。
- /get-messages信頼性 — エンドポイント処理がプロトタイプの
onRequest()オーバーライドからコンストラクターラッパーに移動され、ユーザーがsuper.onRequest()を呼び出さずにonRequestをオーバーライドしても動作します。
- クライアントツールAPIの非推奨解除 —
createToolsFromClientSchemas、clientTools、AITool、extractClientToolSchemas、およびuseAgentChatのtoolsオプションは、ツールが実行時に動的に定義されるSDKユースケース用に復元されました。
- jsonSchema初期化 —
onChatMessageでgetAITools()を呼び出すときのjsonSchema not initializedエラーを修正。
アップグレード
最新バージョンに更新するには:
npm i agents@latest @cloudflare/ai-chat@latest