近期,一个名为 MCP 的概念正在 AI 圈子里流行,从海外火到了国内。
3 月 27 日,OpenAI 宣布在 Agent SDK 中支持 MCP;4 月 4 日,谷歌宣布在 Gemini 的官方 API 文档中添加使用 MCP 的范例。加上此前提出 MCP 协议的 Anthropic,海外三大 AI 巨头已经全部投入 MCP 怀抱。
国内也迅速跟进,阿里云百炼上线业界首个全生命周期 MCP 服务,腾讯云支持 MCP 插件托管服务,MiniMax 发布了 MCP Server......MCP 似乎在一夜之间变成 AI 圈的最大共识。
本文将从以下五个关键议题,来拆解爆火的 MCP。
-
MCP 的基本架构
-
MCP 是怎么火起来的?
-
MCP 与 Function Calling 有什么关系?
-
MCP 与 谷歌近期发布的 A2A 有什么区别?
-
MCP 的一些资源
-
MCP 的基本架构
MCP,全称是 Model Context Protocol,模型上下文协议。这是一个很新的概念,最早由 Anthropic 在 2024 年 11 月 25 日发布并开源。
MCP 主要解决 LLM 连接外部系统与数据的问题。今天,虽然 LLM 的能力在不断提高,但即使是最复杂的模型也因与数据隔绝而受到限制——被困在信息孤岛和遗留系统之后。每个新的数据源都需要单独定制实现,这使得真正互联的系统难以扩展。
MCP 旨在解决这一挑战。它提供了一个通用的开放标准,用于连接 AI 系统和数据源,用单一协议取代分散的集成。最终,AI 系统能够以更简单、更可靠的方式访问所需的数据。
Anthropic 定义了 MCP 的总体架构,后来很多 MCP 的技术科普都来自于下面这张图。
在该架构图中,包含五个组件:
-
MCP 主机(Hosts):像 Claude Desktop、IDE 或 AI 工具这样的程序,需要通过 MCP 访问数据
-
MCP 客户端(Clients):与服务器保持 1:1 连接的协议客户端
-
MCP 服务器(Servers):轻量级程序,每个程序都通过标准化模型上下文协议公开特定功能
-
本地数据源(Local Data Sources):MCP 服务器可以安全访问计算机上的文件、数据库和服务
-
远程服务(Remote Services):MCP 服务器可以通过互联网(例如通过 API)连接到的外部系统
MCP Client 与 MCP Server 是 MCP 的关键组件。其中,MCP Client 充当 LLM 和 MCP Server 之间的桥梁,MCP Client 的工作流程如下:
-
MCP Client 首先从 MCP Server 获取可用的工具列表。
-
将用户的查询连同工具描述通过 Function Calling 一起发送给 LLM。
-
LLM 决定是否需要使用工具以及使用哪些工具。
-
如果需要使用工具,MCP Client 会通过 MCP Server 执行相应的工具调用。
-
工具调用的结果会被发送回 LLM。
-
LLM 基于所有信息生成自然语言响应。
-
最后将响应展示给用户。
MCP Server 可以提供 3 种主要类型的功能——资源、工具与提示。这些功能使 MCP Server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性:
-
资源(Resources):类似文件的数据,可以被客户端读取,如 API 响应或文件内容。
-
工具(Tools):可以被 LLM 调用的函数(需要用户批准)。
-
提示(Prompts):预先编写的模板,帮助用户完成特定任务。
Claude Desktop 和 Cursor 都支持了 MCP Server 接入能力,它们就是作为 MCP Client 来连接某个 MCP Server 感知和实现调用。
-
MCP 是怎么火起来的?
MCP 最早发布于 2024 年 11 月。但发布之初,MCP 并没有在业内引起太多的关注。从 Github 的 Star History 上,我们能清晰地看到 MCP 的热度趋势,大概可以分为三个阶段。
第一阶段是在 2025 年之前,MCP 集中在小范围的技术圈子内部的交流。Anghropic 提到,他们针对Google Drive、Slack、GitHub、Git、Postgres 和 Puppeteer 等热门企业系统预先构建了 MCP 服务器。在用户与客户侧,Block 和 Apollo 是早期尝鲜者,Zed、Replit、Codeium 和 Sourcegraph 等开发工具公司正在与 MCP 合作。
第二阶段是在 2025 年的前三个月,MCP 处于平稳发展阶段,一些 MCP 项目崭露头角。比如,2 月 10 日,LangChain 发布通用 API 助手解决方案,可自动将任何 OpenAPI 规范转换为智能工具。它采用 LangGraph 和 MCP 构建,可实现与 API 的自然语言交互,而无需自定义集成代码。
第三个阶段就是 3 月初至今,MCP 正式进入热议阶段,标志性的事件有两起。一是 3 月 8 日,LangChain 发布一篇博客,LangChain 联合创始人、CEO Harrison Chase 与 LangGraph 负责人 Nuno Campos 针对 MCP 展台辩论,探讨 MCP 究竟是昙花一现的热点还是注定成为未来的标准。这篇博客附上了一个投票,结果显示有 40.8% 的用户认为 MCP 将是未来标准。
第二起事件就是 Manus 的发布。尽管 Manus 联合创始人季逸超否认了 Manus采用了 MCP 协议,但另一个爆火的“3小时复刻开源版本”的 OpenManus 项目因支持 MCP 协议,而将这一技术引入大众视野。
值得一提的是,PPIO 派欧云是 OpenManus 的重要技术合作伙伴,将一同参与创新并提供计算支持,让 OpenManus 在实不同场景下实现有趣有用的任务,加速技术与社区发展!
海外顶级风险投资机构 a16z 也敏锐地嗅到了 MCP 的热度。他们在 3 月 21 日专门发布了一个 MCP 市场地图,盘点了业内最有热度的 MCP 项目。
此后,OpenAI、谷歌,以及国内的阿里云、腾讯云、MiniMax 等公司也都陆续拥抱 MCP 。MCP 正在迅速成为当前最炙手可热的 AI 技术标准。
-
MCP 与 Function Calling 有什么关系?
在 MCP 火起来之后,很多开发者也常常将其与 Function Calling(函数调用)作对比。由于两者都是解决 LLM 与工具、资源、数据等外部系统的连接问题,概念上存在一定的相似性。
Function Call 是编程中的一个基本概念,指的是在程序中调用一个预先定义好的函数(也称为方法或过程)来执行特定的任务。在大语言模型兴起之后,Function Calling 的意义在于使大模型从纯文本生成升级为可动态调用外部工具和 API 的交互式系统,这也是构建 Agent 的必经之路。
Function Calling 是被 OpenAI 等公司发扬光大的。2023 年 6 月,OpenAI 在 GPT-4-0613 和 GPT-3.5-turbo-0613 模型中首次引入 Function Calling 功能。开发者可通过 API 的functions
参数预定义函数列表,模型根据用户提问自主选择需调用的函数,并生成结构化参数(JSON格式),随后由外部系统执行,比如获取天气信息、发送电子邮件、搜索知识库等。
此后,Anthropic、谷歌 Gemini 等大模型也都陆续推出 Function Calling 能力。然而,每一家大模型在函数接口的支持标准上并不统一。
关键维度 | OpenAI GPT‑4.o / GPT‑4.1 | Anthropic Claude 3.x | Google Gemini 1.5 / 2 (Pro) |
函数声明放哪儿? | 请求参数 tools=[ … ] | 同样放在 tools=[ … ] | 依旧是 tools=[ … ] |
函数定义字段名 | {"type":"function", "**function**":{…}} | {"name":… , "**input_schema**":{…}} | {"**function_declarations**":[{…}]} |
函数定义格式 / 约束 | JSON Schema 2020‑12;支持 enum、default,可加 strict:true 强校验 | JSON Schema draft‑07 子集;不支持 default,官方建议描述越细越好 | JSON Schema / OpenAPI 3.1 子集;暂不支持 nullable,字段名与 OpenAPI 一致 |
模型怎样标记要调用? | 回复中 message.tool_calls[*] 含 name+arguments | stop_reason="tool_use",并在 content[0].tool 给出 name+input | content.parts[0].function_call 给出 name+args |
一次能列几个函数? | 可同时返回 多个 tool_calls | 通常一次只选 一个 工具 | 支持一次列出 多个 函数,也能串联执行 |
能否强行指定调用? | tool_choice="auto" / "none" / {"type":"function","function":"X"} | 无显式字段,只能靠提示词 | 同样有 tool_choice;也可让模型纯文本回答 |
不同的标准协议意味着当开发者需要切换模型时,尤其是构建复杂工作流时,会有很多麻烦。假如我构建了一款个人 AI 助理,要用 GPT-4 查询天气内容,然后用 Claude 3.7 回复电子邮件,再用 Gemini 2.5 搜索知识库,这意味着我要写三遍代码。
MCP 就是为了解决这一问题,它统一了各家大模型原本差异化的 Function Calling 标准,形成通用协议。这也是为什么 Anthropic 将类比为 USB-C 接口的原因。就像 USB-C 简化了将不同设备连接到电脑的方式一样,MCP 简化了 AI 模型与数据、工具和服务的交互方式。有了 MCP 之后,开发者只需要按照协议开发一次接口,就能被多模型调用。
当然,MCP 并非要取代 Function Calling 以及传统 API,两者更多是互补关系。
在一个复杂工作流中,大模型要想跟外部系统做连接,可以分为两大阶段。
第一阶段:将提示分解为 Function Calling 指令。 Function Calling 负责将自然语言提示转换为结构化的函数调用指令,这些指令可以被以工具为导向的系统(例如 MCP 服务器)理解和执行。这一阶段专注于为工具生成精确的指令。
第二阶段:执行函数调用指令。 MCP 通过在一个标准化框架中管理工具的发现、调用和响应处理,来执行这些指令。这确保了生成的函数调用能够在各种企业系统中一致且有效地执行。
这两个阶段共同确保 LLM 不仅能够解读自然语言提示,还能利用企业工具提供有意义的结果。
-
MCP 与 A2A 有什么区别?
近期,谷歌还发布了一项名为 Agent2Agent(A2A)的全新开放协议。不过,该协议并非要取代 MCP,而是作为 MCP 的一种补充,目的是解决多代理之间的互操作性。
MCP 是连接 LLM 与数据、资源和工具,将不同模型和框架之间的函数调用进行标准化。这将会创建一个工具服务提供商生态系统,并显著降低连接代理与工具和数据的复杂性,未来将会有越来越多的框架、服务提供商和平台采用 MCP。
而 A2A 专注于不同的问题,是一种一种应用层协议,使代理能够以其自然的模式进行协作,允许代理以代理(或用户)的身份进行通信,而不是以工具的身份。
举一个例子:假设有一家汽车修理店,专门修理汽车。该店雇佣了自主工作的员工,他们使用专用工具(例如汽车千斤顶、万用表和套筒扳手)来诊断和修复问题。这些员工经常需要诊断和修复他们从未见过的问题。修理过程可能涉及与客户的广泛交流、研究以及与零部件供应商的合作。
现在,我们将修理店的员工视为人工智能代理:
-
MCP 是将这些代理与它们的结构化工具(例如“将平台提升 2 米”“将扳手向右转动 4 毫米”)连接起来的协议。
-
A2A 是使终端用户或其他代理能够与修理店员工合作的协议(例如“我的车发出嘎嘎声”)。A2A 支持持续的双向沟通以及不断演变的计划,以实现目标(例如“给我发一张左轮的照片”“我注意到有液体泄漏。这种情况持续多久了?”)。A2A 还帮助汽车修理店的员工与其他代理(例如他们的零部件供应商)合作。
-
关于MCP 的一些资源
如果你是一个开发者,对于开发 MCP 项目感兴趣,推荐以下 MCP 的相关资源。
官方 MCP 文档:https://modelcontextprotocol.io/introduction
官方 MCP 开源社区:https://github.com/modelcontextprotocol
官方 MCP 服务器:https://github.com/modelcontextprotocol/servers?tab=readme-ov-file
社区 MCP 客户端:https://www.pulsemcp.com/clients
社区 MCP 服务器:https://github.com/punkpeye/awesome-mcp-servers
作为一站式 AIGC 云服务平台,PPIO派欧云提供高性能的 API 服务,涵盖了最新的 DeepSeek R1/V3 Turbo、Qwen 等系列模型,仅需一行代码即可调用;并支持在 chatbox、angthingLLM、Ragflow 等 20+ 主流第三方平台调用。
除了稳定、弹性的底层技术服务外,企业最核心关注的是能不能低成本的使用 AI 推理服务。在这方面,PPIO 通过 2024 年的实践,已经实现大模型推理的 10 倍 + 降本,并在成本与性能之间找到最佳平衡。