modelcontextprotocol/ext-auth
MCP 授权扩展的源码、规范和参考实现。
为什么需要授权扩展?
核心 MCP 规范包含一个基于 OAuth 2.0 的健壮授权框架。该框架很好地处理了常见场景:用户通过交互方式授权 MCP client 代表自己访问 server。 但并非每个 MCP 部署都适合这种模式:- 机器到机器集成没有人在环。后台服务、CI pipelines 和自动化工作流需要在没有交互式用户同意流程的情况下完成认证。
- 企业环境通常有集中式身份提供商(IdPs),用于跨所有应用执行策略。要求员工单独授权每个 MCP server 会造成摩擦,也会绕过现有安全控制。
可用扩展
OAuth Client Credentials
使用 OAuth 2.0 client credentials flow 进行机器到机器认证。不需要用户交互。
Enterprise-Managed Authorization
通过企业身份提供商实现集中访问控制。员工通过组织的 IdP 访问 MCP servers。
选择合适的扩展
| 场景 | 推荐扩展 |
|---|---|
| 后台服务或 daemon 访问 MCP server | OAuth Client Credentials |
| CI/CD pipeline 调用 MCP tools | OAuth Client Credentials |
| Server-to-server API 集成 | OAuth Client Credentials |
| 企业员工在工作中访问 MCP servers | Enterprise-Managed Authorization |
| 组织范围 MCP 访问策略执行 | Enterprise-Managed Authorization |
| 标准交互式用户授权 | 核心 MCP 规范(不需要扩展) |
客户端支持
授权扩展支持情况因 client 而异。完整说明见客户端矩阵。这两个扩展都需要 MCP client 显式支持,默认永远不会启用。规范
这两个扩展都在 ext-auth repository 中定义。它们使用标准 MCP 扩展协商机制:clients 和 servers 会在初始化期间,在各自 capabilities 的extensions 字段中声明支持。