---
title: @cloudflare/codemode v0.2.1: MCP barrel export, zero-dependency main entry point, and custom sandbox modules
description: Code Mode v0.2.0–v0.2.1 adds a new @cloudflare/codemode/mcp export with codeMcpServer and openApiMcpServer, makes the main entry point dependency-free, and lets you inject custom modules into the sandbox.
image: https://developers.cloudflare.com/changelog-preview.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://developers.cloudflare.com/changelog/llms.txt  
> Use this file to discover all available pages before exploring further. 

[Skip to content](#%5Ftop) 

# Changelog

New updates and improvements at Cloudflare.

[ Subscribe to RSS ](https://developers.cloudflare.com/changelog/rss/index.xml) [ View RSS feeds ](https://developers.cloudflare.com/fundamentals/new-features/available-rss-feeds/) 

![hero image](https://developers.cloudflare.com/_astro/hero.CVYJHPAd_26AMqX.svg) 

[ ← Back to all posts ](https://developers.cloudflare.com/changelog/) 

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

Mar 17, 2026 

[ Agents ](https://developers.cloudflare.com/agents/)[ Workers ](https://developers.cloudflare.com/workers/) 

The latest releases of [@cloudflare/codemode ↗](https://www.npmjs.com/package/@cloudflare/codemode) add a new MCP barrel export, remove `ai` and `zod` as required peer dependencies from the main entry point, and give you more control over the sandbox.

#### New `@cloudflare/codemode/mcp` export

A new `@cloudflare/codemode/mcp` entry point provides two functions that wrap MCP servers with Code Mode:

* **`codeMcpServer({ server, executor })`** — wraps an existing MCP server with a single `code` tool where each upstream tool becomes a typed `codemode.*` method.
* **`openApiMcpServer({ spec, executor, request })`** — creates `search` and `execute` MCP tools from an OpenAPI spec with host-side request proxying and automatic `$ref` resolution.

* [  JavaScript ](#tab-panel-2651)
* [  TypeScript ](#tab-panel-2652)

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 codeconst 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 codeconst server = await codeMcpServer({ server: upstreamMcp, executor });
```

#### Zero-dependency main entry point

**Breaking change in v0.2.0:** `generateTypes` and the `ToolDescriptor` / `ToolDescriptors` types have moved to `@cloudflare/codemode/ai`:

* [  JavaScript ](#tab-panel-2649)
* [  TypeScript ](#tab-panel-2650)

JavaScript

```
// Beforeimport { generateTypes } from "@cloudflare/codemode";
// Afterimport { generateTypes } from "@cloudflare/codemode/ai";
```

TypeScript

```
// Beforeimport { generateTypes } from "@cloudflare/codemode";
// Afterimport { generateTypes } from "@cloudflare/codemode/ai";
```

The main entry point (`@cloudflare/codemode`) no longer requires the `ai` or `zod` peer dependencies. It now exports:

| Export                      | Description                                                 |
| --------------------------- | ----------------------------------------------------------- |
| sanitizeToolName            | Sanitize tool names into valid JS identifiers               |
| normalizeCode               | Normalize LLM-generated code into async arrow functions     |
| generateTypesFromJsonSchema | Generate TypeScript type definitions from plain JSON Schema |
| jsonSchemaToType            | Convert a single JSON Schema to a TypeScript type string    |
| DynamicWorkerExecutor       | Sandboxed code execution via Dynamic Worker Loader          |
| ToolDispatcher              | RPC target for dispatching tool calls from sandbox to host  |

The `ai` and `zod` peer dependencies are now optional — only required when importing from `@cloudflare/codemode/ai`.

#### Custom sandbox modules

`DynamicWorkerExecutor` now accepts an optional `modules` option to inject custom ES modules into the sandbox:

* [  JavaScript ](#tab-panel-2653)
* [  TypeScript ](#tab-panel-2654)

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"
```

#### Internal normalization and sanitization

`DynamicWorkerExecutor` now normalizes code and sanitizes tool names internally. You no longer need to call `normalizeCode()` or `sanitizeToolName()` before passing code and functions to `execute()`.

#### Upgrade

Terminal window

```
npm i @cloudflare/codemode@latest
```

See the [Code Mode documentation](https://developers.cloudflare.com/agents/tools/codemode/) for the full API reference.

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://developers.cloudflare.com/changelog/post/2026-03-17-codemode-sdk-v021/#page","headline":"@cloudflare/codemode v0.2.1: MCP barrel export, zero-dependency main entry point, and custom sandbox modules · Changelog","description":"Code Mode v0.2.0–v0.2.1 adds a new @cloudflare/codemode/mcp export with codeMcpServer and openApiMcpServer, makes the main entry point dependency-free, and lets you inject custom modules into the sandbox.","url":"https://developers.cloudflare.com/changelog/post/2026-03-17-codemode-sdk-v021/","inLanguage":"en","image":"https://developers.cloudflare.com/changelog-preview.png","dateModified":"2026-03-17","datePublished":"2026-03-17","publisher":{"@type":"Organization","name":"Cloudflare","url":"https://www.cloudflare.com/"},"isPartOf":{"@type":"WebSite","@id":"https://developers.cloudflare.com/#website","name":"Cloudflare Docs","url":"https://developers.cloudflare.com/"}}
```
