00:00
就在7月28号,MCP发布了自己诞生以来最大的一次修订。初始化握手被砍掉,MCP三星ID也正式退休,官方原话是拉迪斯的of PRO, 但是S斯匹克今年6月才刚公布,MCP的安装量已经9700万,这么大的存量线网里绝大多数还跑着旧版机制,包括这是抓包用的装连件啊,有一份第三方基准测试的数字,让大模型直接照着API文档自己P接调用后端接口啊,复杂任务的成功率只有92.31%,换成MCP协议做中间层之后呢,成功率到达了百分之百。电动次数还有耗时都少了近20%。今天用几分钟从真实抓包出发,把这套刚被官方判过时,但现在还在大规模跑的MCP机制,怎么把不太靠谱的大模型和严谨的rest接口连起来拆给你看。
01:05
大模型调用外部接口本来只有两条,都不太舒服,一条是让大模型直接读API文档,自己拼请求,但它本质上啊,是个基于概率的文本预测引擎,没有严谨契约约束的时候,参数拼错常向下文,注意力分散引发的幻觉出错率都很难压下去。另一条是退回到各厂商私有的发布新靠格式准是准了,但每换一种大模型,网关就得重写,适配层陷入生态孤岛。MCP协议做的事是在这两条路之间架一层标准化的桥,大模型只需要认一套协议,剩下的翻译和代理工作交给网关。接下来讲的握手和三星机制,是MCP这一年多来绝大多数落地部署还在用的版本。包括我这次抓包用的举齿AR网关,跑的也不是最新协议。至于为什么会这样,讲完握手你就明白了,第一步是初始化握手。
02:11
大模型客户端发一个引尼些拉请求,MCP协议底层就是节省IPC二点零一种动作导向的轻量级协议,不像瑞斯那样纠结动池和路由设计。所有交互都浓缩进一个阶层对象认准4个字段就够。标明协议版本的阶层RPC2.0定义要执行什么动作的method,传参数的PM,还有IID这个字段为什么必须有呢?因为MCP底层走的是SSE长连接,彻底打破了SCP那种按顺序一问一答的模式。大模型可以连续无阻塞的发出请求1、请求二,但网关处理不同后端接口的耗时不一样,完全可能先推回响应2,再推响应1。客户端就是靠这个ID字段才能在乱序的异不流离把请求和响应精准对称号。网关返回响应头部会带一个MCPC型ID,后面所有请求都要带着这个凭证。
03:14
响应包体里还有一个capc立体字段,宣告网关支持工具调用啊,资源读取啊,提示模板这三大能力。这里有个细节,MCP协议的版本号不是常见的X.Y.Z,而是用日期,比如2014105 20250326。这种设计的本意是协议两端要能快速去中心化的眼镜,用日期做时间线交集比对,省得在次要版本号上。的定义权上扯批,听着是不是很像各家云厂商的日期版匿名法呢?但讽刺的是,MCP从2024年11寓布到现在一年多总共才出了5个正式版本,节奏并不算快。所以线网里大量中间件网关,包括我自己这次抓包用的那一套,停留在更早的版本上。这也是为什么理解握手这套旧机制现在依然有实际价值。握手拿到三星ID后,这个绘画其实只是半激活状态,只有等大模型发完notifications initialize这条确认通知,绘画才正式生效。在这之前,兔子类的业务请求会被网关直接拒绝。
04:28
之后如果长时间没有请求,网关也会按超值时间把这个绘画淘汰表回收资源握手做完。接下来看大模型具体是怎么调用工具的。大模型先要知道网关背后挂了哪些工具,发起拓者历史的查询,如果后端接口太多,网关会分页返回,避免一次性把大模型的上下文申报。假设列表里有个叫历史的VS的工具,能查虚拟服务的信息,大模型基于用户的自然语言意图,推理出要调用这个工具传入参数name。
05:02
MCP这条接上RPC请求到了网关这里,会被翻译成一个真正的rest的请求。网关把阿格池里的参数提取出来,重组成URL查询参数,最终变成后端服务,处理完返回标准的200和接送结果。网关,再把它包装回节省IPC的拉的字段,通过同一个绘画退回给大模型,一句自然语言就这样变成了一次精确的rest的调用。在原路带的结果回来后端接口天天在变,如果这份工具列表要靠人工维护,因为成本高,还容易滞后出错,接口一改参数,大模型感知不到调用就会出错。网关的做法是直接读后端线程的swa文档,自动生成映射工具列表,返回的结构很规整,一个tos数据加一个分页用的ne斯科,每个工具描述包含name、迪斯title这些给大模型读的提示词字段。
06:01
和一个遵循杰森斯盖规范的input的斯干,他定义这个工具能接受什么参数。这份input的斯盖是从哪来的呢?源头是斯外克文档里的派尔米特数主。比如刚才那个历史的VS工具,在斯外格里对应的定义是get方法杠杠我特service维斯路径参数里声明了一个叫name的查询参数,网关要做的是把这种扁平的参数列表重新组装成切层斯干要求的那种带PRO体的树状结构,同时把参数类型也对其转换过去。顺便提一句命名细节。此外,克里奥线ID是list的杠,VS是带的中华线,网关会把它转换成list史的。杠下划线VS,这是照顾大模型的命名偏好做的转换输出,这边同理啊,S外格用response字段按不同SP状态码分别声明返回格式,网关会取出200成功状态码对应的结构逆向重组成output的干,让大模型不只知道怎么调用,还能提前预判返回结果里有哪些字段,方便规划后续处理逻辑。这里有个真实的工程坑,复杂后端服务里很多参数和返回结构会被多个接口反复的复用统一定义。在S外的带分用软指针互相引用,有的结构体内部还镶嵌套用的另一个接口。为了不让大模型在理解深层嵌套关系时产生推理幻觉,网关通常要把这些分散的引用在转换时完全展开铺平,直接写进最终的工具描述里。这也导致了一个直观的现象,网关转换后生成的工具列表体积往往比原始的S外文档大得多。
07:44
具体膨胀多少,取决于网关配置的引用。展开陈述,回到开头那组数字,92.31%到百分之百,靠的就是这一整条链路,握手建立信任,三星追踪身份,节省RPC和rest的互相翻译。此外,G自动维护契约,不用人工同步,还能跟后端保持一致。
08:07
这也是这一年埃及能人大规模接入真实业务系统的底层原因之一。就在11天前,2026年7月28日,MCP发布了协议诞生以来最大的一次修订,握手和三星ID被正式砍掉,改成了无状态架构。讽刺的是,这才是用日期做版本号,是为了快速迭代这句话第一次真正兑现。MCP协议里的另外两大能力,Resource资源读取PRO提示是模板,这次没有展开讲,下期接着聊,我们下期见。
我来说两句