你的 AI 不再逐个调用工具。
它来写程序。
Delta MCP 是一款免费应用,位于你的 AI 应用和它们的 MCP 服务器之间。你的 AI 把每个任务写成一个简短的程序;Delta MCP 检查它,用最少的调用来执行,要么全部生效,要么一概不动,再回读结果,并留在 Activity 里。
更新于 · 8 分钟阅读
// delta { code }: one call for the whole task const t = await tickets.ticket.get("T-1"); t.status = "closed"; t.labels.push("late"); t.comments.push({ body: "Closed: fixed in 2.3" }); return t.title; // Delta MCP turns it into the fewest calls: // update_ticket, then add_comment, all or nothing
如今,你的 AI 同时干着三份活
按如今使用 MCP 的方式,模型得自己一步一步执行,每一步都要用 token 付费。
处理器
每一步都是一次完整的推理:读取、判断、调用一个工具、等待、再读取。
总线
从一步传到下一步的每一份数据,都要经过它的上下文,并且在每一步都要重新付费。
内存
所有东西都得装进它的窗口:每个工具定义、每个结果、整段对话。
开发者不会去点每一个按钮
编程 Agent 之所以好用,是因为代码有编译器、测试和版本控制。Delta MCP 在你的各项服务周围,给你的 AI 提供同样的东西:可以对照着写的类型、任何操作执行之前的检查,以及可以回滚的历史记录。
| 方面 | 直接调用 MCP | 通过 Delta MCP |
|---|---|---|
| 谁来决定调用 | 模型,每一轮一次 | Delta MCP,根据整个程序决定 |
| 模型加载什么 | 每个工具的定义,每次都加载 | 三个工具,加上每个服务器各自带类型的集合 |
| 步骤之间的数据 | 要经过模型的上下文 | 留在程序里 |
| 出错 | 一次发现一个,而且是在调用已经发出之后 | 第一次调用之前就全部发现,每个都附带修正方法 |
| 中途失败 | 任务做到一半就停在那里 | 全有或全无 |
| 事后 | 模型说成功了 | Delta MCP 回读并对比 |
| 历史记录 | 没有 | Activity:每处改动的前后对比,以及 Undo |
| 你的工具 | 全都在 | 仍然全都在:在我们试过的最大的服务器上,152 个工具中的 152 个 |
你的 AI 和你的服务器之间,只有一扇门
你的 AI 应用只与你电脑上的一个 MCP 服务器通信,它就是 Delta MCP。Delta MCP 再原样对接你的服务器:什么都不用改,什么都不用重写。
一个任务是怎么运行的
编写
你的 AI 把整个任务写成一个简短的程序。
检查
Delta MCP 在第一次调用之前检查程序,一次性返回所有错误,每个错误都附带修正方法。
规划
它算出服务器需要的最少调用,并排好正确的顺序。
执行
它要么全部发出,要么一个都不发。服务器做不到的事,会在一开始就被拒绝。
回读
它回读结果,记录到 Activity 里,并保存撤销所需要的东西。
t.labls.push("late"); ✗ no field "labls" — did you mean labels? every error at once, each with its fix; nothing was sent to the server
d_… · 2 calls, all or nothing 1 update_ticket T-1 status=closed labels+late 2 add_comment T-1 "Closed: fixed in 2.3" Applied · read back ✓ · undo: delta_apply { undo: "d_…" }
层层嵌套的对象,写成简短的文本
有些对象是层层嵌套的:一个测试有步骤,一个步骤有动作,一个动作有检查项。你的 AI 把这样的对象当作几行文本来读,并改写它;Delta MCP 把各行对齐,保留每一行的身份,再把差异变成最少的调用。
只有当把文本写回去不会改变服务器上的任何东西时,Delta MCP 才会使用这种文本形式。
// read "T-1" ticket T-1: Login broken status=open // your AI rewrites it ticket T-1: Login broken status=closed labels=late comment "Closed: fixed in 2.3" Applied d… · 1 ticket(s) · 2 call(s) · read back: as written ✓
什么都不会丢
每个服务器的每个工具都原样保留:仍然被声明,仍可按名称调用。在 Cerberus 这个有 152 个工具的测试平台上,152 个全都在,而起始上下文小了约 17 倍(这是估算值,以字符数计)。
await cerberus.cerberus_test_folder_create({ testFolder: "RT-p7-cerberus-s1", description: "Tests automationexercise.com (API + front)" }); await world.commit(); // 152 of 152 Cerberus tools, the same way
实时运行:下一步依赖上一步
浏览器没法提前规划:该点哪里,取决于页面上显示的内容。对这种情况,程序会实时运行,一次一个动作。它改动的对象仍然会在最后一并生效,并且可以撤销。
await web.goto("https://shop.test/form"); await web.fill({ Name: "Ana" }); await web.press("Create"); return "done";
你决定它能自己做多少
每个连接器单独设置:自行改动(建议选这个:一切都会显示在 Activity 里)、删除或发送前先问、每次改动前都问,或者只读。
流出的资金是例外:付款、购买、退款、转账和交易默认都会用一张卡片来问你,你的 AI 永远无法放宽这条规则。
开箱即用的 MCP 代码执行
Anthropic 和 Cloudflare 都证明过:Agent 通过写代码来使用 MCP,比通过调用工具要好得多,两家也都点明了代价:需要一个安全的地方来运行这些代码,以及围绕它的检查。Delta MCP 就是现成的这一套,面向你已经在用的每个 MCP 服务器,运行在你的电脑上。
一个工作流在 Agent 改为写代码、不再调用工具之后,“从 150,000 token 降到 2,000 token”,节省了 98.7%。
给 Agent 一个带类型的 SDK,让它写代码,就能用大约 1,000 token 向它开放 2,500 多个 API 端点。
它做不到什么
不是每个任务都省。单独一个单步问题成本更高,因为你的 AI 要读 Delta MCP 的说明。收益出现在有多个步骤的任务上。
不是什么都能撤销。已发出的消息或已花出去的钱收不回来,被删除的项目恢复后是一份新的副本。Delta MCP 会在事前和事后告诉你是哪些。
拦不住一心要绕开它的 AI。它保护你免受 AI 出错带来的损失;你的 AI 仍以你的权限行事。目前只在 Claude Code 上测量过。
继续阅读
-
怎么减少 MCP token 消耗?MCP 为什么这么耗 token
怎么减少 MCP token 消耗:先用 /context 测出你的开销,看清两项成本(工具列表和往返),再对比每种办法,包括 Tool Search。
-
MCP vs CLI 有什么区别?AI Agent 的 token 开销出在哪里
AI Agent 该用 MCP 还是 CLI?两者各花多少 token、实测数据怎么说、什么时候 CLI 更好、什么时候 MCP 更好,以及代码在哪里胜过两者。
用你自己的任务试一试
免费,两分钟配置好,一键即可全部还原。
免费 · 无需账号 · Apple 芯片或 Intel
免费 · 无需账号
免费 · 无需账号
支持 Mac、Windows 和 Linux,无需账号。