MCP:大模型 Agent 时代的“万能插座板”协议
如果你最近关注 AI 开发者的动态,一定会频繁刷到一个词——MCP。在各种技术大会、开源项目、大厂的发布里,它都在被反复提及。Anthropic 抛出这个协议后,OpenAI、微软、LangChain 等主流玩家纷纷跟进支持,仿佛一夜之间,MCP 成了 AI 工具链的“普通话”。
但 MCP 到底解决了什么问题?它背后的技术逻辑是什么?对我们开发者来说,到底要不要马上把现有工具全部改造成 MCP 格式?今天咱们就用一篇通俗的博客,把这些问题彻底讲透。
一、先看困境:N × M 的集成噩梦
做过大模型应用开发的朋友,一定对下面的场景不陌生。我们想让模型跟外部世界交互——读邮件、查数据库、操作文件、调用企业内部 API,就必须在模型和外部服务之间搭桥。
然而现实是割裂的:
-
模型端:OpenAI、Anthropic、Google、Meta……每家都有一套自己的 Function Calling 格式和交互规范。
-
工具端:Slack、GitHub、Notion、自定义后台……每种服务有自己的数据结构和调用方式。
如果你想打通所有可能的组合,工作量就是 N 个模型 × M 个工具 的排列爆炸。每接入一个新模型,你得把所有工具重新适配一遍;每增加一个工具,又得为每个模型写一版新的胶水代码。这就是所谓的生态碎片化,无数开发者的头发就是这样掉光的。
二、MCP 的巧思:从乘法变加法
MCP,全称 Model Context Protocol(模型上下文协议),就是冲着这个痛点来的。它是 Anthropic 在 2024 年底正式开源的一套标准协议,核心理念可以用一句话概括:
给大模型和外部工具之间,加一个统一的“插座板”。
工具提供方只需要按照 MCP 标准,把自己的能力封装成一个 MCP 服务端。之后,任何支持 MCP 客户端的大模型应用(比如 Claude Desktop、ChatGPT、自研的 Agent 框架),都能直接插上来使用。工作量的公式一下就从 N × M 降到了 N + M。每个模型只需实现一次 MCP 客户端,每个工具只需暴露一次 MCP 服务端,彼此就完全解耦了。
这就像 USB 出现之前的电子设备,不同品牌的手机要用不同的充电线;而 USB 标准诞生后,一种接口到处通用。MCP 要做的,就是 AI Agent 领域的那个“USB 协议”。
三、技术解剖:MCP 里到底有什么?
从工程实现的角度看,MCP 本质上是一个 基于 JSON-RPC 2.0 的消息协议,它在模型应用和外部服务之间定义了一组标准的交互方法。当你把一个服务包装成 MCP 服务端时,它会对外暴露三种核心能力,这比我们通常用的 Function Calling 要丰富得多。
1. 工具(Tools)
它跟我们熟悉的函数调用类似,但更规范。用来执行有副作用的操作,比如写入数据库、发送邮件、创建工单、运行一段脚本。模型可以请求调用某个工具,传入参数,服务端执行后返回结果。
2. 资源(Resources)
这是一个非常亮眼的设计。资源是只读的数据暴露,专门用来给模型补充上下文,而不是执行动作。比如,让模型直接读取本地文件内容、查看系统日志、获取知识库中的某篇文档。它的定位和工具截然不同——工具是“手”,用来做事;资源是“眼”,用来读取信息。模型可以在生成回答之前,动态拉取所需的资源,避免把所有东西都塞进 prompt。
3. 提示词模板(Prompts)
服务端可以预先定义一些可复用的提示词片段,供模型应用按需加载。比如一个代码助手可以提供一个“代码审查”提示词模板,里面包含了审查的格式、要点和示例,应用只需调用这个模板,就能快速构建高质量的审查 prompt,而不必每次手写。
这三类能力共同构成了模型上下文(Context)的完整闭环:用资源获取信息,用提示词模板组织问题,用工具执行动作。而且这一切都通过标准协议动态暴露,模型可以自动发现并组合使用。
四、传输与工作流:怎么连,怎么跑?
MCP 在通信层面支持两种典型的传输方式,适配不同的部署场景:
-
标准输入输出(stdio)
用于本地进程间通信。比如你在自己的电脑上跑一个 MCP 服务端来操作文件系统,客户端就通过子进程的 stdin/stdout 直接跟它对话,零网络开销,延迟极低。这是本地开发和个人 Agent 最常用的模式。 -
网络通信(基于 HTTP 的 SSE)
适用于远程服务。比如你把公司内部的知识库或业务系统封装成 MCP 服务,部署在服务器上,多个 AI 应用就可以通过网络连接。目前社区普遍采用 Server-Sent Events(SSE)实现流式推送,底层仍然承载 JSON-RPC 消息,也可以通过 HTTPS 加密传输。
一个完整的交互流程如下:
-
握手:客户端连接服务端,双方通过
initialize方法协商协议版本和能力。 -
发现:客户端动态查询服务端提供了哪些工具和资源,拿到结构化的描述信息(名称、参数 schema、描述文字等)。
-
注入:将这些工具描述直接喂给大模型,模型根据用户意图决定是否调用、调用哪个。
-
执行:客户端收到模型的调用请求后,通过
tools/call消息发给服务端执行。 -
返回:服务端执行完毕,将结果返回给客户端,再交回模型生成最终回复。
整个过程是全动态发现的。你在代码里不需要把工具列表写死,只要连上服务端,模型就能知道当前环境有哪些能力可用。这为构建高度自适应的 Agent 提供了基础。
五、对比澄清:MCP 与 OpenAI 插件有何不同?
经常会有人问:这跟之前 OpenAI 发布的插件系统是不是一回事?答案很明确:不是,而且区别很大。
-
开放 vs 封闭:OpenAI 插件是专为 ChatGPT 打造的封闭生态,只能给 OpenAI 自家的模型用。MCP 则是完全开放的标准,跟具体的模型厂商解耦,任何模型、任何应用只要实现了客户端,都能接入任何 MCP 服务端。
-
能力范围:OpenAI 插件本质上只提供了类似“工具调用”的能力,MCP 则多出了资源(Resources) 和提示词模板(Prompts) 两个维度,对模型上下文的支持更完整。
-
协议本质:插件是 OpenAI 定义的专有规范,MCP 是基于 JSON-RPC 的通用协议,天然更适合多模型、跨平台的生态。
可以说,OpenAI 插件是苹果的 Lightning 接口,而 MCP 是 USB-C,后者才是推动整个行业走向互通的关键。
六、工程取舍:要不要把所有工具都改造成 MCP?
看到这里你可能会想:“那我现在用的原生 Function Calling,是不是落伍了?要不要全部重构成 MCP?”
正确答案不是非黑即白,而要看你所处的工程阶段和业务场景。
-
如果工具是你自己用,场景固定,比如你只有一个模型、只调用一两个自己写的脚本,直接用模型原生的 Function Calling 就足够轻量,没必要引入额外的协议层。过度设计只会增加维护成本。
-
如果你有内部服务需要被多个不同 AI 应用共享,或者你想接入现在已经非常丰富的 MCP 生态(例如让 Claude 直接用你搭建的 MCP 服务),那么花点时间为这个服务套一层 MCP 的“壳”,投资收益就非常高。一次封装,处处复用。
而且,MCP 并不排斥现有框架,LangChain、AutoGen 等都已内置 MCP 适配器,你可以在既有 Agent 里无缝集成 MCP 工具,渐进式改造,不必推倒重来。
七、不容忽视的安全底线
MCP 为了保持设计的纯粹和简洁,在协议层面并没有强制规定认证和授权机制。这意味着,如果直接把 MCP 服务暴露到网络上而不设防,就相当于把你的文件系统、数据库敞开给了任意连接。
因此,下面几个安全防线,必须由开发者在服务端自己把控:
-
传输安全:远程连接务必走 HTTPS 或 VPN 隧道,杜绝明文传输。
-
身份认证:加上 API Key、OAuth 等认证手段,只允许合法的客户端调用。
-
权限校验:MCP 不会帮你检查“这个工具能不能被当前用户调用”,你必须自己在工具执行逻辑里做细粒度的权限判断,防止越权操作。
-
输入验证与审计:所有参数都要严格校验,关键操作打上日志,方便追溯。
简单记住一句话:本地 stdio 模式相对安全(只限本机),一旦走网络,你就得把安全当成头等大事来亲自把关。
八、生态与展望:从协议到事实标准
MCP 之所以能在短短一年多时间里爆火,除了设计上的优秀,还离不开行业的快速拥抱。截至 2026 年中,已经可以看到一个相当热闹的生态:
-
模型侧:Claude 系列原生支持 MCP;OpenAI 在 2025 年 3 月宣布将 MCP 集成进 ChatGPT 桌面端和 Responses API;Google 的 Gemini、Meta 的 Llama 等也通过社区适配器接入了 MCP。
-
平台与框架:LangChain、AutoGen、CrewAI 等都提供了 MCP 工具集成;微软的 Copilot 生态系统也开始深度兼容 MCP。
-
工具与服务:从文件系统、数据库、搜索引擎到 Notion、Slack、GitHub,已有成百上千的预制 MCP 服务端,开箱即用。
这个局面正在让 MCP 从一个“提案标准”加速走向“事实标准”。未来,一个 AI 应用很可能像手机连 Wi‑Fi 一样,自动发现并连接周围所有安全的 MCP 服务,让模型的触角真正延伸到数字世界的每个角落。
结语
MCP 没有发明新的黑科技,但它用“加一层”的经典思路,解开了 AI Agent 工具链中最关键的耦合死结。它让我们看到,大模型与外部世界的交互,可以不再是一堆零乱的胶水代码,而是一套优雅、可复用、可发现的协议。
更多推荐



所有评论(0)