如果你关注 AI Agent 领域,大概率会频繁看到一个词:MCP(Model Context Protocol) 。无论是 Claude、Cursor 还是各种主流的 Agent 框架,都开始密集地支持 MCP。很多文章甚至直接将其誉为 "AI 时代的 USB 协议"。
那么,MCP 到底是什么?它为什么突然爆火?又硬核地解决了什么工程化痛点?
1. 痛点引入:从一个现实的 Agent 开发难题谈起
假设我们要开发一个真正的 AI 助手,面对用户日常的复杂需求,它需要频繁与外部世界交互:
- "帮我查看 GitHub 仓库最近的 PR。" →\rightarrow→ 调用 GitHub API
- "帮我查一下数据库中的订单数据。" →\rightarrow→ 连接 MySQL/PostgreSQL
- "帮我读取本地项目代码并搜索最新 AI 新闻。" →\rightarrow→ 访问本地文件系统 + 搜索引擎
在这个场景下,一个成熟的 Agent 需要连接几十种外部工具(如 GitLab、Redis、Notion、Slack、Google Drive 等)。
传统 Function Calling 的扩展瓶颈
在 MCP 出现之前,主流方案是 Function Calling(函数调用)。其工作流程通常是:
- 开发者在代码中硬编码工具的 JSON Schema 申明。
- 大模型理解需求后,生成符合格式的 JSON 参数。
- 开发者在本地后端执行具体的函数(如
queryOrder(10001)),再将结果喂回给模型。
当工具数量较少时,这种模式运行良好。但随着企业级 Agent 的深入,工具爆炸的问题出现了:如果公司有 20 个系统,每个系统提供 10 个工具,总共就是 200 个 Tool。
最致命的是,每个 Agent 宿主都要重复接入一次 ------Cursor 接一遍,Claude 接一遍,Spring AI、Dify、LangGraph 各自又要接一遍。这种 M×NM \times NM×N 的网状接入关系,导致维护成本呈指数级上升。
2. 什么是 MCP?AI 时代的"USB 标准"
MCP 全称 Model Context Protocol(模型上下文协议) ,由 AI 巨头 Anthropic 推出。它的核心目标极其纯粹:统一工具与数据源接入大模型的规范,将生态从"网状集成"变成"总线集成"。
完美的类比:USB 协议
在 USB 协议出现之前,计算机连接外设是一场灾难:鼠标、键盘、打印机各有各的专用接口和驱动,开发与适配极其痛苦。
USB 出现后,制定了统一的电气与数据标准。设备厂商只需实现 USB 标准,就能即插即用连接所有电脑。MCP 就是 AI 界的 USB:工具开发者只需开发一次 MCP Server,所有的 MCP Client(大模型/Agent 框架)就能立刻无缝调用。
3. MCP 的三层架构设计
MCP 的架构非常优雅,主要由三个角色组成:
┌──────────────┐
│ 用户 │
└──────┬───────┘
▼
┌──────────────┐
│ LLM 核心 │
└──────┬───────┘
▼
┌──────────────────────┐
│ MCP Client │ (如 Claude Desktop, Cursor, Cherry Studio)
└──────────┬───────────┘
▼
┌──────────────────────┐
│ MCP Server │ (工具适配器:如 GitHub / MySQL / File Server)
└──────────┬───────────┘
▼
┌──────────────────────┐
│ 外部工具 / 数据源 │
└──────────────────────┘
- MCP Client:大模型的实际宿主(如 Cursor、Claude Desktop)。它负责集成大模型,并作为客户端连接各种 MCP Server。
- MCP Server :工具适配器。它将原生复杂的 API(如 GitHub 的
GET /repos、GET /pulls)包装成标准化的 MCP 能力,并暴露给 Client。 - LLM:大脑,负责理解 Client 传来的上下文,并决定调用哪个标准工具。
杀手级特性:动态工具发现(Tool Discovery)
在传统的 Function Calling 中,工具必须提前硬编码注册 给模型。
而在 MCP 架构中,客户端可以动态发现工具。当你为 Agent 连上一个 GitHub MCP Server 时,模型可以直接发起询问:"你有哪些工具可用?"Server 会动态返回能力列表。模型自动获得新技能,无需开发者修改任何一行接入代码。
4. 协议核心:不仅是 Tool,更是三大能力的合集
很多人误以为 MCP 只是 Function Calling 的升级版,其实不然。MCP 在协议层定义了三种核心能力:
- Tools(动态操作):对应函数调用。允许模型执行写操作或触发行为,如"创建一条 GitHub PR"或"修改数据库字段"。
- Resources(数据资源):对应只读数据。允许模型直接、安全地读取标准化的背景信息,如"本地日志文件"、"MySQL 表结构"或"项目 Markdown 文档"。
- Prompts(预定义模板):对应提示词管理。Server 可以动态向模型提供标准化的专家模板,如"代码 Review 模板"、"PR 检查清单",免去客户端手动维护 Prompt 的麻烦。
5. 深度对比:MCP vs Function Calling
| 维度 | Function Calling (函数调用) | MCP (模型上下文协议) |
|---|---|---|
| 定位 | 一种模型能力(由底层模型厂商实现) | 一套生态协议(跨模型、跨框架的基础设施) |
| 解决问题 | 解决"大模型如何生成结构化调用参数" | 解决"工具与数据如何标准化接入不同模型" |
| 集成方式 | 强耦合,每个 Agent 框架需手动硬编码接入 | 松耦合,即插即用,具备动态工具发现机制 |
| 覆盖范围 | 仅限动作执行 (Tools) | 覆盖动作 (Tools)、数据 (Resources) 和提示词 (Prompts) |
一句话总结二者关系 :Function Calling 是能力 ,MCP 是协议。MCP 并不排斥 Function Calling,实际上,MCP 在底层最终依然会转化为大模型的 Tool Call 来完成执行,但它极大地解放了工具的管理与分发效率。
6. 面试通关:如何向面试官专业地解释 MCP?
面试官提问:"我看你最近关注了 MCP 协议,能聊聊它是什么,以及为什么 Spring AI、LangChain 等框架都在密集支持它吗?"
教科书级回答:
"MCP(Model Context Protocol) 是 Anthropic 推出的模型上下文协议,旨在解决 Agent 工程化落地中工具与数据源接入碎片化 的核心痛点。
传统的 Function Calling 属于强耦合开发,工具多了之后维护成本极高。而 MCP 引入了类似 USB 的标准化 C/S 架构:
- 它统一了 Tools、Resources、Prompts 三大能力的交互规范;
- 具备动态工具发现机制,让 Agent 能够即插即用地面向接口编程,实现'工具开发一次,全生态 Agent 通用'。
Spring AI 等框架积极拥抱它,本质上是因为 Agent 正在从'单体玩具'走向'企业级工程化'。MCP 通过建立工业标准,拉低了复杂系统集成的边际成本,是未来 Agent 生态不可或缺的基础设施。"
总结
过去的大模型,核心在解决"理解世界、生成答案"的智力问题;而未来的 Agent,核心在解决"调用工具、访问数据、执行任务"的落地问题。
MCP 的出现,并不是让大模型的 IQ 变得更高,而是为大模型接入真实世界修了一条"高速公路"。理解了 MCP,你才算真正看懂了 AI Agent 走向标准化、工业化大生产的序幕。
