一、MCP 是什么:一句话定义
MCP(Model Context Protocol,模型上下文协议)是一种开放标准,于 2024 年 11 月底由国外一家头部大模型厂商率先提出并开放规范,旨在统一大模型应用与外部数据源、外部工具之间的通信协议。它使 AI 应用能够以标准化、可审计的方式安全地访问和操作本地及远程数据,为 AI 应用提供了“连接万物”的通用接口。
可以从三个视角理解这个定义:
- 技术视角:MCP 是一套基于 JSON-RPC 消息格式的客户端—服务器协议,规定了宿主应用、客户端与服务器之间如何建立连接、发现能力、发起调用与返回结果。
- 业务视角:它像一根“统一插座”——各类数据源与工具做成标准“插头”,任何遵循协议的 AI 应用都能即插即用,不再需要逐个定制对接。
- 使用视角:开发者只需部署或复用一个 MCP 服务器,AI 应用就能获得对某类数据或工具的标准访问能力,模型侧无需任何改动。
二、MCP 为什么出现:背景与价值
1. 数据孤岛限制了 AI 的能力上限
大模型的知识来自训练语料,天然是静态、滞后的。企业内部知识库、生产数据库、个人本地文件、实时互联网信息,默认都不在模型的“视野”之内。过去的常见做法各有局限:
- 复制粘贴:只适合少量文本,无法规模化;
- 上传知识库:需要预先构建和维护,更新不及时,且难以覆盖“执行操作”类任务;
- 定制接口对接:每个应用单独开发,重复投入。
即便模型能力再强,拿不到真实数据也做不出准确回答——巧妇难为无米之炊。
2. N×M 的集成困境
设想 M 个 AI 应用需要接入 N 个数据源或工具,传统模式下每个“应用—数据源”组合都要定制一次集成,总成本是 M×N,且互不复用。有了统一协议后,每个数据源只需实现一次服务器、每个应用只需实现一次客户端,总成本降为 M+N,工具生态可以跨应用复用。
3. 生态碎片化
不同模型、不同工具的接口风格、鉴权方式、数据格式各不相同。MCP 通过统一的消息格式与能力描述规范,把“工具长什么样、如何被发现、如何被调用”标准化下来。
综合来看,MCP 的核心价值包括:
- 标准化:统一连接与调用方式,降低理解与维护成本;
- 复用性:工具一次实现,处处可用,生态可积累;
- 解耦:模型侧与工具侧独立演进,互不绑架;
- 安全性:所有调用经客户端中转,天然可插入权限校验、人工确认与审计。
三、MCP 的核心组成
1. 三个角色
- MCP Host(宿主):承载大模型、直接面向用户的 AI 应用,例如对话客户端、编程助手、智能体开发平台等。
- MCP Client(客户端):宿主内部的协议组件,与每个服务器维持一条连接,负责协议消息的收发与转发。
- MCP Server(服务器):轻量级服务程序,封装某一类数据或能力并按协议对外暴露,例如文件系统服务器、数据库服务器、某内部 API 的封装服务器等。
2. 服务器可暴露的三类核心能力(原语)
- Tools(工具):可被模型主动调用的“函数”,如执行查询、写入数据、发送消息,通常伴随副作用;
- Resources(资源):可被读取的数据,如文件内容、数据记录、日志片段,由应用决定何时使用;
- Prompts(提示模板):预置的提示词模板,方便用户复用标准化任务流程。
此外,协议还定义了少量扩展能力(例如服务器反向请求宿主模型生成内容的“采样”机制),用于更复杂的协作场景,日常接入以前三类为主。
3. 部署形态
- 本地部署:服务器与宿主同机运行,通过标准输入输出通信,适合访问本地文件、本地开发环境;
- 远程部署:服务器部署在网络上,通过基于 HTTP 的流式传输通信,适合共享企业数据、跨团队复用。
四、MCP 是如何工作的
1. 通信基础
- 消息格式:JSON-RPC 2.0,消息分为请求、响应、通知三类;
- 传输方式:本地常用标准输入输出,远程常用基于 HTTP 的流式传输。
2. 一次典型调用的完整流程
以“帮我统计上个月的订单量”为例:
- 初始化握手:宿主启动后,客户端与服务器完成连接初始化,协商协议版本与双方能力;
- 能力发现:客户端获取服务器暴露的工具列表及结构化描述;
- 能力注入:宿主将工具描述整理进模型上下文,模型据此“知道”自己有哪些工具可用;
- 模型决策:模型结合用户问题,判断需要调用工具,输出结构化的调用意图(工具名 + 参数);
- 权限校验与转发:宿主校验调用合法性,必要时请用户确认;随后客户端通过协议把请求发给服务器;
- 执行与返回:服务器执行实际操作(查库、读文件等),将结果返回宿主;
- 结果回填:执行结果作为工具结果进入对话上下文,模型基于结果生成最终回答。
示意性调用消息(JSON-RPC 风格):
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "query_database", "arguments": { "sql": "SELECT COUNT(*) FROM orders WHERE created_at >= '2025-07-01'" } }}
示意性工具描述(服务器声明能力时提供):
{ "name": "get_weather", "description": "查询指定城市的实时天气", "inputSchema": { "type": "object", "properties": { "city": { "type": "string", "description": "城市名称" } }, "required": ["city"] }}
3. 关键设计点
- 能力协商:握手阶段双方互相声明能力,避免不兼容的调用;
- 人机协同:宿主可在敏感操作前插入人工确认,形成“人在回路”的安全机制;
- 上下文由宿主统一管理:模型不直接接触网络与服务器,所有交互经宿主中转,便于统一治理。
agent-">五、MCP、Function Calling 与 AI Agent 的关系
三者经常被放在一起讨论,但处于不同层次:
- Function Calling(函数调用)是模型层能力:指模型能以结构化形式输出“我要调用哪个函数、参数是什么”。它解决“模型如何表达调用意图”,但不规定函数从哪里来、如何传输、如何鉴权。
- MCP 是协议层标准:解决“工具与数据如何被标准化地接入模型应用”。它为 Function Calling 提供了“弹药库”——大量可被发现、可被调用的工具。
- AI Agent(智能体)是系统层形态:以大模型为核心决策单元,具备任务规划、记忆、工具使用与多步自主执行能力,围绕目标持续“感知—规划—行动—反思”。Agent 通常同时使用 Function Calling(表达调用意图)与 MCP(获取工具供给)。
| 层次 |
概念 |
回答的问题 |
类比 |
| 能力层 |
Function Calling |
模型如何”开口要工具” |
会伸手 |
| 协议层 |
MCP |
工具如何标准化送达模型 |
货架与传送带 |
| 系统层 |
AI Agent |
如何自主完成整套任务 |
独立干活的工匠 |
一句话总结:Function Calling 是动作,MCP 是通道与标准,AI Agent 是使用它们的完整系统。没有 MCP,Agent 仍可工作,但工具生态难以规模化;没有 Agent,MCP 只是静态的连接标准;三者组合,才能构建“连接万物、自主执行”的智能应用。
六、典型应用场景
- 数据与文件系统接入:让对话式应用直接读写本地文件、查询结构化数据库,回答基于真实数据的问题;
- 开发效率工具:编程助手通过 MCP 连接代码仓库、构建系统、测试与日志服务,实现“读懂工程上下文”的辅助编码;
- Web 与浏览器自动化:模型按协议调用网页检索与页面操作类工具,完成信息采集与流程执行;
- 办公与协作:连接文档、日程、消息通信类系统,让智能体代为起草、汇总与分发;
- 企业智能体平台:在云上构建智能体时,用 MCP 统一接入企业内部 API、私有知识与各类服务,避免逐个定制集成。
七、使用注意事项
- 安全与权限:MCP 显著扩大了模型的能力边界,应遵循最小权限原则,按需暴露工具;对写入、删除、支付等敏感操作启用人工确认;审慎评估第三方服务器的来源与可信度。
- 提示注入风险:工具返回的文本会进入模型上下文,若其中夹带恶意指令,可能诱导模型执行危险操作,需在宿主侧做过滤与隔离。
- 工具数量与质量:工具过多会稀释模型注意力、增加误选率;工具描述应清晰、职责单一。
- 稳定性与性能:服务器是新增依赖,需考虑超时、重试与降级;远程服务器还要评估网络延迟与并发承载能力。
- 版本与兼容:关注协议版本协商结果,服务器实现与宿主版本不匹配可能导致能力不可用。
- 审计与合规:记录每次工具调用的目标、参数与结果,便于事后追溯;远程接入涉及数据出域时,需同步评估数据合规要求。
八、总结
MCP 是一套统一大模型与外部数据源、工具连接方式的开放协议。它把过去 M×N 的定制集成简化为 M+N 的标准对接,让 AI 应用能够以安全、可治理的方式“连接万物”。需要强调的是:它不是模型本身的新能力(那是 Function Calling 所在的层面),也不是自主执行任务的完整系统(那是 AI Agent),而是支撑两者协同的连接层标准。在选型与落地时,应把它当作基础设施来对待——重点投入权限治理、安全审计与服务质量管理,才能真正释放其在智能体生态中的价值。