MCP 扩展
MCP 扩展是规范的可选补充,定义了核心协议之外的能力。扩展支持模块化(例如,身份验证等独立功能)、专业化(例如,特定行业的逻辑)或实验性(例如,正在孵化以潜在纳入核心的功能)的功能。 扩展使用唯一的_扩展标识符_进行标识,格式为:{vendor-prefix}/{extension-name},例如 io.modelcontextprotocol/oauth-client-credentials。官方扩展使用 io.modelcontextprotocol 供应商前缀。
官方扩展仓库
官方扩展位于 模型上下文协议 GitHub 组织 内,仓库名称带有ext- 前缀。
MCP 授权扩展
modelcontextprotocol/ext-auth
核心规范之外的补充授权机制扩展。
| 扩展 | 描述 |
|---|---|
| OAuth 客户端凭证 | 用于机器到机器身份验证的 OAuth 2.0 客户端凭证流程。 |
| 企业托管授权 | 需要集中访问控制的企业环境框架。 |
MCP 应用
modelcontextprotocol/ext-apps
用于对话式 MCP 客户端中交互式 UI 元素的扩展。
| 扩展 | 描述 |
|---|---|
| MCP 应用 | 允许 MCP 服务器在对话中内联显示交互式 UI 元素(图表、表单、视频播放器) |
实验性扩展
实验性扩展为 工作组和兴趣小组 提供了孵化途径,以便在正式提交 SEP 之前原型化想法并就扩展概念进行协作。 实验性扩展仓库位于 MCP GitHub 组织内,带有experimental-ext- 前缀(例如,experimental-ext-interceptors)。
基本规则
- 每个实验性扩展都需要与一个工作组或兴趣小组关联
- 仓库和发布的包需要清楚表明其实验状态(例如,在 README 和包名称中)
- 核心维护者 保留对实验性扩展仓库的监督权,包括归档或移除它们的权力
晋升为官方状态
要将实验性扩展晋升为官方状态,它需要经过标准的 SEP 流程(扩展轨道)。欢迎引用实验性仓库以及在孵化期间构建的任何参考实现,以证明扩展的实用性。创建扩展
官方扩展的生命周期遵循基于 SEP 的流程。有关详细信息,请参阅 SEP-2133: 扩展。- 提议:使用 标准 SEP 指南 在主 MCP 仓库中创建 SEP,类型为 扩展轨道。
- 实现:在官方 SDK 中构建至少一个参考实现——这是 SEP 可以被审查之前的必要条件。
- 审查:核心维护者 审查 SEP 并对是否纳入拥有最终决定权。
- 发布:一旦获批,打开一个 PR 将扩展添加到扩展仓库。
- 采用:之后,其他客户端、服务器和 SDK 也可以实现该扩展。
要求
- 扩展规范需要使用 RFC 2119 语言(MUST, SHOULD, MAY)
- 扩展必须有一个关联的工作组或兴趣小组
SDK 实现
SDK 可以选择实现扩展,但这不是协议一致性的必要条件。SDK 维护者对其支持的扩展拥有完全的自主权。如果 SDK 确实支持扩展,SDK 文档应列出支持的扩展。扩展默认始终处于禁用状态,需要开发人员明确选择加入。
演进
扩展独立于核心协议演进。更新由扩展仓库维护者管理,不需要核心维护者审查。 话虽如此,向后兼容性很重要。当您需要更改扩展时,优先使用扩展设置对象内的能力标志或版本控制,而不是创建新的扩展标识符。如果破坏性变更不可避免,请使用新的标识符(例如,io.modelcontextprotocol/my-extension-v2)。
破坏性变更是指任何会导致现有实现失败或行为不正确的修改,包括:
- 移除或重命名字段
- 更改字段类型
- 改变现有行为的语义
- 添加新的必填字段
协商
客户端和服务器在 初始化握手 期间,在其各自能力的extensions 字段中宣传他们对扩展的支持。
客户端能力
客户端在initialize 请求中宣传扩展支持:
服务器能力
服务器在initialize 响应中宣传扩展支持: