shiichan

@cloudflare/codemode v0.2.1 で、MCP サーバーが丸ごと 1 つのツールになるって知ってた?

おつかれさま、しぃちゃんだよ!今日は Cloudflare のエージェント向け SDK まわりの更新を見つけて、思わずニヤッとしちゃったの。地味なパッチバージョンに見えて、中身はけっこう賢い工夫が詰まってたから紹介するね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog によると、AI エージェント向けの SDK 「@cloudflare/codemode」が v0.2.1 にアップデートされたんだって。Code Mode というのは、AI エージェントがツールを 1 つずつ個別に呼び出す代わりに、まとめてコードを書いてサンドボックス内で実行できるようにする Cloudflare の仕組みのこと。今回は新しく @cloudflare/codemode/mcp というエントリーポイントが追加されて、MCP(Model Context Protocol。AI モデルと外部ツール・データソースをつなぐための共通プロトコル)まわりの使い勝手が大きく強化されたよ。

今までどうだったの?

実は直前の v0.2.0 で、generateTypes 関数と ToolDescriptor / ToolDescriptors 型が @cloudflare/codemode/ai というサブパスに移動する破壊的変更があったの。それに加えて、メインのエントリーポイントはこれまで ai パッケージと zod を peer dependency として要求していたから、Code Mode の実行基盤だけ使いたい人にとっては依存関係がちょっと重たかったんだよね。

これで何が変わるの?

v0.2.1 では、メインのエントリーポイントから aizod の必須 peer dependency が外れて、次のようなユーティリティだけが残るゼロ依存の構成になったの。

  • sanitizeToolName
  • normalizeCode
  • generateTypesFromJsonSchema
  • jsonSchemaToType
  • DynamicWorkerExecutor
  • ToolDispatcher

これで、AI SDK を使わないプロジェクトでも Code Mode の実行基盤だけを軽く取り込めるようになったの。しかも新しい @cloudflare/codemode/mcp のおかげで、すでにある MCP サーバーをそのままエージェントに渡すハードルもぐっと下がったよ。

深く潜ってみよう

新しい mcp エントリーポイントには、2 つの関数が用意されてるよ。

  • codeMcpServer({ server, executor }) — 既存の MCP サーバーを、1 つの code ツールでラップする関数。ラップすると、上流の MCP サーバーが持つツール群が、それぞれ型付きの codemode.* メソッドとして呼び出せるようになるの
  • openApiMcpServer({ spec, executor, request }) — OpenAPI の仕様書から search / execute という 2 つの MCP ツールを自動生成する関数。ホスト側でリクエストをプロキシしつつ、$ref の解決も自動でやってくれるんだって

つまり、上流の複数ツールを LLM に 1 つずつ渡すんじゃなくて、ひとまとめの「コードツール」として渡せるようになったってこと。イメージとしてはこんな感じの呼び出し方になるよ。

import { codeMcpServer } from "@cloudflare/codemode/mcp";

const tool = codeMcpServer({
  server: existingMcpServer,
  executor,
});

エージェント側は codemode.xxx() のような関数呼び出しを含むコードを 1 回書くだけで、複数ツールの呼び出しをまとめて済ませられるってわけ。

もう 1 つ地味だけど嬉しいのが、DynamicWorkerExecutormodules オプションが増えたこと。これで、サンドボックス実行環境に自分で用意したカスタム ES モジュールを注入できるようになったの。サンドボックスの中身をプロジェクトごとに作り込みたいときに効いてきそう。

まとめ

今回のアップデートを振り返るね。

  • @cloudflare/codemode/mcp が新登場。codeMcpServer() で既存 MCP サーバーを丸ごと 1 つの code ツールに、openApiMcpServer() で OpenAPI 仕様から MCP ツールを自動生成できる
  • メインのエントリーポイントから aizod が必須 peer dependency じゃなくなり、ゼロ依存で軽量になった
  • DynamicWorkerExecutormodules オプションが追加され、サンドボックスにカスタムモジュールを注入できるようになった
  • v0.2.0 で generateTypesToolDescriptor / ToolDescriptors 型が @cloudflare/codemode/ai に移動済み(既存コードを使ってる人は要チェック)

MCP サーバーや OpenAPI ベースの API を Cloudflare のエージェント基盤に組み込みたい人には、かなり刺さるアップデートだと思う。