惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
博客园 - 聂微东
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
WordPress大学
WordPress大学
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
博客园 - 司徒正美
爱范儿
爱范儿
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
博客园 - 【当耐特】
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
人人都是产品经理
人人都是产品经理
V
V2EX

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测
MCP理解和实践
瞻明 · 2025-04-20 · via 机核

市面上大部分讲MCP的文章,基本都会出现下面这张图,也非常容易理解:MCP就是客户端(Client)和各种服务端(Server)之间为了更方便交互沟通,定义的标准协议。

但是这些文章大都浮于表面,自己一直比较好奇的两个问题得不到很好的解答:

  • 为什么一个标准协议会这么火,背后有什么特别厉害的技术么

  • 如果客户端接入的Servers越来越多,客户端集成的大模型怎么能正确知道用哪个Tool的(因为毕竟做了两年多大模型项目,对模型能力天花板还是有一定了解的)

于是自己读了源码和做了一些实操分析,在这里将结论分享给大家。

先说结论:的确只是一个标准协议,如果Servers太多大模型部分存在瓶颈。所以如果有想做MCP Client,不应该追求接入更多的Servers,而是追求价值更高并且交集更少的Servers。

下面将介绍3部分内容:"Clinet是如何调用Servers"、"总结的优缺点和结论"以及"结论验证"

Client调用MCP Server的流程

官方介绍文档提到了调用流程:Claude是客户端,由客户端分析使用和决定使用哪个工具。

  • step1: Client首先收集所有MCP Server的Tools有哪些

  • step2: 这些Tools按一定格式整理成文本信息,包括:工具名、描述、参数以及参数是否必填

  • step3: 将第二步整理的工具文本信息拼接到system中

  • step4: 用户查询的问题作为user,和第三步的system一起传给客户端的大模型,让大模型选择Tool并且解析所使用Tool的具体参数

  • step5: 调用Server的exceute_tool函数,将第四步的解析结果作为函数的参数,得到工具返回值

  • step6: 再结合历史所有信息,再次调用大模型,得到最终结果

不难看出,其中并没有新技术,如果Servers越来越多,特别是其中包含语义相近的工具时,卡点一定会出现在step3和step4这一步。

优缺点总结和结论

  • 优势:「绿色」部分,众多Server的工具统一协议,方便客户端的大模型理解和调用,而不用针对每个工具自定义适配

  • 缺点:「红色」部分,越多的工具导致:1)对工具描述精准度越高;2)对「红色」Promopt要求越高;3)对大模型能力要求越高。

结论:做MCP Client不应该追求接入更多的Servers,而是追求价值更高并且交集更少的Servers。

结论验证

选择免费的Cline和Anthropic的Claude做验证。

安装一个叫Time的Server,包含两个工具:get_current_time 和 convert_time

截取的Prompt可以看到(截取方案可以参考附录链接):

1、Prompt中按照一定格式拼接了工具信息

2、模型使用工具的Instruction都是通用的描述,如果直接泛化到企业内部必然需要额外的定制工作

Claude选择桌面客户端,因为它不能更换自定义模型,所以拦截不到Prompt,但是通过测试可以侧面验证。

我在Claude注册了4个Server,其中:

  • sqlite是官方发布的Server

  • SqlTemplateServer是我自己本地python写的一个Server

这两个Server存在有歧义的Tool:read_query 和 list_detail_tool 都和查询数据有关。

“查询mid_tblogin表数据”这个问题,我的预期是使用list_detail_tool。可以看到Claude的Prompt很难做到准确判断,也就侧面验证了结论。

附录

  • 如果想自己动手实践,建议调试simple_chatbot的源码,参考这篇文章

  • 关于如何抓取Prompt,可以使用Cloudflare的AI Gateway,参考这个视频