CS329Z中文学习站

模型上下文协议(MCP)规范(2025-06-18 版)

"Model Context Protocol Specification (Version 2025-06-18)"

Model Context Protocol 项目(modelcontextprotocol.io) · "官方规范网页 · modelcontextprotocol.io · Version 2025-06-18"

必读全文中译查看原文(HTML) ↗

导读

本文是第 3 周"工具调用与 MCP"专题的核心材料。MCP(Model Context Protocol,模型上下文协议)是一个开放协议,为 LLM 应用接入外部数据源与工具提供标准化方式,被称为"AI 应用的 USB-C 接口"。本页是 2025-06-18 版官方规范站的概览页(Specification/Overview),它规定了整个协议的骨架:架构上的三种角色(Host、Client、Server)、通信基础(JSON-RPC 2.0 消息、有状态连接、能力协商)、Server 提供的三类能力(Resources、Prompts、Tools)与 Client 提供的三类能力(Sampling、Roots、Elicitation),以及贯穿协议的安全与信任原则。

这份概览值得逐句精读:它定义了工具调用的信任边界(工具即任意代码执行、工具描述应视为不可信)、采样的用户控制权(用户须批准每次 LLM 采样并能看到实际发出的提示),这些原则直接决定构建 Agent 工具层的安全设计。下文完整翻译该概览页的全部内容,未补充存档之外的规范细节;各子规范的深入内容(Architecture、Base Protocol、Server Features、Client Features)可按文末"延伸阅读"所列条目在官网继续查阅。

全文中译

译注:本存档仅包含规范站 Specification 页面(即协议概览)的完整内容。以下译文覆盖该页全部实质内容,并按原文结构整理。

规范说明

模型上下文协议(Model Context Protocol,MCP)是一个开放协议,支持 LLM 应用与外部数据源和工具之间的无缝集成。无论你是在构建 AI 加持的 IDE、增强一个聊天界面,还是创建自定义的 AI 工作流,MCP 都提供了一种标准化的方式,把 LLM 与它们所需的上下文连接起来。

本规范定义了权威的协议要求,其依据是 schema.ts 中的 TypeScript 模式(schema)。实现指南与示例请访问 modelcontextprotocol.io。

本文档中的关键词"必须(MUST)"、"绝不可以(MUST NOT)"、"要求(REQUIRED)"、"应当(SHALL)"、"不应(SHALL NOT)"、"建议(SHOULD)"、"不建议(SHOULD NOT)"、"推荐(RECOMMENDED)"、"不推荐(NOT RECOMMENDED)"、"可以(MAY)"和"可选(OPTIONAL)",当且仅当它们以全大写形式出现时,应按 BCP 14 [RFC2119] [RFC8174] 的描述进行解释。

概览(Overview)

MCP 为应用程序提供了一种标准化的方式来:

  • 与语言模型共享上下文信息;
  • 向 AI 系统暴露工具与能力;
  • 构建可组合的集成与工作流。

该协议使用 JSON-RPC 2.0 消息在以下三者之间建立通信:

  • 主机(Hosts):发起连接的 LLM 应用程序;
  • 客户端(Clients):主机应用程序内部的连接器;
  • 服务器(Servers):提供上下文与能力的服务。

MCP 的部分设计灵感来自语言服务器协议(Language Server Protocol, LSP)——LSP 标准化了如何在整个开发工具生态中为编程语言添加支持。与此类似,MCP 标准化了如何将额外的上下文和工具集成到 AI 应用生态之中。

关键细节(Key Details)

基础协议(Base Protocol)

  • JSON-RPC 消息格式;
  • 有状态连接(Stateful connections);
  • 服务器与客户端的能力协商(capability negotiation)。

功能(Features)

服务器(Servers)可向客户端提供以下任意功能:

  • 资源(Resources):供用户或 AI 模型使用的上下文与数据;
  • 提示(Prompts):面向用户的模板化消息与工作流;
  • 工具(Tools):供 AI 模型执行的函数。

客户端(Clients)可向服务器提供以下功能:

  • 采样(Sampling):由服务器发起的智能体行为与递归式 LLM 交互;
  • 根(Roots):由服务器发起的、对 URI 或文件系统边界(即服务器可在其中操作的范围)的询问;
  • 引导填写(Elicitation):由服务器发起的、向用户请求补充信息的机制。

附加工具(Additional Utilities)

  • 配置(Configuration);
  • 进度追踪(Progress tracking);
  • 取消(Cancellation);
  • 错误报告(Error reporting);
  • 日志(Logging)。

安全与信任及安全(Security and Trust & Safety)

模型上下文协议通过任意的数据访问与代码执行路径,提供了强大的能力。伴随这种能力而来的,是所有实现者都必须认真对待的重要安全与信任考量。

关键原则(Key Principles)

用户同意与控制(User Consent and Control)

  • 用户必须明确同意并理解所有的数据访问与操作;
  • 用户必须保持对"共享哪些数据、执行哪些操作"的控制权;
  • 实现者应提供清晰的界面(UI),供用户审阅和授权相关活动。

数据隐私(Data Privacy)

  • 主机在向服务器暴露用户数据之前,必须获得用户的明确同意;
  • 未经用户同意,主机不得将资源数据传输到其他地方;
  • 用户数据应通过适当的访问控制加以保护。

工具安全(Tool Safety)

  • 工具代表任意代码执行(arbitrary code execution),必须以相应的谨慎态度对待;
  • 特别地,对工具行为的描述(例如注解/annotations)应被视为不可信,除非其来自可信任的服务器;
  • 主机在调用任何工具之前,必须获得用户的明确同意;
  • 用户在授权使用某个工具之前,应当了解该工具的功能。

LLM 采样控制(LLM Sampling Controls)

  • 用户必须明确批准任何 LLM 采样请求;
  • 用户应当控制:
  • 是否进行采样;
  • 实际发送的提示(prompt)内容;
  • 服务器能看到哪些结果;
  • 协议有意限制服务器对提示内容的可见性。

实施指南(Implementation Guidelines)

尽管 MCP 本身无法在协议层面强制执行这些安全原则,实现者应当(SHOULD):

  • 在应用中内建健壮的同意与授权流程;
  • 提供清晰的安全影响说明文档;
  • 实现适当的访问控制与数据保护;
  • 在集成中遵循安全最佳实践;
  • 在功能设计中考虑隐私影响。

延伸阅读(Learn More)

可以进一步探索协议各组件的详细规范:

  • 架构(Architecture);
  • 基础协议(Base Protocol);
  • 服务器功能(Server Features);
  • 客户端功能(Client Features);
  • 参与贡献(Contributing)。

要点速览

  • MCP 是开放协议,目标是让 LLM 应用与外部数据源、工具无缝集成:无论 AI IDE、聊天界面还是自定义 AI 工作流,都以同一标准化方式接入上下文。
  • 通信地基是 JSON-RPC 2.0 消息;连接是有状态的,并且服务器与客户端之间进行能力协商(capability negotiation)。附加工具层提供配置、进度追踪、取消、错误报告与日志。
  • 架构三角色:Host(发起连接的 LLM 应用,如 IDE 或聊天客户端)、Client(Host 内部的连接器,通常与 Server 一一相连)、Server(提供上下文与能力的服务)。
  • 设计灵感来自语言服务器协议(LSP):如同 LSP 统一了编程语言在开发工具生态中的接入,MCP 统一了上下文与工具在 AI 应用生态中的接入。
  • Server 三大能力:Resources(给用户/模型用的上下文数据)、Prompts(模板化消息与工作流)、Tools(供模型执行的函数)。
  • Client 三大能力:Sampling(服务器发起的智能体行为与递归 LLM 交互)、Roots(询问 URI/文件系统操作边界)、Elicitation(向用户征求补充信息)。
  • 安全第一原则:用户必须明确同意并理解所有数据访问与操作,且保留对共享数据和所执行操作的最终控制权。
  • 工具即任意代码执行:工具的行为描述(如 annotations)应视为不可信(除非来自可信服务器);调用任何工具前 Host 必须获得用户明确同意。
  • 采样必须由用户批准:用户控制是否采样、实际发出的提示内容、以及服务器可见的结果;协议有意限制服务器对提示的可见性——这是 MCP 设计中防提示泄露的关键边界。
  • 协议本身无法在协议层强制执行安全原则,因此规范用 SHOULD 级别要求实现者内建同意/授权流程、访问控制、数据保护并遵循安全最佳实践。