MCP OAuth 代理是一个开源的OAuth 2.1代理服务器,它为MCP(模型上下文协议)服务器添加了身份验证和授权功能。
MCP OAuth 代理充当OAuth提供商(如Google、Microsoft、GitHub)与MCP服务器之间的桥梁,提供以下功能:
该代理位于您的MCP服务器之前,处理OAuth 2.1的身份验证并验证来自外部提供商的用户身份。
以下是其工作原理:
当代理请求到您的MCP服务器时,OAuth代理会自动注入包含用户信息的以下头信息:
| 头信息 | 描述 | 示例 |
|---|---|---|
X-Forwarded-User | 来自OAuth提供商的用户ID | 12345678901234567890 |
X-Forwarded-Email | 用户的电子邮件地址 | user@example.com |
X-Forwarded-Name | 用户的显示名称 | John Doe |
X-Forwarded-Access-Token | 用于外部API调用的OAuth访问令牌 | ya29.a0ARrdaM... |
这些头信息允许您的MCP服务器:
OAuth凭证(客户端ID和客户端密钥)由代理用来代表您的用户与外部提供商进行身份验证。
http://localhost:8080/callback作为重定向URIhttp://localhost:8080/callbackUser.Read,Mail.Read)http://localhost:8080/callback 创建OAuth应用OAuth代理需要一个可流式传输的HTTP MCP服务器。例如使用Obot的Gmail MCP服务器:
git clone https://github.com/obot-platform/tools
cd google/gmail
uv run python -m obot_gmail_mcp.server
这将在http://localhost:9000/mcp/gmail启动服务器。
docker run -d --name mcp-oauth-proxy -p 8080:8080 \
-e OAUTH_CLIENT_ID="your-client-id" \
-e OAUTH_CLIENT_SECRET="your-client-secret" \
-e OAUTH_AUTHORIZE_URL="https://accounts.google.com" \
-e SCOPES_SUPPORTED="openid,email,profile,https://www.googleapis.com/auth/gmail.readonly" \
-e MCP_SERVER_URL="http://localhost:9000/mcp/gmail" \
-e ENCRYPTION_KEY="your-encryption-key" \
ghcr.io/obot-platform/mcp-oauth-proxy:latest
export OAUTH_CLIENT_ID="your-client-id"
export OAUTH_CLIENT_SECRET="your-client-secret"
export OAUTH_AUTHORIZE_URL="https://accounts.google.com"
export SCOPES_SUPPORTED="openid,email,profile,https://www.googleapis.com/auth/gmail.readonly"
export MCP_SERVER_URL="http://localhost:9000/mcp/gmail"
export ENCRYPTION_KEY="your-encryption-key"
./mcp-oauth-proxy
| 变量 | 必需 | 描述 |
|---|---|---|
OAUTH_CLIENT_ID | ✅ | 提供商处的OAuth客户端ID |
OAUTH_CLIENT_SECRET | ✅ | OAuth客户端密钥 |
OAUTH_AUTHORIZE_URL | ✅ | 提供商的基础URL(例如,https://accounts.google.com) |
SCOPES_SUPPORTED | ✅ | 逗号分隔的OAuth范围 |
MCP_SERVER_URL | ✅ | 您的MCP服务器端点 |
DATABASE_DSN | ❌ | 数据库连接字符串(默认为SQLite) |
ENCRYPTION_KEY | ✅ | 基于64编码的32字节AES密钥 |
您应该使用以下命令生成一个随机的32字节AES密钥作为ENCRYPTION_KEY环境变量:
openssl rand -base64 32
不同的认证提供商URL:
https://accounts.google.comhttps://login.microsoftonline.com/common/oauth2/v2.0/authorizehttps://github.com/login/oauth/authorize在您的工作区创建一个.vscode/mcp.json文件:
{
"servers": {
"oauth-gmail": {
"type": "http",
"url": "http://localhost:8080/mcp/gmail"
}
}
}
认证流程:
本项目根据Apache许可证2.0版发布。