2作者: pranftw3 个月前原帖
我一直在研究一种更高效的代码执行方法,使用MCP服务器来消除Anthropic最近博客文章中提到的文件系统开销。 Anthropic的文章(https://www.anthropic.com/engineering/code-execution-mcp)展示了代理如何通过编写代码调用MCP工具,而不是直接调用工具,从而避免令牌膨胀。 他们的方法为每个工具生成TypeScript文件,以实现渐进式发现。这种方法效果很好,但引入了复杂性:你需要为每个工具生成文件,管理复杂的类型架构,在工具更新时重新构建,并处理版本冲突。在大规模应用中,1000个MCP工具意味着需要维护1000个生成的文件。 我使用纯动态执行构建了codex-mcp。我们不再生成文件,而是仅暴露两个轻量级工具:list_mcp_tools()返回可用工具的名称,get_mcp_tool_details(name)按需加载定义。代理像浏览文件系统一样探索工具,但实际上没有任何东西存在于磁盘上。 代码片段以字符串的形式存储在聊天会话数据的内存中。当你执行一个片段时,我们使用AsyncFunction构造函数直接将callMCPTool函数注入执行环境。没有导入,没有文件系统依赖,仅仅是运行时注入。该函数直接调用mcpManager.tools,因此你始终连接到实时的MCP。 这意味着工具始终保持同步。当服务器上某个工具的架构发生变化时,你已经在调用更新后的版本。无需重新生成,无需构建步骤,也没有版本不匹配。代理获得了文件系统方法的所有好处(渐进式发现、上下文效率、复杂控制流、隐私保护),而没有任何维护开销。 一个警告:MCP协议并不强制输出架构,因此链式工具调用需要防御性解析,因为模型无法预测输出结构。不过,这影响所有MCP实现,而不仅限于我们的方法。 动态执行得益于Vercel AI SDK的MCP支持,它提供了从代码直接调用MCP工具的运行时基础设施。 项目链接:https://github.com/pranftw/aiter-app 希望能收到在大规模使用MCP的朋友们的反馈。有没有人探索过类似的模式?
1作者: moosedman3 个月前原帖
“这种观点认为,训练 ChatGPT 所使用的知识产权不需要任何人支付费用,但 OpenAI 可能仍然有权根据知识产权的理由分享 ChatGPT 输出所获得的利润——你真的能做的也就是笑了。”