主题
授权扩展
Model Context Protocol 的补充授权机制
ext-auth 仓库包含官方 MCP 扩展,在核心 MCP 规范之外提供授权能力。这些扩展针对标准 OAuth 2.0 授权码流程并不适用的特定真实场景。
modelcontextprotocol/ext-auth
MCP 授权扩展的源代码、规范与参考实现。
为什么需要授权扩展?
核心 MCP 规范包含一个基于 OAuth 2.0 构建的健壮授权框架。该框架很好地处理了常见情况:用户以交互方式授予 MCP 客户端代表其访问服务端的权限。
但并非每个 MCP 部署都符合这种模式:
- 机器到机器集成没有人在回路中。后台服务、CI 流水线和自动化工作流需要在没有交互式用户同意流程的情况下进行身份验证。
- 企业环境通常拥有集中式身份提供方(IdP),对所有应用程序强制执行策略。要求员工逐个授权每个 MCP 服务端会造成摩擦,并绕过现有的安全控制。
ext-auth 扩展填补了这些空白。
可用扩展
OAuth Client Credentials
使用 OAuth 2.0 客户端凭据流程进行机器到机器身份验证。无需用户交互。
Enterprise-Managed Authorization
通过企业身份提供方实现集中式访问控制。员工通过其组织的 IdP 访问 MCP 服务端。
选择合适的扩展
| 场景 | 推荐扩展 |
|---|---|
| 后台服务或守护进程访问 MCP 服务端 | OAuth Client Credentials |
| CI/CD 流水线调用 MCP 工具 | OAuth Client Credentials |
| 服务端到服务端 API 集成 | OAuth Client Credentials |
| 企业员工在工作中访问 MCP 服务端 | Enterprise-Managed Authorization |
| 组织范围的 MCP 访问策略强制执行 | Enterprise-Managed Authorization |
| 标准交互式用户授权 | 核心 MCP 规范(无需扩展) |
客户端支持
授权扩展的支持情况因客户端而异。完整明细请参见客户端矩阵。两个扩展都需要 MCP 客户端显式支持——它们从不会默认启用。
规范
两个扩展均在 ext-auth 仓库中定义。它们使用标准 MCP 扩展协商机制:客户端在每个请求的 _meta 中发送的 io.modelcontextprotocol/clientCapabilities 的 extensions 字段里声明支持,服务端则在 server/discover 返回的能力中声明其支持。