授权扩展
授权扩展
社区译文;来源: MCP 80041ab0
ext-auth 仓库包含为 MCP 核心规范补充授权能力的官方扩展。这些扩展适用于标准 OAuth 2.0 授权码流程并不合适的特定实际场景。
modelcontextprotocol/ext-auth
MCP 授权扩展的源代码、规范和参考实现。
为什么需要授权扩展?
MCP 核心规范包含一个基于 OAuth 2.0 构建的完善授权框架。该框架能够很好地处理常见场景:用户通过交互方式授权 MCP 客户端代表自己访问服务器。
但并非所有 MCP 部署都适合这种模式:
- 机器间集成没有人工参与。后台服务、CI 流水线和自动化工作流需要在没有交互式用户同意流程的情况下完成身份验证。
- 企业环境通常使用集中式身份提供商(IdP)对所有应用实施策略。要求员工分别授权每台 MCP 服务器既会增加操作阻力,也会绕过现有安全控制。
ext-auth 扩展用于弥补这些缺口。
可用扩展
OAuth 客户端凭据
使用 OAuth 2.0 客户端凭据流程进行机器间身份验证,无需用户交互。
企业托管授权
通过企业身份提供商实施集中式访问控制。员工通过其组织的 IdP 访问 MCP 服务器。
选择合适的扩展
| 场景 | 推荐扩展 |
|---|---|
| 后台服务或守护进程访问 MCP 服务器 | OAuth 客户端凭据 |
| CI/CD 流水线调用 MCP 工具 | OAuth 客户端凭据 |
| 服务器间 API 集成 | OAuth 客户端凭据 |
| 企业员工在工作中访问 MCP 服务器 | 企业托管授权 |
| 在组织范围内实施 MCP 访问策略 | 企业托管授权 |
| 标准交互式用户授权 | MCP 核心规范(无需扩展) |
客户端支持
不同客户端对授权扩展的支持情况各不相同。完整明细请参阅客户端矩阵。这两个扩展都要求 MCP 客户端明确支持,绝不会默认启用。
规范
这两个扩展的规范均位于 ext-auth 仓库。它们使用标准 MCP 扩展协商机制:客户端在 extensions 字段中声明支持;该字段位于客户端发送的 io.modelcontextprotocol/clientCapabilities 内,而后者包含在每个请求的 _meta 中;服务器则在 server/discover 返回的能力中公布其支持情况。