🔐 MCP服务器的OAuth2身份验证
    
安全 模型上下文协议(MCP)服务器 随着 OAuth 2.1身份验证 通过Tavily API提供网络搜索功能。采用FastAPI构建,专为企业级安全而设计。
🚀 特性
- 🔐 OAuth 2.1身份验证 -使用Scalekit授权服务器的企业级安全
- 🌐 Web搜索集成 -由Tavily API提供实时网络搜索功能
- ⚡ FastAPI性能 -具有自动API文档的高性能异步服务器
- 🛡️ MCP合规性 -完全符合模型上下文协议授权规范
- 🎯 基于范围的授权 -具有自定义作用域的细粒度访问控制
- 📊 令牌验证 -具有受众检查功能的强大令牌验证
- 🔒 安全最佳实践 -PKCE支持、正确的错误处理和安全默认值
🏗️ 建筑
此MCP服务器采用以下安全架构:
- OAuth 2.1流程:使用Scalekit完成授权流程
- MCP协议:LLM和工具之间的标准化沟通
- 网络搜索工具:Tavily驱动的搜索功能
- 中间件安全:请求级身份验证和授权
📋 先决条件
🛠️ 安装
1.克隆存储库
git clone https://github.dev/Govindmallurwar/mcp-oauth2-server.git
cd mcp-oauth2-server2.安装依赖项
# Using pip
pip install -e .
# Or using uv (recommended)
uv sync3.环境配置
创建一个 .env 使用您的配置文件:
# Scalekit Configuration
SCALEKIT_ENVIRONMENT_URL=https://your-company.scalekit.com
SCALEKIT_CLIENT_ID=your_client_id
SCALEKIT_CLIENT_SECRET=your_client_secret
SCALEKIT_AUDIENCE_NAME=your_audience_name
# Server Configuration
PORT=10000
# Tavily API Configuration
TAVILY_API_KEY=your_tavily_api_key_here4.Scalekit设置
- 引导到 MCP服务器 在Scalekit仪表板中
- 点击 添加MCP服务器
- 配置:
- 服务器名称:“Web搜索MCP服务器” - 资源标识符:您的服务器URL - 允许动态客户端注册: ✅ 启用 - 访问令牌寿命:300-3600秒 - 范围: search:read
🚀 快速开始
运行服务器
python src/server.py服务器将于启动 http://localhost:10001
📚 API文档
OAuth发现端点
GET /.well-known/oauth-protected-resource/mcp-MCP资源元数据
MCP端点
POST /tools/call-执行web搜索工具(需要身份验证)
身份验证流程
- 发现:客户端通过元数据端点发现授权服务器
- 注册:使用Scalekit进行动态客户端注册
- 授权OAuth 2.1 流程与 PKCE
- 令牌使用情况:授权标头中的承载令牌
- 验证:服务器验证令牌并检查作用域
🔧 配置
环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
SCALEKIT_ENVIRONMENT_URL | 您的Scalekit环境URL | ✅ |
SCALEKIT_CLIENT_ID | Scalekit客户端ID | ✅ |
SCALEKIT_CLIENT_SECRET | Scalekit客户端机密 | ✅ |
SCALEKIT_AUDIENCE_NAME | 令牌受众标识符 | ✅ |
PORT | 服务器端口(默认值:10001) | ❌ |
TAVILY_API_KEY | Tavilly API网络搜索密钥 | ✅ |
安全设置
服务器实现了几个安全功能:
- 令牌受众验证:确保为此特定服务器颁发令牌
- 基于范围的授权:控制对网络搜索功能的访问
- PKCE 支持:防止授权码被拦截
- 正确的错误响应:根据MCP规范返回WWW-Authenticate标头
🔍 故障排除
常见问题
| 问题 | 解决方案 |
|---|---|
| 令牌验证失败 | 检查 SCALEKIT_AUDIENCE_NAME 匹配Scalekit配置 |
| 客户端注册失败 | 验证Scalekit环境URL和凭据 |
| Web搜索无效 | 确保Tavily API密钥有效且具有配额 |
| CORS错误 | 配置 allow_origins 生产中 |
调试模式
启用调试日志记录:
import logging
logging.basicConfig(level=logging.DEBUG)健康检查
# Check OAuth metadata
curl http://localhost:10000/.well-known/oauth-protected-resource/mcp📁 项目结构
mcp-oauth2-server/
├── src/
│ ├── server.py # Main FastAPI server
│ ├── auth.py # OAuth middleware
│ ├── tavily_mcp.py # MCP server implementation
│ └── config.py # Configuration management
├── docs/
├── pyproject.toml # Project dependencies
├── .env # Environment with placeholder
└── README.md # This file📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
