模型上下文协议(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)应用于 →工具(Tools)

MCP 为工具、资源等能力提供协议接口;工具也可通过普通应用接口实现。

最小权限约束 →模型上下文协议(MCP)

接入 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