使用说明
MCP OAuth代理
轻量级的 OAuth 2.1客户端凭据流 MCP STDIO服务器的代理。自动获取承载令牌并将JSON-RPC请求代理到HTTP MCP服务器。
特性
- ✅ 自动OAuth令牌管理 -获取并缓存令牌,过期时自动刷新
- ✅ STDIO到HTTP网桥 -使用OAuth标头将STDIO协议转换为HTTP
- ✅ 终端用户零配置 -只需设置一个环境变量并使用mcp.json配置
- ✅ 客户端凭据流 -非常适合服务器到服务器身份验证
- ✅ 交叉平台的 -适用于macOS、Linux、Windows
- ✅ 轻量级 -最小的依赖性,快速启动
安装
选项1:全局安装
npm install -g mcp-oauth-proxy
选项2:与npx一起使用(无需安装)
npx mcp-oauth-proxy
快速开始
1.设置OAuth密钥
export MCP_CLIENT_SECRET="your-oauth-client-secret"
2.在VS代码中配置(mcp.json)
添加到您的VS代码设置文件(~/.config/Code/User/mcp.json):
{
"servers": {
"my-mcp-server": {
"command": "npx",
"args": ["-y", "mcp-oauth-proxy"],
"type": "stdio",
"env": {
"MCP_CLIENT_ID": "your-oauth-client-id",
"MCP_CLIENT_SECRET": "${env:MCP_CLIENT_SECRET}",
"MCP_AUTH_SERVER_URL": "https://your-auth-server.com/token",
"MCP_SERVER_URL": "http://localhost:8000/mcp"
}
}
}
}
3.重新加载VS代码
按 Cmd+K Cmd+W (macOS)或 Ctrl+K Ctrl+W (Windows/Linux)重新加载VS代码窗口。
配置
所需的环境变量
| 变量 | 描述 | 示例 |
|---|---|---|
MCP_CLIENT_ID |
OAuth 2.1客户端ID | my-client-id |
MCP_CLIENT_SECRET |
OAuth 2.1客户端密钥 | 在系统环境中设置,参考 ${env:MCP_CLIENT_SECRET} |
MCP_SERVER_URL |
您的HTTP MCP服务器端点 | http://localhost:8000/mcp |
可选环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_AUTH_SERVER_URL |
OAuth令牌端点 | 执行身份验证(Keycloak) |
运作原理
VS Code (STDIO)
↓ (JSON-RPC message)
mcp-oauth-proxy
├─ Fetches OAuth token from MCP_AUTH_SERVER_URL
└─ Adds "Authorization: Bearer <token>" header
↓ (HTTP POST)
Your MCP Server (HTTP)
↓ (Validates Bearer token)
← Returns JSON-RPC response
↓
VS Code (STDIO)
许可证管理
- 缓存:令牌缓存在内存中以供重用
- 自动刷新:令牌在到期前30秒自动刷新
- 错误处理:无效凭据返回正确的JSON-RPC错误响应
用例
- Perforce OAuth -与Perforce身份验证服务器集成
- 钥匙孔 -适用于任何Keycloak实例
- 通用OAuth 2.1 -与任何支持客户端凭据流的OAuth 2.1服务器兼容
- 安全MCP服务器 -向现有HTTP MCP服务器添加身份验证层
建筑
- bin/cli.js -入口点,使用环境变量初始化代理
- lib/proxy.js -核心代理逻辑,处理OAuth和请求转发
调试
代理将日志记录到stderr:
[OAuth Proxy] Initialized with:
Client ID: your-client-id
Client Secret length: 32
Auth Server: https://...
MCP Server: http://localhost:8000/mcp
[OAuth Proxy] Starting STDIO proxy...
[OAuth] Token fetched successfully (expires in 300s)
检查VS代码输出面板(视图→ 输出),然后从下拉列表中选择“MCP服务器”。
故障排除
问题:“客户端密钥长度:未设置”
解决方案:确保设置 MCP_CLIENT_SECRET 在启动VS Code之前,请先在系统环境中执行以下操作:
export MCP_CLIENT_SECRET="your-secret"
问题:“OAuth令牌获取失败:401未经授权”
解决方案:检查您的客户端ID和密码是否适用于OAuth服务器。
问题:“MCP服务器返回:406”
解决方案:确保您的MCP服务器正在运行 MCP_SERVER_URL 是正确的。
许可证
MIT许可证-请参阅 许可证 详细信息文件
贡献
欢迎投稿!请随时打开问题或PR。
相关项目
- 模型上下文协议 -MCP官方文件
- @模型上下文协议/sdk -TypeScript官方MCP SDK