MCP安全网关
一个可生产的API网关,展示了量化增强的安全模式和MCP(模型上下文协议)集成,灵感来自API Days Paris 2025。
  
🎯 概述
该项目展示了前沿的API安全模式,结合了:
- 量子随机数生成(QRNG) 用于加密安全令牌
- MCP协议 处理AI代理交互
- 等级 身份验证、速率限制和监控
- API漂移检测 通过全面的合同测试
旨在展示API Days Paris 2025概念的实际实施,包括关于MCP安全、量化增强认证和API可靠性模式的讨论。
🚀 特性
安全
- QRNG即服务:具有经典回退的量子支持随机数生成
- 多提供商支持(ANU、Quantinuum、ID Quantique) - 自动回退到加密安全的经典RNG - 透明的提供商选择和健康监控
- JWT认证:使用量子增强令牌ID的基于令牌的身份验证
- RS256签名,可配置密钥轮换 - 量子支持的JTI(JWT令牌ID)生成 - 令牌刷新和撤销支持
- 速率限制:Redis后端的令牌桶算法
- 每个用户和每个端点的限制 - 可配置的突发容量 - 实时速率限制标头
MCP协议支持
- 完整的MCP服务器实施
- 工具发现和执行
- 流媒体响应支持
- 错误处理和验证
可观测性
- 带有关联ID的结构化日志记录
- Prometheus度量集成
- 请求/响应跟踪
- 性能监控
测试与质量
- 95%以上的测试覆盖率
- API漂移检测合同测试
- 与真正的QRNG提供商进行集成测试
- 负载测试场景
📋 先决条件
- Python 3.11+
- Docker&Docker编写
- Redis(用于速率限制)
- 可选:访问量子RNG提供商(ANU、Quantinuum、ID Quantique)
🛠️ 快速开始
1.克隆和设置
git clone https://github.com/yourusername/mcp-secure-gateway.git
cd mcp-secure-gateway
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt2.配置环境
cp .env.example .env
# Edit .env with your configuration3.使用Docker运行
docker-compose up -dAPI将于 http://localhost:8000
4.访问文件
- OpenAPI文档:
http://localhost:8000/docs - 重新记录:
http://localhost:8000/redoc - 健康检查:
http://localhost:8000/health
📁 项目结构
mcp-secure-gateway/
├── app/
│ ├── api/ # API endpoints
│ ├── core/ # Core configuration
│ ├── models/ # Pydantic models
│ ├── services/ # Business logic
│ │ ├── qrng/ # QRNG service
│ │ ├── auth/ # Authentication
│ │ ├── mcp/ # MCP protocol
│ │ └── rate_limit/ # Rate limiting
│ └── main.py # Application entry point
├── tests/ # Test suite
├── docs/ # Documentation
├── docker/ # Docker configurations
└── scripts/ # Utility scripts🔐 QRNG服务
支持的提供商
- 澳大利亚国立大学
- 免费的公共量子RNG - 真空状态波动 - 适合开发/测试
- 量子
- 企业级QRNG - 需要API密钥 - 高吞吐量
- 量子ID
- 商用量子RNG - 基于硬件 - 需要API密钥
用法示例
from app.services.qrng import QRNGService
qrng = QRNGService()
random_bytes = await qrng.get_random_bytes(32)
token_id = await qrng.generate_token_id()古典倒退
如果所有量子提供者都失败,服务将自动回退到:
secrets.token_bytes()用于加密操作secrets.token_urlsafe()用于生成令牌
🔑 身份验证流程
- 注册/登录:用户提供凭据
- 令牌生成:服务器使用量子支持的JTI创建JWT
- 令牌使用:客户端在授权标头中包含令牌
- 验证:服务器验证签名并检查吊销
- 刷新:客户端可以在到期前刷新令牌
# Get access token
curl -X POST http://localhost:8000/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "user", "password": "pass"}'
# Use token
curl http://localhost:8000/api/protected \
-H "Authorization: Bearer YOUR_TOKEN"🧪 测试
运行所有测试
pytest跑步有保障
pytest --cov=app --cov-report=html合同测试(API漂移检测)
pytest tests/contract/ -v负载测试
python scripts/load_test.py📊 监控
普罗米修斯指标
可在 http://localhost:8000/metrics:
http_requests_total:HTTP请求总数http_request_duration_seconds:请求延迟qrng_requests_total:QRNG服务呼叫qrng_fallback_total:经典回退用法rate_limit_exceeded_total:违反速率限制
健康检查
curl http://localhost:8000/health答复:
{
"status": "healthy",
"version": "1.0.0",
"qrng": {
"provider": "anu",
"status": "operational"
},
"redis": "connected"
}🌟 API日巴黎2025见解
本项目实施API Days Paris 2025讨论的模式:
1.量子增强安全
- 谈话:“QRNG作为API安全服务”
- 实施:多提供商QRNG服务,降级优雅
2.MCP协议
- 谈话:“使用OAuth、JWT和SPIFFE保护MCP服务器”
- 实施:具有JWT身份验证的完整MCP服务器
3.API漂移检测
- 谈话:“带AI的API迁移可靠性”
- 实施:捕获突发更改的合同测试套件
4.生产模式
- 谈话:“不要夸大你的问题”
- 实施:复杂架构上的简单、可维护代码
🤝 贡献
欢迎投稿!请阅读 贡献.md 作为指导方针。
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- API日巴黎2025 为鼓舞人心的演讲
- 澳大利亚国立大学 免费量子RNG接入
- 快速API 优秀文档社区
- 所有贡献者和早期采用者
📧 联系
Soumia Ghalim-解决方案架构师
🔗 资源
______________________________________________________________________
内置于❤️ 在巴黎|灵感来自API 2025天
