
MCP + OAuth2.1 + AWS Cognito Example

2025.04.27
1
安全授权OAuth 2.1AWS Cognito其它
该项目展示了如何通过OAuth 2.1授权流程与AWS Cognito作为授权服务器来保护MCP(Model Context Protocol)服务器。它涵盖了MCP服务器作为资源服务器(RS)、AWS Cognito作为授权服务器(AS)、OAuth 2.1授权码流程与PKCE、受保护资源元数据(PRM)文档发现以及授权服务器元数据的动态发现。
View on GitHub
Overview
基本能力
产品定位
该项目是一个示例项目,展示了如何将MCP服务器与OAuth 2.1和AWS Cognito集成,以实现安全的授权流程。
核心功能
- MCP服务器作为资源服务器(RS)。
- AWS Cognito作为授权服务器(AS)。
- 支持OAuth 2.1授权码流程与PKCE。
- 提供受保护资源元数据(PRM)文档发现功能。
- 支持授权服务器元数据的动态发现。
适用场景
- 需要保护MCP服务器资源的场景。
- 需要与AWS Cognito集成的授权流程。
- 需要动态发现授权服务器元数据的场景。
工具列表
- MCP Server:最小化的受保护资源服务器,提供
/.well-known/oauth-protected-resource
端点。 - Client:示例客户端,演示OAuth 2.1流程,处理发现、PKCE和令牌使用。
- Docs:设置指南和解释文档。
- Infrastructure:云形成模板。
常见问题解答
- 如何设置AWS Cognito? 创建新的Cognito用户池,并配置应用客户端以启用OAuth 2.0授权码流程和PKCE。
- 如何运行MCP服务器?
确保服务器提供
/.well-known/oauth-protected-resource
端点,并链接到Cognito授权服务器。 - 如何运行示例客户端? 客户端将发现授权服务器,通过浏览器重定向用户进行身份验证,获取访问令牌,并访问受保护的MCP服务器端点。
使用教程
使用依赖
- Node.js或C# (.NET 8)(取决于服务器/客户端实现)。
- 具有Cognito设置的AWS账户。
- 基本的OAuth 2.1流程知识。
安装教程
- AWS Cognito设置
- 创建新的Cognito用户池。
- 创建应用客户端,启用OAuth 2.0授权码流程和PKCE,并设置回调URL(如
http://localhost:3000/callback
)。 -
启用OpenID Connect范围(如
openid
、profile
、email
)。 -
MCP服务器
- 本地运行MCP服务器。
-
确保服务器提供
/.well-known/oauth-protected-resource
端点,并链接到Cognito授权服务器。 -
客户端
- 运行示例客户端。
- 客户端将发现授权服务器,通过浏览器重定向用户进行身份验证,获取访问令牌,并访问受保护的MCP服务器端点。
调试方式
- 确保所有服务(MCP服务器、AWS Cognito、客户端)正常运行。
- 检查日志以确认授权流程是否按预期进行。
- 使用工具如Postman测试API端点。