今天聊一个特别有意思的话题。我们都知道现在的AI大模型,什么ChatGPT、Claude,聊天写代码那是一把好手,但你有没有发现一个很尴尬的事——它其实啥也干不了。你让它帮你改个本地文件,它只能告诉你步骤,自己打不开那个文件。你让它查数据库,它SQL写得漂漂亮亮,但它自己连不上数据库。
对,这个比喻特别好,就像一个被关在玻璃房里的天才——它看得见外面的世界,但摸不到。所以Anthropic在2024年11月推出了一个叫MCP的开放协议,全称是Model Context Protocol,模型上下文协议。这个东西的核心思想其实特别朴素:给所有AI应用和外部工具装上同一个插口。
等一下,先给听众介绍一下Anthropic。这家公司可能有些朋友不太熟悉。
嗯,Anthropic是前OpenAI的核心成员Dario Amodei兄妹在2021年创立的,做的是Claude系列大模型,主打安全性和可控性。他们推出MCP之后,很快就得到了Cursor、Replit、Sourcegraph这些开发工具厂商的支持,势头还是挺猛的。
好,那我们来聊聊MCP到底解决了什么问题。我觉得可以用一个大家都经历过的事情来类比——你还记得零几年那会儿的手机充电线吗?
哈哈,太记得了!诺基亚一种头,摩托罗拉一种头,索尼爱立信又是一种,家里抽屉全是各种奇形怪状的充电线。后来USB统一了接口,整个世界都清爽了。MCP要做的事情就是这个——在AI调用外部工具这件事上,建立一个统一标准。
你看在MCP出现之前,你想让AI调GitHub的API,得写一套专门的集成代码;想让它读本地数据库,又得写另一套。每个工具都是一个私有协议,开发成本高,复用性差。不过我想追问一下,其实OpenAI之前不是搞过一个Function Calling吗?那个不也是让AI调工具的吗?
这是个特别好的问题。Function Calling确实是2023年OpenAI推出的一个方案,它解决的是AI怎么决定调用什么工具——就是模型层面的问题。但它没有标准化工具怎么被发现、怎么被连接、怎么被管理这些基础设施层面的事情。打个比方,Function Calling教会了AI怎么选工具,MCP教会了工具怎么被找到。这两个其实是互补关系,不是替代关系。
明白了,一个是模型侧的能力,一个是基础设施侧的标准。那MCP具体是怎么工作的呢?我知道它有三个核心角色。
对,三个角色,记住一句话就行:Host是大脑,Client是手臂,Server是工具箱。Host就是你直接打交道的AI应用,比如Claude Desktop、Cursor编辑器,它是用户交互的入口。Server呢,是连接现实世界的桥梁,你想查GitHub仓库有一个Server,想翻本地文件夹又是一个Server,想发邮件、操控Slack,每个外部能力都被封装成一个独立的Server。
每个Server只干一件事,这不就是微服务的思想吗?
没错!就是借鉴了微服务架构。每个Server独立开发、独立部署、独立维护,互不干扰。一个Server挂了不影响其他的,不同团队可以并行开发。这也是为什么MCP生态能快速壮大的原因——社区贡献者可以自己开发一个Server发布出去,完全不需要了解别人的Server怎么实现的。
那第三个角色Client呢?
Client运行在Host内部,负责跟不同的Server握手、建立连接、传递消息。关键是,一个Host可以同时连接多个Client,每个Client对接一个Server。这意味着你的AI可以左手查资料、右手写代码,多个外部能力并行调用,互不耽误。
这个设计确实优雅。那底层通信是怎么实现的?我看到用了JSON-RPC 2.0。
嗯,MCP没有自己造轮子,底层用的是成熟的JSON-RPC 2.0协议。这个协议的好处是极简——每个请求就三个核心字段:方法名、参数、请求ID。AI模型生成的调用指令本身就是结构化文本,跟JSON格式天然契合,开发者学习成本也低。
传输方式呢?我注意到它支持两种。
对,一种是Stdio,就是标准输入输出,走的是操作系统级别的进程间通信,不经过网络栈,延迟可以低到微秒级别,特别适合本地场景,比如读写文件、查本地数据库。另一种是SSE,基于HTTP的单向推送协议,适合远程服务。开发者可以根据场景灵活选择——本地工具追求极致低延迟,远程服务保证稳定推送。
那多个工具同时调用的时候不会卡吗?
这就要说到asyncio了,Python的异步框架。传统同步模式下,你发一个网络请求,整个线程就卡在那等着。asyncio通过事件循环和协程机制,让程序在等待一个Server返回结果的同时,可以去处理另一个Server的请求。这也是MCP Client能同时对接多个Server而不产生性能瓶颈的关键。
所以总结一下MCP的意义。它不是让AI变得更聪明,那是大模型本身的事。它是让AI变得更勤快——从一个只会出主意的顾问,变成一个真正能拿起扳手帮你干活的数字员工。
对,而且从生态角度看,影响更深远。工具开发者按MCP规范封装一次,就能被所有支持MCP的AI应用调用;AI应用开发者只需实现一个Client就能接入整个工具生态;终端用户呢,可以像插U盘一样按需组合不同能力。一次对接,处处可用。
说到底,当所有工具都说同一种语言的时候,AI的能力边界就不再由单个开发者的集成代码决定了,而是由整个社区的想象力决定。这可能就是MCP最让人兴奋的地方。
其实它不是什么颠覆性的黑科技,就是一个务实的工程解决方案。但往往就是这种务实的东西,最后能成为真正的转折点。就像USB当年也不是什么惊天发明,但它改变了整个硬件生态。MCP有可能在AI领域复刻这个故事。