模型上下文协议(MCP)
MCP 为 AI 应用连接外部工具和资料定义共同协议。应用通过客户端与服务端交互,发现能力、读取信息或调用工具;本篇以 2025-11-25 规范为准。
理解与应用
模型上下文协议 MCP 定义了 AI 应用与外部服务交换能力和消息的共同方式。它帮助不同应用连接提供工具或资料的服务端,减少每对系统都重新设计接口的需要。MCP 负责连接与交互约定,模型怎样理解问题、选择工具和生成回答,仍是应用与模型的工作。
可以用文件检索来理解参与方。用户在一个助手应用中提问,这个应用是宿主;宿主里的 MCP 客户端连接文件服务端;服务端提供搜索和读取文件的能力。宿主可以连接多个服务,每条连接由相应客户端处理,服务端则负责自己的资料和业务操作。
连接开始时,双方先初始化,协商协议版本并声明能力。初始化完成后,客户端可以通过 tools/list 发现工具,再用 tools/call 请求执行。例如先调用 search_files 找到文件编号,再把编号交给 read_file 读取内容。搜索结果来自服务端,随后由宿主送给模型使用。
工具只是 MCP 能表达的一类能力。服务端还可以提供资源和提示模板等内容:资源适合暴露可读取的资料,工具适合表达可执行的操作。一个文件服务也可以把读取文件设计成工具,因此“文件”并不只能走资源接口,实际如何提供要看服务端声明和客户端支持。
在本篇采用的 2025-11-25 规范中,消息使用 JSON-RPC,标准传输包括 stdio 和 Streamable HTTP。stdio 常用于客户端启动的本地进程,协议消息走标准输入输出,日志走标准错误;Streamable HTTP 用于 HTTP 服务,可以使用 SSE 传送流式消息。它已替代旧版 HTTP+SSE 传输,两者不应混称。
接通协议并不意味着所有文件都能读取。远程文件服务仍要验证请求身份、按规范校验 Origin,并在采用会话时正确核验和管理会话;具体文件权限由服务端检查。返回的文档是回答所需的资料,不能因为里面写了某个操作,就为该操作取得授权。宿主则负责决定哪些能力可交给模型。选用现有客户端或服务端时,还需核对版本、传输和具体能力是否兼容;仅仅都标着 MCP,并不能保证某项工具或资料读取方式一定能互通。
看一次交互:通过 MCP 搜索并读取一份制度文件
search_files 和 read_file 是这个虚构服务端定义的工具名,MCP 本身没有规定所有文件服务必须使用这些名字。协议统一了发现和调用方式;文件如何搜索、读取和鉴权仍由服务端实现。
以下为教学示意,未连接真实业务系统。
交互示意
以下省略完整 JSON-RPC 封装和工具参数 schema,展示应用交互顺序。
初始化:
客户端与文件服务端采用 2025-11-25 协议版本;服务端声明 tools 能力。
客户端发送 notifications/initialized,完成初始化。
客户端 → 服务端:tools/list
服务端 → 客户端:search_files(query)、read_file(file_id)
客户端 → 服务端:tools/call
name=search_files,arguments={"query":"成都 住宿制度"}
服务端 → 客户端:命中文件 policy-19,标题为《住宿费用标准》。
客户端 → 服务端:tools/call
name=read_file,arguments={"file_id":"policy-19"}
服务端 → 客户端:返回该文件的正文与来源信息。示意结果
宿主拿到 policy-19 的内容后,可以将相关条款交给模型回答问题。 如果当前用户无权读取该文件,服务端应返回相应错误,而不能因文件已经被搜索到就跳过权限检查。
常见误区
- 把 MCP 当成自动赋予模型知识或权限的插件名称,忽略宿主、连接和服务端各自的职责。
- 以为使用 SSE 就一定是旧 HTTP+SSE 传输;Streamable HTTP 也可以使用 SSE,判断时要看协议与端点行为。
- 把 MCP 等同于模型 API 的函数调用,会混淆两层接口。函数调用承载模型提出的调用,MCP 承载客户端与外部服务的交互;宿主可以把 MCP 工具映射成模型可用的函数。
前置与延伸
建议先读
相关概念
参考与版本
Apollo 原创讲解与教学示例。参考资料用于核对技术定义;核验日不代表资料的发布日期。
- MCP 2025-11-25:Transports ↗
已核对固定规范版本 2025-11-25:标准传输为 stdio 和 Streamable HTTP;SSE 可用于后者,旧 HTTP+SSE 仅作为兼容背景。此版本号不是本文访问日。 · 核验:2026-10-10
- MCP 2025-11-25:Lifecycle ↗
已核对固定规范版本 2025-11-25 的 initialize、能力协商与 initialized 通知;教学实验不冒充完整合规客户端。 · 核验:2026-10-10
- MCP 2025-11-25:Tools ↗
已核对固定规范版本 2025-11-25 的工具发现与调用结构;协议提供互操作契约,不代替宿主授权及输入验证。 · 核验:2026-10-10