前几天,Anthropic 发的一个 MCP 的思考,说明MCP的未来发展
(https://www.anthropic.com/engineering/code-execution-with-mcp)
但这篇文章,讲的不是很清晰,我找了文章中的引用,cloudflare 对于 MCP 工程的思考(https://blog.cloudflare.com/code-mode/)
两者结合起来,思路就清晰了很多。我结合一下这两篇的内容,来说一下他们解决了什么问题。
MCP 上下文过长的核心问题
我们平时会接入很多 MCP,比如 chrome devtools MCP、playwright、GitHub、context 7 等等。
每次启动都要加载所有工具定义(名称+描述+参数要求),发起一次对话,上下文消耗就非常惊人。
举个例子:
用户需求:“把飞书文档的会议记录同步到飞书多维表格”
【传统工具调用流程】
我们在执行飞书任务的时候,他会把 其他MCP的工具,也告诉AI,导致token消耗很大。
这还只是一个简单任务!如果你要处理更多、更大的任务,执行起来就会很困难。
拆分来看,这里面有两个核心问题
问题1:所有工具定义要预加载
每个工具定义包含:名称、描述、参数说明(类型、是否必需、用途说明)
这里需要说明,一个MCP,会有很多工具。比如高德地图MCP,会有搜索工具、查询距离工具、打车工具;像github mcp,有二三十个工具。
用户还没说话,上下文就满了!
问题2:数据反复流经 AI
所有中间数据都要过 AI。
数据像接力棒,每次传递都要经过 AI。
解决方案:代码执行模式
针对这两个问题,核心思路是:让 AI 写代码来调用工具,而不是直接调用工具。
1. 按需加载工具(解决预加载问题)
核心思路:不要一次全加载,需要时再找。
Anthropic 提出了"渐进式披露"(Progressive Disclosure)的概念——AI 可以主动去"找"需要的工具,而不是提前把所有工具塞给它。
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">实现方式1:文件系统浏览把所有工具组织成文件夹结构,AI 像浏览文件夹一样查找需要的工具。
⚠️ 重要说明:
把MCP转化成工具文件树,claude 暂时没有说功能怎么做,cloudflare 的SDK 文档里,有提供一个工具
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">实现方式2:搜索函数提供一个搜索函数,AI 写代码传入关键词,系统返回相关工具。
示例:
⚠️ 重要说明:
Anthropic 的工程博客提供了代码示例(比如工具文件结构、import 语句),但没说明 Agent 内部如何实现。
这些需要:
等 Anthropic 后续更新 Claude Code 和 MCP 协议
或者开发者根据代码示例自行设计内部实现
2. 代码在沙箱执行(解决数据流经问题)
核心思路:让 AI 写代码,代码在沙箱里执行,数据在沙箱里流转,不过 AI。
代码执行模式的3个案例:
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">案例1:串联任务流程,一次执行完传统方式 vs 代码模式:
原来需要AI处理的数据问题,现在用代码去解决,就方便很多。
下图举例了一个同步的案例:
✅效果:AI 只参与头尾(写代码 + 收结果),中间过程不涉及
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">案例2:处理数据结果,而不是全部获取传统方式的问题:
工具返回什么,AI 就收到什么,即使只需要一小部分。
代码模式:
AI 写代码,在沙箱里搜索和过滤,只返回需要的部分。
下图为举例:
对于最后收到的结果,可以让代码执行过滤。
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">其他优势:敏感信息隔离,防止数据泄露所有的私密信息,不经过 AI,防止AI泄露信息。
AI只能看到处理结果。
⚠️ 重要说明:
沙箱功能,Cloudflare 专门做了一个中间工具叫"隔离区",是用worker(serverless服务,用了才启动)来做的;Claude 暂无实际工具提供
补充说明
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">1. 为什么 AI 适合写代码?AI 在几十亿行代码上训练过,写 TypeScript/Python 代码是强项。
相比让 AI 直接调用工具(需要理解工具的复杂参数和返回格式),写代码反而更简单:
代码有清晰的语法规则
AI 见过大量类似代码
可以用注释说明意图
这就像让翻译官写翻译稿(擅长),而不是让他当搬运工(低效)。
ingFang SC', 'Hiragino Sans GB', Arial, sans-serif;font-size: 19px;font-weight: 600;color: #1d1d1f;line-height: 1.4;margin: 24px 0 4px 0;padding: 0;">2. 代码可以保存成 Skills写过一次的代码,可以保存到./skills/目录,变成可复用的能力。
AI 的工具箱会越来越强大,常用操作不用每次都重新写。