MCP + OAuth2.1 + AWS Cognito Example

MCP + OAuth2.1 + AWS Cognito Example

site icon
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流程知识。

安装教程

  1. AWS Cognito设置
  2. 创建新的Cognito用户池。
  3. 创建应用客户端,启用OAuth 2.0授权码流程和PKCE,并设置回调URL(如http://localhost:3000/callback)。
  4. 启用OpenID Connect范围(如openidprofileemail)。

  5. MCP服务器

  6. 本地运行MCP服务器。
  7. 确保服务器提供/.well-known/oauth-protected-resource端点,并链接到Cognito授权服务器。

  8. 客户端

  9. 运行示例客户端。
  10. 客户端将发现授权服务器,通过浏览器重定向用户进行身份验证,获取访问令牌,并访问受保护的MCP服务器端点。

调试方式

  • 确保所有服务(MCP服务器、AWS Cognito、客户端)正常运行。
  • 检查日志以确认授权流程是否按预期进行。
  • 使用工具如Postman测试API端点。

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。