OpenAICloudflare Developer PlatformMar 17, 2026, 12:00 AM

Agents, Workers - @cloudflare/codemode v0.2.1: MCP barrel export, zero-dependency main entry point, and custom sandbox modules

A condensed section focused on the key takeaways first.

Original Post

Quick Digest

Summary

A condensed section focused on the key takeaways first.

openaienmodel: gpt-5-mini-2025-08-07

@cloudflare/codemode v0.2.1 — MCP export, zero-dep main entry, and sandbox modules

Key Points

  • New @cloudflare/codemode/mcp export
  • Main entry point no longer requires ai or zod
  • DynamicWorkerExecutor supports custom sandbox modules

Summary

@cloudflare/codemode v0.2.1 introduces a dedicated MCP barrel export, removes ai/zod as required peer dependencies from the main package, and adds finer control over sandboxed execution via DynamicWorkerExecutor.

Key Points

  • New @cloudflare/codemode/mcp export

    • codeMcpServer({ server, executor }) — wraps an existing MCP server so each upstream tool is exposed as a typed codemode.* method.
    • openApiMcpServer({ spec, executor, request }) — generates search/execute MCP tools from an OpenAPI spec with host-side request proxying and automatic $ref resolution.
  • Zero-dependency main entry point

    • The main package (@cloudflare/codemode) no longer requires ai or zod as peer dependencies; those are only required when importing @cloudflare/codemode/ai.
    • Breaking change (since v0.2.0): generateTypes and related ToolDescriptor types were moved to @cloudflare/codemode/ai. Update imports accordingly.
  • Sandbox and execution improvements

    • DynamicWorkerExecutor accepts a modules option to inject arbitrary ES modules into the sandbox:
const executor = new DynamicWorkerExecutor({
  loader: env.LOADER,
  modules: { "utils.js": `export function add(a, b) { return a + b; }` },
});
// Inside the sandbox: import { add } from "utils.js"
  • The executor now normalizes code and sanitizes tool names internally; you no longer need to call normalizeCode() or sanitizeToolName() before execute().

Migration notes

  • Move generateTypes imports:

    • Before: import { generateTypes } from "@cloudflare/codemode"
    • After: import { generateTypes } from "@cloudflare/codemode/ai"
  • Upgrade command: npm i @cloudflare/codemode@latest

See the Code Mode documentation for full API details and examples.

Full Translation

Translations

A translation section that keeps the flow of the original article.

openaijamodel: gpt-5-mini-2025-08-07

Agents、Workers - @cloudflare/codemode v0.2.1: MCP バレルエクスポート、ゼロ依存のメインエントリーポイント、カスタムサンドボックスモジュール

Changelog

Cloudflare の新しい更新と改善。RSS を購読 View RSS feeds ← Back to all posts

@cloudflare/codemode v0.2.1: MCP バレルエクスポートの追加、メインエントリーポイントからの aizod の必須ピア依存解除、サンドボックスの制御強化

公開日: 2026-03-17

カテゴリ: Agents / Workers

最新の @cloudflare/codemode リリースは、MCP 用の新しいエクスポート、メインエントリーポイントのゼロ依存化(aizod を必須にしない)、およびサンドボックスに対するより詳細な制御を提供します。

新しい @cloudflare/codemode/mcp エクスポート

@cloudflare/codemode/mcp の新しいエントリーポイントは、Code Mode で MCP サーバーをラップするための2つの関数を提供します:

  • codeMcpServer({ server, executor }) — 既存の MCP サーバーをラップし、上流の各ツールを型付けされた codemode.* メソッドとして扱える単一のコードツールに変換します。
  • openApiMcpServer({ spec, executor, request }) — OpenAPI スペックから検索と実行用の MCP ツールを作成し、ホスト側のリクエストプロキシングと自動 $ref 解決を行います。

JavaScript

import { codeMcpServer } from "@cloudflare/codemode/mcp" ;
import { DynamicWorkerExecutor } from "@cloudflare/codemode" ;
const executor = new DynamicWorkerExecutor ( { loader : env . LOADER } ) ;
// Wrap an existing MCP server — all its tools become
// typed methods the LLM can call from generated code
const server = await codeMcpServer ( { server : upstreamMcp , executor } ) ;

TypeScript

import { codeMcpServer } from "@cloudflare/codemode/mcp" ;
import { DynamicWorkerExecutor } from "@cloudflare/codemode" ;
const executor = new DynamicWorkerExecutor ( { loader : env . LOADER } ) ;
// Wrap an existing MCP server — all its tools become
// typed methods the LLM can call from generated code
const server = await codeMcpServer ( { server : upstreamMcp , executor } ) ;

ゼロ依存のメインエントリーポイント

v0.2.0 の破壊的変更: generateTypesToolDescriptor / ToolDescriptors 型は @cloudflare/codemode/ai に移動しました。

変更例

JavaScript / TypeScript

// Before
import { generateTypes } from "@cloudflare/codemode" ;
// After
import { generateTypes } from "@cloudflare/codemode/ai" ;

メインエントリーポイント(@cloudflare/codemode)はもはや aizod を必須のピア依存関係として要求しません。代わりに以下をエクスポートします:

  • sanitizeToolName — ツール名を有効な JS 識別子にサニタイズします
  • normalizeCode — LLM が生成したコードを async arrow function に正規化します
  • generateTypesFromJsonSchema — プレーンな JSON Schema から TypeScript 型定義を生成します
  • jsonSchemaToType — 単一の JSON Schema を TypeScript 型文字列に変換します
  • DynamicWorkerExecutor — Sandboxed コード実行(Dynamic Worker Loader 経由)
  • ToolDispatcher — サンドボックスからホストへツール呼び出しをディスパッチする RPC ターゲット

aizod のピア依存関係はオプションになりました — これらは @cloudflare/codemode/ai からインポートする場合にのみ必要です。

カスタムサンドボックスモジュール

DynamicWorkerExecutor はオプションの modules オプションを受け取り、カスタム ES モジュールをサンドボックスに注入できます。

JavaScript

const executor = new DynamicWorkerExecutor ( { loader : env . LOADER , modules : { "utils.js" : `export function add(a, b) { return a + b; }` , }, } ) ;
// Sandbox code can then:
// import { add } from "utils.js"

TypeScript

const executor = new DynamicWorkerExecutor ( { loader : env . LOADER , modules : { "utils.js" : `export function add(a, b) { return a + b; }` , }, } ) ;
// Sandbox code can then:
// import { add } from "utils.js"

この機能により、サンドボックス内のコードからカスタムユーティリティを通常の ES モジュールとしてインポートして利用できます。

内部での正規化とサニタイズ

DynamicWorkerExecutor はコードの正規化とツール名のサニタイズを内部で行うようになりました。これにより、normalizeCode()sanitizeToolName() を事前に呼び出してから execute() に渡す必要はありません。

アップグレード

ターミナルで次を実行してアップグレードしてください:

npm i @cloudflare/codemode@latest

完全な API リファレンスは Code Mode ドキュメントを参照してください。