Cloudflare Code Mode MCP 深度研究报告
2026-02-21
一句话总结
Cloudflare 发布了一种叫 Code Mode 的技术,用 2 个工具(search() + execute())替代 2,500+ 个独立工具定义,把整个 Cloudflare API 的 MCP 接入压缩到 ~1,000 tokens(传统方式需要 117 万 tokens)。
🧠 核心问题
MCP(Model Context Protocol)已成为 AI agent 调用外部工具的标准。但有一个根本矛盾:
> Agent 需要很多工具才能干活,但每增加一个工具就会吃掉 context window,留给实际任务的空间就更少。
Cloudflare API 有 2,500+ 端点,完整 OpenAPI spec 是 200 万 tokens。即使做成最精简的 MCP 工具(只保留必填参数),仍需 24.4 万 tokens — 已经超过大多数模型的整个 context window。
🔧 Code Mode 方案
核心思路
不把每个 API 操作描述成独立工具,而是让模型写代码来操作一个 typed SDK,然后在安全沙箱中执行。
只暴露 2 个工具
search(code) — 发现能力
- 模型写 JavaScript 查询 OpenAPI spec 对象
- spec 中所有
$ref已预解析为内联 - 可以按产品、路径、标签等过滤端点
- 完整 spec 从不进入模型 context
execute(code) — 执行操作
- 模型写 JavaScript 调用
cloudflare.request() - 可以处理分页、检查响应、链式调用
- 多步操作在一次执行中完成
Token 对比
| 方案 | 工具数 | Token 消耗 | 占 200K context |
|---|---|---|---|
| 原始 OpenAPI spec 塞进 prompt | — | ~2,000,000 | 977% |
| 原生 MCP(完整 schema) | 2,594 | 1,170,523 | 585% |
| 原生 MCP(最小化,只必填参数) | 2,594 | 244,047 | 122% |
| **Code Mode** | **2** | **1,069** | **0.5%** |
Token 减少 99.9%,且是固定开销 — 无论 API 有多少端点。
🏗️ 技术实现
沙箱执行
代码在 Dynamic Worker Loader 隔离区(V8 isolate)中运行:
- 无文件系统访问
- 无环境变量泄漏风险
- 默认禁止外部 fetch(可通过 outbound fetch handler 显式控制)
- 轻量级,不是 Docker 容器
认证
- OAuth 2.1:基于 Workers OAuth Provider,用户连接时选择授权范围
- API Token:支持 user token 和 account token,适合 CI/CD
- Agent 只获得用户显式授予的能力
渐进式发现(Progressive Discovery)
这是 Code Mode 最精妙的设计。Agent 不需要预先知道所有 API 能力:
1. 先用 search() 探索 spec,写代码过滤出需要的端点
2. 还可以深入查看某个端点的 schema(参数类型、枚举值等)
3. 确认后用 execute() 执行
整个过程类似人类开发者查 API 文档 → 写代码调用的流程。
📊 实际例子:DDoS 防护配置
博客用了一个完整例子:"protect my origin from DDoS attacks"
1. 搜索端点 → 写 JS 过滤出 WAF 和 ruleset 相关路径,从 2,500 个端点缩小到 10 个
2. 查看 schema → 发现 phase 枚举包含 ddos_l7、http_request_firewall_managed 等
3. 执行 API → 列出现有 ruleset,发现已有 DDoS 和 WAF 托管规则
4. 链式调用 → 一次 execute 中同时拉取 DDoS 和 WAF 配置
总共只用了 4 次工具调用,完成了从发现到执行的全流程。
🔄 与其他方案对比
博客明确对比了几种 context 压缩方案:
| 方案 | 代表 | 优势 | 局限 |
|---|---|---|---|
| **客户端 Code Mode** | Goose, Claude SDK | 模型直接写 TypeScript | 需要客户端有安全沙箱 |
| **CLI 方式** | OpenClaw + MCPorter | CLI 自文档化,渐进发现 | 需要 shell 环境,攻击面大 |
| **动态工具搜索** | Claude Code | 只加载相关工具子集 | 需维护搜索函数,匹配的工具仍消耗 token |
| **服务端 Code Mode** | **本文方案** | 固定 token、无需客户端改造、内置沙箱 | 需要服务端支持 |
文章结论:服务端 Code Mode 综合了各方案优势 — 固定 token 开销、客户端无需改造、渐进发现内置、沙箱隔离执行。
> 值得注意:文中提到了 OpenClaw,说 OpenClaw 用 MCPorter 把 MCP server 转成 CLI 给 agent 用,属于"CLI 方式"的代表。
🔮 未来方向
MCP Server Portals — 把多个 MCP server 组合在一个网关后面:
- 统一认证和访问控制
- 所有 server 共享 Code Mode 的渐进发现
- 无论背后接了多少服务,agent 端的 token 开销固定
这解决了"单个 API 的 token 问题解决了,但 agent 要连多个服务怎么办"的问题。
💡 与我们的关联
直接可用
我们用 Cloudflare(R2 存储 + Pages 部署 + DNS),可以直接配置这个 MCP server:
{
"mcpServers": {
"cloudflare-api": {
"url": "https://mcp.cloudflare.com/mcp"
}
}
}
以后管理 DNS、R2、Pages 部署可以直接让 agent 操作,不用 SSH 到服务器跑 wrangler。
设计启发
Code Mode 的思路可以泛化:
1. 任何大型 API 都可以用 search() + execute() 两个工具替代数百个独立工具
2. OpenAPI spec 不进 context — 只通过代码查询,结果才进 context
3. 沙箱执行 — V8 isolate 比 Docker 更轻量,比裸 shell 更安全
4. 这个模式本质上是把 agent 从"选工具"变成了"写代码",对强模型(Claude/GPT-4)很自然
OpenClaw 被提及
博客把 OpenClaw 的 MCPorter/CLI 方式列为竞争方案之一,说明 Cloudflare 团队在研究 agent 工具调用时认真考察了 OpenClaw 的做法。
📎 参考链接
- 博客原文:
- GitHub 仓库:
- Code Mode SDK:
- Code Mode 初版博客 (2025-09):
- Anthropic 同类方案:
- MCP Server Portals:
- Dynamic Worker Loader 文档: