Anthropic 对 MCP 局限性的思考和方案
MCP协议作为早就出来的大模型调用工具的协议,已经有点不适应当前的agentic生态了
1-举个简单的例子,大模型调用MCP查某个文章,文章有1000页,在当前协作模式下,这1000页直接会放到大模型上下文中,立马打满上下文窗口,上下文这么珍贵,这合理吗?
2-想想我们人的模式,我用浏览器看一篇长文,几万字,我肯定是读一下摘要然后去找感兴趣的特定内容细看了,把大模型看做我们的大脑,人也不能一次性接受这几万字的信息啊
3-Anthropic的解决方案是写code工具去调用mcp,大模型自己去发现有哪些工具需要用到,而不是一次性告诉大模型所有的工具,类似skills的渐进式披露策略,工具里可以对大规模数据的返回结果进行筛选或者过滤,有必要的情况下再去获得更多数据
4-大家有没有感觉这个方案很怪,不优雅。是的,因为mcp已经成为生态,只能在这个基础上修修补补提出解决方案,你再搞个新协议,让市面上几万个mcp换成新协议?不现实
我在做智能体的时候也碰到了类似的问题,上sec-edgar获取财务报告的时候被返回数据打满,直接打到窗口上限了,我的方案是,改造mcp把超过3000字的响应保存为md文件,mcp返回中告诉大模型文件地址,然后在大模型的提示词中设定读这类文件时不要全部阅读,而是先设定查找策略,分段阅读,目前这个方案跑的还行,当然那个时候skills还没出来
有个隐隐的感觉,skills会不会渐渐取代mcp, 因为它又自由又灵活,又符合渐进式披露策略
原文地址:https://www.anthropic.com/engineering/code-execution-with-mcp