Code Mode MCP サーバーは、任意の Model Context Protocol (MCP) クライアントが、自前のサンドボックスなしでモデルが書いたコードを使えるようにします。MCP サーバーはコード実行をツールインターフェースとして公開し、生成した JavaScript を分離された Worker で実行します。
Code Mode MCP サーバーには、次の 2 つのパターンがあります。
| パターン | MCP ツール | モデル向け API | 使うとき |
|---|---|---|---|
| 単一コードツール | code |
上流ツールごとの型付きメソッド | 管理しやすいツールセットを持つ MCP サーバーがすでにある場合 |
| Search and execute | search、execute |
OpenAPI ドキュメントとリクエスト関数 | 完全なスキーマをコンテキストに載せたくない大規模 API がある場合 |
どちらのパターンも、生成コードが操作を組み合わせ、中間結果をモデルコンテキストの外に保てます。違いは、モデルが利用可能な操作をどう発見するかです。
単一ツールパターンは、既存の MCP サーバーを codeMcpServer() でラップします。上流ツールを個別に公開する代わりに、サーバーは code ツール 1 つだけを公開します。
code ツールの説明には、すべての上流ツール向けに生成した TypeScript 定義が含まれます。モデルは codemode 名前空間に対して JavaScript を書きます。
async () => {
const projects = await codemode.list_projects({ status: "active" });
const tasks = [];
for (const project of projects) {
tasks.push(...(await codemode.list_tasks({ projectId: project.id })));
}
return tasks.filter((task) => task.status === "blocked");
};MCP クライアントは外側のツール呼び出しを 1 回行います。サンドボックス内では、コードが依存する上流呼び出しを行い、中間データを絞り込み、最終結果だけを返せます。
生成した型宣言が code ツールの説明に無理なく収まるときに、このパターンはよく機能します。モデルは MCP ツールを読み込むときに、それらの宣言を受け取ります。
このパターンの実装は、単一ツールの Code Mode MCP サーバーを構築する を参照してください。
大規模 API には数千の操作があることがあります。すべての操作を 1 つのツール説明に含めると、コンテキストを大きく消費します。search-and-execute パターンは、機能の発見と認証済み API 呼び出しを分けます。
サーバーは次の 2 つの MCP ツールを公開します。
searchは、OpenAPI ドキュメントに対して生成コードを実行します。タスクに必要な操作、パラメーター、スキーマだけを返します。executeは、認証済みのリクエスト関数付きで生成コードを実行します。選んだ操作を呼び出し、応答を組み合わせ、焦点を絞った結果を返せます。
モデルはまず、次のようなコードで search を呼び出します。
async () => {
const spec = await codemode.spec();
return Object.entries(spec.paths)
.filter(([path]) => path.includes("/rulesets"))
.map(([path, operations]) => ({
path,
methods: Object.keys(operations),
}));
};完全な OpenAPI ドキュメントはサンドボックス内に残ります。返された部分集合だけがモデルコンテキストに入ります。
操作を選んだあと、モデルは execute を呼び出します。
async () => {
const response = await codemode.request({
method: "GET",
path: `/zones/${zoneId}/rulesets`,
});
return response.result.map(({ id, name, phase }) => ({ id, name, phase }));
};認証はホストのリクエストコールバックに留まります。生成コードが受け取るのはリクエスト関数であり、資格情報ではありません。
Cloudflare API MCP サーバー は、このパターンで Cloudflare API を search と execute 経由に公開します。設計の意図とコンテキスト削減については、Code Mode: give agents an entire API in 1,000 tokens ↗ を参照してください。
このパターンの実装は、search and execute MCP サーバーを構築する を参照してください。
モデルが書いたコードは、分離された Worker で実行されます。外向きの直接ネットワークアクセスは、デフォルトでブロックされます。生成コードが外部システムに届くのは、上流の MCP ツールか、ホストが提供するリクエストコールバック経由だけです。
コード実行は認可の代わりにはなりません。副作用を適用する前に、上流ツールハンドラーまたはホストのリクエストコールバック内で、権限と必要な承認を強制します。ツール結果や OpenAPI ドキュメント経由で資格情報を公開しないでください。
既存の MCP サーバーが、モデルに必要な操作とスキーマをすでに定義しているときは codeMcpServer() を使います。大規模な OpenAPI カタログで段階的な発見と、固定のモデルコンテキストフットプリントが必要なときは openApiMcpServer() を使います。