MCP 扩展
MCP 扩展是规范的可选补充,用来定义核心协议之外的能力。扩展可以启用模块化功能(例如认证这类独立能力)、专门能力(例如行业特定逻辑),或实验性能力(例如正在孵化、未来可能进入核心协议的功能)。 扩展使用唯一的_扩展标识符_识别,格式为{vendor-prefix}/{extension-name},例如 io.modelcontextprotocol/oauth-client-credentials。标识符遵循与 _meta 键 相同的规则,但必须包含前缀。官方扩展使用 io.modelcontextprotocol 供应商前缀。
官方扩展仓库
官方扩展位于 Model Context Protocol GitHub 组织 下,仓库名以ext- 为前缀。
MCP 授权扩展
modelcontextprotocol/ext-auth
核心规范之外的补充授权机制扩展。
MCP Apps
modelcontextprotocol/ext-apps
面向会话式 MCP 客户端中交互式 UI 元素的扩展。
要开始构建 MCP Apps,请参阅快速开始指南,或阅读完整的 MCP Apps 文档。
MCP Tasks
实验性扩展
实验性扩展为工作组与兴趣组提供孵化路径,让它们在正式提交 SEP 前可以原型化想法,并围绕扩展概念协作。 实验性扩展仓库位于 MCP GitHub organization 下,仓库名以experimental-ext- 为前缀(例如 experimental-ext-interceptors)。
基本规则
- 每个实验性扩展都需要关联到一个工作组或兴趣组。
- 仓库和已发布包需要清楚标明其实验状态(例如在 README 和包名中)。
- Core Maintainers 保留对实验性扩展仓库的监督权,包括归档或移除它们的能力。
晋升为官方状态
要将实验性扩展提升为官方扩展,需要走标准 SEP 流程(Extensions Track)。你可以引用实验仓库以及孵化期间构建的任何参考实现,以证明扩展的实用性。创建扩展
官方扩展的生命周期遵循基于 SEP 的流程。完整细节请参阅 SEP-2133: Extensions。- 提出:在 MCP 主仓库中使用标准 SEP 指南创建 SEP,并将类型设为 Extensions Track。
- 实现:在官方 SDK 中构建至少一个参考实现,这是 SEP 进入评审前的必需条件。
- 评审:Core Maintainers 评审 SEP,并对是否纳入拥有最终权威。
- 发布:批准后,打开 PR 将扩展添加到扩展仓库。
- 采用:之后,其他客户端、服务器和 SDK 也可以实现该扩展。
要求
- 扩展规范需要使用 RFC 2119 语言(MUST、SHOULD、MAY)。
- 扩展必须关联一个工作组或兴趣组。
SDK 实现
SDK 可以选择实现扩展,但这不是协议一致性的必需条件。SDK 维护者可以完全自主决定支持哪些扩展。如果某个 SDK 支持扩展,其 SDK 文档应列出支持的扩展。扩展默认始终禁用,需要开发者显式选择启用。
演进
扩展独立于核心协议演进。更新由扩展仓库维护者管理,不需要核心维护者评审。 不过,向后兼容仍然重要。当你需要修改扩展时,优先在扩展设置对象中使用能力标志或版本管理,而不是创建新的扩展标识符。如果不可避免地要引入破坏性变更,请使用新标识符(例如io.modelcontextprotocol/my-extension-v2)。
破坏性变更 是任何会导致现有实现失败或行为不正确的修改,包括:
- 删除或重命名字段
- 修改字段类型
- 改变现有行为语义
- 添加新的必填字段
协商
客户端和服务器会在初始化握手期间,在各自能力的extensions 字段中声明对扩展的支持。
客户端能力
客户端在initialize 请求中声明扩展支持:
服务器能力
服务器在initialize 响应中声明扩展支持: