1. 什么是 MCP 规范? #
MCP 规范是 Model Context Protocol 的官方技术文档,定义了客户端与服务器如何通信、必须实现哪些能力、以及应遵循的安全原则。
| 通俗理解 | 说明 |
|---|---|
| 协议规则 | 像「交通规则」一样,规定消息格式、连接方式、能力协商 |
| 实现依据 | 开发 MCP 服务器或客户端时,以规范为准,确保兼容 |
| 权威来源 | 基于 schema.ts 中的 TypeScript 模式定义 |
规范中的关键词「MUST」「SHOULD」「MAY」等按 BCP 14 解释:MUST = 必须,SHOULD = 建议,MAY = 可选。详见 规范关键词速查。
2. 本章你将学到 #
- MCP 协议的整体架构与核心能力
- 服务器与客户端各自提供哪些功能
- 安全与信任原则
- 如何在本系列文档中继续深入学习
3. 协议概述 #
3.1 MCP 解决什么问题? #
MCP 为 AI 应用提供了一种标准化方式,用于:
| 能力 | 说明 |
|---|---|
| 共享上下文 | 将外部数据(文件、数据库、API)提供给 LLM |
| 暴露工具 | 让 AI 调用函数(如查天气、写文件、发邮件) |
| 可组合集成 | 多个服务器可同时连接,构建复杂工作流 |
3.2 通信方式 #
协议使用 JSON-RPC 2.0 在以下角色之间通信:
| 角色 | 说明 | 举例 |
|---|---|---|
| 主机 | 发起连接的 LLM 应用 | Claude Desktop、VS Code、Cursor |
| 客户端 | 主机内与 MCP 服务器通信的组件 | 每个服务器对应一个客户端连接 |
| 服务器 | 提供上下文和能力的服务 | 文件系统服务器、Sentry 服务器 |
MCP 借鉴了 Language Server Protocol 的设计思路:LSP 标准化了编程语言支持,MCP 标准化了 AI 如何接入外部数据和工具。
4. 核心能力 #
4.1 服务器可提供的功能 #
| 功能 | 通俗理解 | 示例 |
|---|---|---|
| 资源 (Resources) | 供 AI 或用户读取的数据 | 文件内容、数据库查询结果、API 响应 |
| 提示 (Prompts) | 预置的模板化消息 | 「总结这段代码」「生成 PR 描述」 |
| 工具 (Tools) | 供 AI 调用的函数 | get_forecast、read_file、send_email |
4.2 客户端可提供的功能 #
| 功能 | 通俗理解 | 示例 |
|---|---|---|
| 采样 (Sampling) | 服务器发起的 LLM 调用 | 服务器请求「让 AI 生成一段回复」 |
| 根 (Root) | 服务器查询 URI 或文件系统边界 | 确定可操作的范围 |
| 引导(Elicitation) | 服务器向用户请求额外信息 | 弹窗让用户选择或输入 |
4.3 附加工具 #
除核心能力外,协议还支持:
- 配置:管理连接参数
- 进度跟踪:长时间任务的状态更新
- 取消:中止进行中的操作
- 错误报告:结构化错误信息
- 日志记录:调试与审计
5. 安全与信任 #
MCP 允许访问任意数据和执行任意代码,因此安全与信任是必须认真对待的议题。
5.1 关键原则 #
| 原则 | 要求 |
|---|---|
| 用户同意与控制 | 用户必须明确同意并理解所有数据访问和操作;保留对共享数据和执行操作的控制权;实现者应提供清晰的 UI 供用户审查和授权 |
| 数据隐私 | 主机在向服务器暴露用户数据前必须获得用户明确同意;未经同意不得传输资源数据;用户数据应通过适当的访问控制保护 |
| 工具安全 | 工具代表任意代码执行,必须以谨慎态度对待;工具描述(如注解)若来自不可信服务器,应视为不可信;主机在调用工具前必须获得用户明确同意 |
| LLM 采样控制 | 用户必须明确批准任何 LLM 采样请求;用户应控制是否采样、实际发送的提示、服务器可见的结果;协议有意限制服务器对提示的可见性 |
5.2 实现指南 #
虽然 MCP 无法在协议层面强制执行这些原则,但实现者 SHOULD:
- 在应用中构建健壮的同意和授权流程
- 提供安全影响的清晰文档
- 实施适当的访问控制和数据保护
- 在集成中遵循安全最佳实践
- 在功能设计中考虑隐私影响
详见 安全最佳实践 和 理解 MCP 中的授权。
6. 规范关键词速查 #
阅读规范时,以下关键词有特定含义(按 RFC 2119 / RFC 8174):
| 关键词 | 含义 |
|---|---|
| MUST / REQUIRED / SHALL | 必须遵守,否则不符合规范 |
| MUST NOT / SHALL NOT | 禁止,否则不符合规范 |
| SHOULD / RECOMMENDED | 建议遵守,有充分理由时可例外 |
| SHOULD NOT / NOT RECOMMENDED | 建议不这样做 |
| MAY / OPTIONAL | 可选,实现者自行决定 |
仅当这些词以全大写形式出现时才有上述含义。