仔细读了一遍 Anthropic 这篇关于用代码执行的方式调用 MCP 的文章,还挺有收获的。
https://www.anthropic.com/engineering/code-execution-with-mcp
这一篇的核心逻辑在于解决 MCP 工具执行过程占用 LLM 上下文的问题。许多原本被拆解为多次工具调用的任务,完全可以通过编写代码来一次性完成,从而避免因多次执行而产生不必要的冗长上下文。
例如,一个任务需要先从 Google Drive 获取电子表格,筛选出未完成订单,最后上传至 Salesforce。原始表格可能极为庞大(几万行),且对后续对话无实质参考价值。如果先让 agent 来把这个任务写成一段代码(包含获取、过滤、上传工具的调用和组合),那么注入上下文的将仅是筛选后的有限信息,而非完整的表格数据。这样做不仅减少了 Token 的浪费,也提高了 LLM 执行后续对话的精确度。
此外,在代码执行过程中,可以用文件的方式保存和传递中间结果。因为这套系统是基于文件系统运作的,所有的工具都首先被转换为 MCP 目录下的文件模块,供 agent 生成代码调用,因此也可以存在特定目录如 store/, 允许生成代码在这里存放中间数据。在后续交互中,agent 还能根据对过往代码逻辑的理解,知道如何处理之前生成的数据,从而在运行的完整生命周期中持续维护 store state。
文章中还提到了 Cloudflare 今年 9 月发的一篇文章 Code Mode: the better way to use MCP,理念非常相似,不过 CF 更关注 LLM 生成代码的标准性,它将 MCP 工具直接转换成 TypeScript API,包含完整的类型定义和文档注释。这比第一篇文章提到的文件系统映射更加自然——开发者本来就是这样写代码的;还使用 V8 isolate 作为沙箱环境,既兼顾了性能(毫秒级的启动速度)又提供了安全隔离。
我还在笔记中找到了去年收藏的一篇 paper,是 Apple 发布的 CodeAct, 它也提出了相似的理念。不过不涉及 MCP, 而是直接让 agent 控制 LLM 生成代码,放在 Python 沙盒环境中执行来解决复杂问题 (比如数字计算和数 r :)。当时感觉惊为天人,但现在看来这是必然的解决途径,各家应用开发商都不约而同地想到并使用了。最早在产品上体现的应该是 Claude,去年就发布了 Analysis Tool,用代码生成的方式解决数据分析和可视化,到今年仍然非常好用。
https://www.anthropic.com/engineering/code-execution-with-mcp
这一篇的核心逻辑在于解决 MCP 工具执行过程占用 LLM 上下文的问题。许多原本被拆解为多次工具调用的任务,完全可以通过编写代码来一次性完成,从而避免因多次执行而产生不必要的冗长上下文。
例如,一个任务需要先从 Google Drive 获取电子表格,筛选出未完成订单,最后上传至 Salesforce。原始表格可能极为庞大(几万行),且对后续对话无实质参考价值。如果先让 agent 来把这个任务写成一段代码(包含获取、过滤、上传工具的调用和组合),那么注入上下文的将仅是筛选后的有限信息,而非完整的表格数据。这样做不仅减少了 Token 的浪费,也提高了 LLM 执行后续对话的精确度。
此外,在代码执行过程中,可以用文件的方式保存和传递中间结果。因为这套系统是基于文件系统运作的,所有的工具都首先被转换为 MCP 目录下的文件模块,供 agent 生成代码调用,因此也可以存在特定目录如 store/, 允许生成代码在这里存放中间数据。在后续交互中,agent 还能根据对过往代码逻辑的理解,知道如何处理之前生成的数据,从而在运行的完整生命周期中持续维护 store state。
文章中还提到了 Cloudflare 今年 9 月发的一篇文章 Code Mode: the better way to use MCP,理念非常相似,不过 CF 更关注 LLM 生成代码的标准性,它将 MCP 工具直接转换成 TypeScript API,包含完整的类型定义和文档注释。这比第一篇文章提到的文件系统映射更加自然——开发者本来就是这样写代码的;还使用 V8 isolate 作为沙箱环境,既兼顾了性能(毫秒级的启动速度)又提供了安全隔离。
我还在笔记中找到了去年收藏的一篇 paper,是 Apple 发布的 CodeAct, 它也提出了相似的理念。不过不涉及 MCP, 而是直接让 agent 控制 LLM 生成代码,放在 Python 沙盒环境中执行来解决复杂问题 (比如数字计算和数 r :)。当时感觉惊为天人,但现在看来这是必然的解决途径,各家应用开发商都不约而同地想到并使用了。最早在产品上体现的应该是 Claude,去年就发布了 Analysis Tool,用代码生成的方式解决数据分析和可视化,到今年仍然非常好用。