跳转到内容
Guide

Cloudflare Code Mode MCP:停止支付 100 万代币来描述您的工具

| 7 min read

Cloudflare 通过让代理针对类型化 API 表面编写代码,将 MCP 工具定义从 117 万个令牌削减到 1K 个。 以下是该模式的工作原理以及何时使用它。

Code on a monitor representing MCP tool schemas and token usage
Photo by Fotis Fotopoulos on Unsplash

在用户输入单个字符之前,包含 49 个工具的 MCP 服务器会销毁大约 29,000 个输入令牌。 一台包含 2,500 个工具的服务器(大约是 Cloudflare 内部提供的)消耗了 117 万个工具。 那 Claude Opus 的完整输入窗口用于描述工具,而不是解决用户的问题。 每转一次,都要再次付账。 每次重试都会再次付费。 在规模上,行项目为 “工具定义”超出了“实际工作”的行项目。

2026 年 4 月 Cloudflare 发货 编码模式 MCP,一个崩溃的模式 117 万个代币足迹减少到约 1,000 个代币,减少了 99.9%。 秘诀很简单:停下来 向模型描述工具。 为模型提供一个类型化的 API 和一个沙箱,并让它编写 调用工具的代码。 以下是经典模式泄漏令牌的原因,代码模式如何修复它, 以及何时需要费心切换。

1.17M 代币问题

经典 MCP 在每次请求时发送工具定义作为系统上下文的一部分。 每个工具 包含名称、描述、输入模式,通常还包含输出模式。 一个紧凑的例子 天气查找工具如下所示:

一旦算上 JSON 结构开销,该模式就会运行大约 600 个令牌, 模型选择工具和枚举值所需的描述。 乘以 49 策划 botoi 的 MCP 服务器上的工具,每轮大约可获得 29,400 个代币。 一个10转 对话支付了 10 倍的费用,因为模型在回合和对话之间没有记忆 Orchestrator 每次都会发送整个包。 将工具数量扩展到 Cloudflare 的全部 内部 API 表面(约 2,500 个端点),每轮成本达到 117 万代币, 甚至溢出了 1M 代币 Opus 窗口。

在一次通话中计算您自己的足迹。 Botoi 的令牌计数器接受任何字符串; 喂它一个 工具模式,您将获得准确的 Anthropic 令牌计数:

代码模式 MCP 如何翻转模式

人们不会在每次调用之前读取 API 模式。 您阅读一次文档,打开编辑器,然后 编写导入函数的代码。 运行时处理调度。 代码模式为模型提供了 相同的设置。

该代理在 V8 隔离(Cloudflare 的 Workers 沙箱)内运行。 MCP 工具显示为键入的内容 导入对象上的函数。 该模型看到的是 TypeScript 类型声明,而不是 JSON 架构广播。 当用户询问“我居住的地方的空气质量如何”时,模型会写出 短节目:

// The agent writes this. The runtime compiles and executes it.
// Only the two functions it calls ever hit the wire.
import { botoi } from "@botoi/mcp";

export async function run(input: { city: string }) {
  const weather = await botoi.weather.current({ city: input.city });
  const air = await botoi.airQuality.check({
    lat: weather.lat,
    lon: weather.lon,
  });

  return {
    city: input.city,
    temp: weather.temp_c,
    aqi: air.aqi,
    advice: air.aqi > 100 ? "stay inside" : "go for a walk",
  };
}

运行时编译该代码片段,在隔离内运行它,并且仅运行它的两个函数 实际上调用(botoi.weather.currentbotoi.airQuality.check) 触摸网络。 该模型从未见过其他 47 个工具的架构,因为它从未见过 需要。 类型文件位于磁盘上一次并通知编译器,而不是上下文窗口。

代码模式更接近于针对 SDK 编写脚本的方式,而不是驱动表单的方式。 模型的输出是代码,运行时的工作是安全地执行代码,网络成本 映射到真实的调用而不是假设的调用。

botoi 的 49 个工具服务器上的数学

Botoi 的 MCP 服务器公开了 49 个精选工具,涵盖查找、文本、开发人员、图像和安全性 类别。 下表将典型工作负载的经典 MCP 与代码模式进行了比较: 10 轮对话,每月 10,000 次对话,Opus 输入定价。

公制 经典MCP 编码模式 MCP
每回合代币(工具说明) 29,400 0(加载一次的类型文件)
冷启动型-表面负载 0 约 1,000 个代币
描述中的 10 轮对话成本 294,000 个代币 1,000 个代币
主要失效模式 模型选择了错误的工具 生成的代码在运行时抛出
可调试性 工具调用跟踪 堆栈跟踪加上工具调用跟踪
最适合的用例 <10 个工具、桌面客户端 50 多个工具,多步骤工作流程
增加了延迟 没有任何 10-50ms 编译 + 隔离启动

按照 Opus 输入费率(大约每百万代币 15 美元),经典模式的成本约为每百万代币 0.44 美元 仅工具描述标记中的 10 回合对话。 代码模式将其降低到a的分数 分。 通过每月 10,000 次对话,您可以节省约 4,400 美元并收回 29 亿美元 重要工作的背景预算标记。

在您采用任一模式之前,请立即测量您自己的服务器:

代码模式何时值得,何时不值得

代码模式不是免费的。 沙箱增加了 10 到 50 毫秒的编译和隔离启动时间 每回合。 生成的代码可能会抛出异常,这意味着您需要重试逻辑和后备路径。 调试从“模型选择了错误的工具”转变为“模型编写了错误的代码” 引用了未定义的符号。” 您的可观察性堆栈需要捕获源代码 该工具称其为已触发。

在以下情况下坚持使用经典 MCP:

  • 您公开的工具少于 10 个,并且架构占用量低于 6,000 个令牌。
  • 您的目标客户端是 Claude Desktop、Cursor 或 VS Code(它们只使用经典 MCP)。
  • 代理循环是单次的:一条用户消息、一次工具调用、一次响应。
  • 延迟预算很紧张,您不能花费 10-50 毫秒的编译开销。

在以下情况下切换到代码模式:

  • 您公开了 50 个或更多工具,或者您的架构足迹超过 15,000 个令牌。
  • 工作流链接 3 个以上的工具调用,因为代码模式避免了在每一跳上重新描述工具。
  • 您拥有运行时(Cloudflare Agents、Mastra、LangGraph)并且可以编译代理输出。
  • 人择法案最大的一行项目是“系统输入令牌”。

无需重写服务器的迁移路径

您不必选择一种模式。 大多数团队应该同时运营这两种业务,并根据能力来路由客户。 以下是避免重写 MCP 服务器的三步路径:

步骤一:测量。 获取您的 MCP 工具清单并通过令牌运行它 柜台。 如果您超过 15,000 个代币,代码模式将会带来回报。 如果您低于 6,000,请跳过 这篇文章的其余部分。

第 2 步:沿 MCP 暴露印刷表面。 您已经有一个 OpenAPI 规范(如果您运行 HTTP API)。 从中生成 TypeScript 类型(botoi 的 SDK 执行此操作;请参阅 packages/sdk-typescript)并托管结果 .d.ts 文件位于 稳定的网址。 代码模式运行时每个会话获取此文件一次并将其用作导入 目标。 您的 MCP 终端节点保持为经典客户端提供服务不变。

步骤3:按客户端路由。 Claude Desktop、Cursor 和 VS Code 持续火爆 /mcp 并接收经典工具模式。 代理框架(Cloudflare Agents、 Mastra、LangGraph)创下新纪录 /code-mode 返回类型定义的路由和 运行时句柄。 相同的服务器,相同的业务逻辑,两种协议。

Botoi 今天推出了这两种形状。 经典的 MCP 端点位于 api.botoi.com/mcp 为桌面客户端提供 49 个带有完整 JSON 架构的精选工具。 类型化的 SDK 位于 api.botoi.com/docs 为代理框架提供单文件导入表面。 免费套餐(5 个请求/分钟,无密钥)涵盖 探索; 开发人员层(每天 1,000 个请求,有免费密钥)涵盖生产代理循环。 如果 人择法案中最大的项目是工具描述,切换是值得的 第一周。

FAQ

当模型可能只调用一种工具时,为什么注入工具模式会浪费令牌?
经典 MCP 每次都会将每个工具的 JSON 模式传送到系统上下文中,因此无论模型调用一个工具还是不调用一个工具,都会支付全部成本。 除非你告诉它,并且用模式告诉它,否则模型无法知道存在哪些工具。 代码模式用单个类型定义替换该广播,运行时仅在生成的代码实际导入函数时才参考该类型定义。
代码模式现在可以与 Claude Desktop 或 Cursor 一起使用吗?
还没有。 Claude Desktop、Cursor 和 VS Code 的 MCP 集成都采用经典的 MCP 协议,因此它们仍然接收内联工具架构。 Cloudflare 的代码模式针对代理框架(Cloudflare Agents、Mastra、LangGraph),您可以在其中控制运行时,并可以在运行之前编译代理的输出。
安全性怎么样,让模型写代码不是有风险吗?
确实如此,这就是为什么代码模式在 V8 隔离内运行生成的代码,没有文件系统访问权限,在类型化 API 表面之外没有网络访问权限,也没有 CPU 预算。 沙箱与 Cloudflare 用于 Workers 的形状相同。 模型无法逃脱隔离,就像用户无法逃脱浏览器选项卡一样。
我可以在同一台服务器上使用经典 MCP 和代码模式吗?
是的,你应该这样做。 为需要零配置工具发现的桌面客户端和编辑器保留经典的 MCP 端点。 为运行代码模式的代理框架添加类型化表面(OpenAPI 或 TypeScript 类型)。 Botoi 今天做到了这一点:MCP 端点为 Claude Desktop 提供服务,OpenAPI 规范为代理框架作为类型定义导入的 SDK 提供支持。
这实际上为人类账单节省了多少?
对于 Anthropic Opus 输入速率下的 49 个工具服务器,每轮 29,400 个令牌的成本约为每 10 轮对话 0.44 美元(仅工具描述令牌)。 代码模式将其压缩为一次性 1K 令牌类型负载,将每次对话的描述成本削减至零点几分之一。 如果每月进行 10,000 次对话,则差异约为 4,400 美元。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。