MCP 扩展
MCP 扩展是对规范的可选补充,用于定义超出核心协议范围的能力。扩展所支持的功能可以是模块化的(例如认证等相对独立的特性)、专门化的(例如特定行业的逻辑),或实验性的(例如正在孵化、有可能被纳入核心的特性)。 扩展通过一个唯一的**扩展标识符(extension identifier)**来标识,格式为:{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 组织内,带有experimental-ext- 前缀(例如 experimental-ext-interceptors)。
基本规则
- 每个实验性扩展都需要与某个工作组或兴趣组关联
- 仓库和已发布的软件包需要清晰地标明其实验性状态(例如在 README 和软件包名称中)
- 核心维护者保留对实验性扩展仓库的监管权,包括归档或移除它们的权力
晋升为官方状态
要将实验性扩展提升为官方状态,需经过标准的 SEP 流程(Extensions Track,扩展轨道)。你可以引用该实验性仓库以及你在孵化期间构建的任何参考实现,以证明该扩展的实用性。创建扩展
官方扩展的生命周期遵循基于 SEP 的流程。完整细节参见 SEP-2133:扩展。- 提案(Propose):按照标准 SEP 指南在 MCP 主仓库中创建一个 SEP,类型为 Extensions Track。
- 实现(Implement):在某个官方 SDK 中构建至少一个参考实现——这是 SEP 能够被评审之前的必要条件。
- 评审(Review):核心维护者评审该 SEP,并对是否纳入拥有最终决定权。
- 发布(Publish):一旦获批,提交一个 PR 将该扩展添加到扩展仓库中。
- 采纳(Adopt):此后,其他客户端、服务器和 SDK 也可以实现该扩展。
要求
- 扩展规范需要使用 RFC 2119 语言(MUST、SHOULD、MAY)
- 扩展必须有一个关联的工作组或兴趣组
SDK 实现
SDK 可以选择实现扩展,但这对协议合规性而言不是必需的。SDK 维护者对其支持哪些扩展拥有完全的自主权。当某个 SDK 确实支持扩展时,其 SDK 文档应当列出所支持的扩展。扩展始终默认为禁用状态,需要开发者显式选择启用。
演进
扩展独立于核心协议进行演进。更新由扩展仓库的维护者管理,无需核心维护者评审。 尽管如此,向后兼容性依然重要。当你需要修改某个扩展时,优先在扩展设置对象内部使用能力标志(capability flags)或版本控制,而不是创建新的扩展标识符。如果破坏性变更不可避免,则使用新的标识符(例如io.modelcontextprotocol/my-extension-v2)。
破坏性变更是指任何会导致现有实现失败或行为异常的修改,包括:
- 移除或重命名字段
- 更改字段类型
- 改变现有行为的语义
- 添加新的必填字段
协商
客户端和服务器在各自的能力声明中通过extensions 字段来公告其对扩展的支持。
客户端能力
客户端在每个请求内的_meta["io.modelcontextprotocol/clientCapabilities"] 中公告扩展支持:
服务器能力
服务器在server/discover 响应中公告扩展支持: