什么是 MCP 扩展(MCP Extensions)?
MCP 扩展(MCP Extensions)是在 Model Context Protocol Core 之外定义能力的可选、带命名空间规范,只有 Client 与 Server 都显式支持时才会生效。
快速了解
| 创建时间 | 在 MCP 2026-07-28 中正式建立 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
Core 与 Extension 的边界
MCP Core 定义基础互操作所需的角色、Request Model、Tool、Resource、Prompt、Elicitation、标准 Transport 与 Utility。Extension 则为更窄问题增加可选行为,例如 Tasks、交互式 MCP Apps、Skills 分发或补充授权。Core Conformance 不包含任一扩展,Extension 也不能静默重定义 Core 语义。
Identifier 与治理
Extension Identifier 使用强制 Vendor Prefix 与名称,例如 io.modelcontextprotocol/tasks。官方扩展使用 io.modelcontextprotocol Prefix,并在 MCP 治理下的 ext-* Repository 中维护;Experimental Repository 必须明确标记非官方状态。第三方应使用自己控制域名的 Reverse-domain Prefix。若变化会让既有合规实现失败或改变行为,Breaking Change 必须使用新 Identifier。
双端 Capability Negotiation
Client 在每个 Request 的 io.modelcontextprotocol/clientCapabilities 内,通过 extensions Map 声明支持;Server 在 server/discover 返回的 Capability 中声明扩展。扩展专用 Settings Object 可进一步限定能力,空对象表示无额外设置的支持。实现使用扩展 Message 或 Result Shape 前必须检查双方声明,不能复用另一 Request 的 Capability State。
降级与独立演进
Extension 默认关闭,并与 Core 和其他扩展独立演进。一方不支持时,实现应降级到文档化的 Core Behavior;若扩展是操作的硬要求,则返回精确的 Missing-capability Error。部署需要固定 Core Revision、Extension Identifier 与 Version、SDK Package、Settings 和 Fallback Path,并测试混合支持组合,不能假设某个 Host 或 SDK 实现全部官方扩展。
安全与发布证据
Negotiation 只能证明声明的兼容性,不能证明 Provenance、安全、授权或用户同意。团队应审查扩展 Repository 与状态、校验 Settings、为远程 Metadata 分配 Namespace、限制 Result Size,并把新增 UI、File、Credential、Task 与 Message 视为新信任面。发布测试要覆盖不支持方、畸形设置、Downgrade、Descriptor Change、Permission Denial、部分 SDK 支持、Rollback 与有效版本 Telemetry。
主要特点
- 可选能力层:在不改变基础 Core Conformance 的情况下增加行为
- 带命名空间身份:官方与第三方 Identifier 避免冲突和错误背书
- 双端 Opt-in:Client 与 Server 都声明支持后才能使用扩展行为
- 独立生命周期:每个 Extension 拥有独立规范、兼容策略、维护者与发布节奏
- Graceful Degradation:不支持的一方使用 Core Fallback 或明确 Capability Error
- 扩大的信任面:每个 Extension 都需单独审查 Provenance、Policy、互操作和回滚
常见用途
- 为长时间 Tool Call 增加异步 Tasks,而不要求所有 MCP Client 支持
- 只在声明 UI Extension 的 Host 中渲染 MCP Apps
- 在复用 Core Resource Read 的同时分发 Agent Skills
- 选择 Core 用户授权流程之外的 Machine-to-machine 或 Enterprise Authorization
- 在考虑进入更广标准前孵化领域特定协议能力
示例
Loading code...常见问题
MCP Extension 属于 Core Protocol 吗?
Extension 受到 MCP Specification 承认,但仍是 Core 之外的可选规范。Client 或 Server 不实现 Tasks、Skills、Apps 或 Authorization Extension 也可以符合 Core。每个 Extension 分别定义自己的 Message、Settings、Compatibility 与 Fallback。
Client 与 Server 如何协商 MCP Extension?
Client 在逐请求 Client Capability 中携带 Identifier 与 Settings,Server 则在 `server/discover` 中声明同一 Identifier。只有双方声明满足该 Extension 规则时才能使用扩展行为;历史 Request 或熟悉的 Server Name 不能替代当前声明。
官方与 Experimental MCP Extension 有什么区别?
官方 Extension 已完成 Extensions Track 流程,使用官方 Vendor Prefix,并在 MCP `ext-*` Repository 中维护;Experimental Extension 属于孵化工作,必须标明非官方状态,可能快速变化或归档。两种状态都不保证特定 Host 或 SDK 已支持。
MCP Extension 能否不等 Core 发版就升级?
可以。Extension 拥有独立维护者与发布周期;兼容改进可以保留 Identifier,会改变既有行为的 Breaking Change 则需要新 Identifier。部署应固定并测试实际使用的 Extension Version 与 SDK Implementation。
完成 Extension Negotiation 是否代表能力安全?
不代表。Negotiation 只证明双方声明兼容。Host 与 Server 仍要验证 Provenance、校验数据、执行 Authorization 与 Consent、限制副作用和资源消耗、处理不支持方、审计有效版本,并提供 Rollback。