市面上大部分讲MCP的文章,基本都会出现下面这张图,也非常容易理解:MCP就是客户端(Client)和各种服务端(Server)之间为了更方便交互沟通,定义的标准协议。
但是这些文章大都浮于表面,自己一直比较好奇的两个问题得不到很好的解答:
于是自己读了源码和做了一些实操分析,在这里将结论分享给大家。
先说结论:的确只是一个标准协议,如果Servers太多大模型部分存在瓶颈。所以如果有想做MCP Client,不应该追求接入更多的Servers,而是追求价值更高并且交集更少的Servers。
下面将介绍3部分内容:"Clinet是如何调用Servers"、"总结的优缺点和结论"以及"结论验证"
不难看出,其中并没有新技术,如果Servers越来越多,特别是其中包含语义相近的工具时,卡点一定会出现在step3和step4这一步。
结论:做MCP Client不应该追求接入更多的Servers,而是追求价值更高并且交集更少的Servers。
选择免费的Cline和Anthropic的Claude做验证。
安装一个叫Time的Server,包含两个工具:get_current_time 和 convert_time
截取的Prompt可以看到(截取方案可以参考附录链接):
2、模型使用工具的Instruction都是通用的描述,如果直接泛化到企业内部必然需要额外的定制工作
这两个Server存在有歧义的Tool:read_query 和 list_detail_tool 都和查询数据有关。
对“查询mid_tblogin表数据”这个问题,我的预期是使用list_detail_tool。可以看到Claude的Prompt很难做到准确判断,也就侧面验证了结论。
评论区
共 2 条评论热门最新