🚀 MCP + OAuth2.1 + 亚马逊Cognito 实现的模型上下文协议身份验证示例项目
这是一个基于模型上下文协议(MCP)与OAuth2.1结合,使用亚马逊Cognito作为授权服务器的示例项目,展示了如何在实际应用中实现基于模型上下文协议的安全身份验证和授权流程。
🚀 快速开始
先决条件
- 环境要求:
- 已安装Node.js。
- 拥有亚马逊AWS测试账号,并具备以下资源权限:
- Cognito用户池(用于OAuth2.1授权服务器)。
- API Gateway、Lambda、DynamoDB(用于动态客户端注册功能)。
- CloudFormation(用于部署资源栈)。
- 基本知识:
- 熟悉模型上下文协议(MCP)的基本概念。
- 掌握OAuth2.1协议的工作原理。
部署步骤
- 克隆项目仓库:
git clone https://github.com/empires-security/mcp-oauth2-aws-cognito.git
cd mcp-oauth2-aws-cognito
- 安装依赖项:
npm run install:all
- 部署亚马逊云资源:
npm run deploy
- 更新生成的
.env
文件:
- 检查并更新
src/client/.env
、src/auto-client/.env
、src/mcp-server/.env
中的配置。
- 对比
.env.example
,确保所有环境变量正确设置。
✨ 主要特性
- 动态发现机制:客户端能够自动识别并连接到最近的MCP服务器。
- OAuth2.1集成:支持与亚马逊Cognito的身份池无缝对接。
- 角色管理:基于模型上下文协议的角色定义,实现细粒度的访问控制。
📦 安装指南
部署步骤
- 克隆项目仓库:
git clone https://github.com/empires-security/mcp-oauth2-aws-cognito.git
cd mcp-oauth2-aws-cognito
- 安装依赖项:
npm run install:all
- 部署亚马逊云资源:
npm run deploy
- 更新生成的
.env
文件:
- 检查并更新
src/client/.env
、src/auto-client/.env
、src/mcp-server/.env
中的配置。
- 对比
.env.example
,确保所有环境变量正确设置。
💻 使用示例
基础用法
启动服务
- 启动MCP服务器:
cd mcp-server && npm start
- 启动OAuth2.1授权服务器:
cd oauth-server && npm start
- 启动手动配置客户端:
cd client && npm start
- 启动自动化客户端:
cd auto-client && npm start
示例命令
- 部署项目:
npm run deploy
- 更新环境变量:
cp .env.example .env
📚 详细文档
项目架构
总体架构
- MCP服务层:
- 提供模型上下文协议的安全验证和授权功能。
- 支持与OAuth2.1授权服务器的集成。
- OAuth2.1授权服务器:
- 使用亚马逊Cognito用户池实现身份验证。
- 处理OAuth2.1令牌颁发、刷新等流程。
- 客户端层:
- 包括自动化客户端和手动配置客户端两种类型。
- 自动化客户端具备自动发现功能,能够动态连接到MCP服务器。
- 手动配置客户端支持自定义配置,适用于复杂环境。
关键组件
- 模型上下文协议服务(MCP-Server):
- 提供基于角色的访问控制功能。
- 支持与OAuth2.1授权服务器的安全集成。
- OAuth2.1模块:
- 实现标准的OAuth2.1协议流程。
- 与亚马逊Cognito用户池对接,提供身份验证服务。
- 自动发现机制:
- 客户端能够动态识别并连接到最近的MCP服务器。
- 支持负载均衡和故障转移功能。
项目结构
核心目录
- mcp-server:
- 实现模型上下文协议的安全服务。
- 提供基于角色的访问控制功能。
- oauth-server:
- 使用亚马逊Cognito用户池实现OAuth2.1授权服务器。
- 支持密码授予、客户_credentials等标准流程。
- client:
- 提供手动配置的客户端实现。
- 支持自定义MCP服务器和OAuth2.1授权服务器的配置。
- auto-client:
- 自动化客户端模块,具备自动发现功能。
- 集成OAuth2.1模块,支持动态授权流程。
🔧 技术细节
项目介绍
- 技术选型:
- 模型上下文协议(MCP):用于定义和管理模型之间的交互规则。
- OAuth2.1:实现安全的身份验证和授权机制。
- 亚马逊Cognito:作为用户身份池,提供用户认证功能。
核心组件
- MCP服务器:
- 实现模型上下文协议的安全服务。
- 提供基于角色的访问控制(RBAC)功能。
- 支持与OAuth2.1授权服务器的集成。
- OAuth2.1授权服务器:
- 使用亚马逊Cognito作为用户池,实现身份验证和授权功能。
- 支持标准的OAuth2.1协议流程,包括密码授予、客户_credentials等。
- 自动化客户端:
- 具备自动发现功能,能够动态识别并连接到最近的MCP服务器。
- 集成OAuth2.1模块,支持自动授权流程。
- 手动配置客户端:
- 提供手动配置选项,允许用户自定义MCP服务器和OAuth2.1授权服务器的参数。
- 支持高级功能,如多因素认证(MFA)和证书绑定。
📄 许可证
本项目遵循MIT License协议。
👨💻 项目作者
开发团队
- 帝国安全实验室(Empire Security Lab):专注于模型上下文协议和OAuth2.1协议的研究与实现。
联系信息
- 邮箱:contact@empiresecuritylab.com
- 官网:https://www.empiresecuritylab.com