Box MCP代理服务器
一种代理服务器,通过HTTP将基于STDIO的MCP客户端与Box的远程MCP服务器连接起来。此代理处理Box OAuth 2.0身份验证,并在客户端和Box远程服务器之间转发MCP消息。
快速设置
新用户应运行交互式设置:
python setup.py这将:
- 创建虚拟环境并安装依赖项
- 指导您安全地输入Box API凭证
- 配置安全令牌存储(密钥链、内存或加密)
- 设置适当的文件权限
- 为Claude Desktop配置提供正确的Python路径
手动设置
- 创建虚拟环境并安装依赖项
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt- 配置凭据
要么跑 python setup.py (推荐)或手动创建 .env:
所需变量:
- BOX_CLIENT_ID:您的Box应用程序的客户端ID - BOX_CLIENT_SECRET:Box应用程序的客户端密钥(或通过设置存储在密钥链中) - TOKEN_STORAGE_TYPE:安全选项(请参阅安全部分)
- 盒子应用程序设置
- 在以下位置创建Box应用程序https://developer.box.com - 使用重定向URI配置OAuth 2.0: http://localhost:8080/callback - 确保您的应用程序具有必要的范围
用法
作为独立服务器
python main.py使用MCP客户端
将您的MCP客户端配置为将此代理用作STDIO服务器:
{
"mcpServers": {
"box-remote-mcp-proxy": {
"command": "/path/to/box-remote-mcp-proxy/.venv/bin/python",
"args": ["/path/to/box-remote-mcp-proxy/main.py"]
}
}
}身份验证流程
- 首次运行时,代理将打开浏览器进行Box OAuth授权
- 成功授权后,令牌将保存在本地
- 令牌过期时会自动刷新
- 刷新失败时会触发重新身份验证
建筑
- STDIO接口:从MCP客户端接收JSON-RPC消息
- OAuth管理器:处理Box身份验证和令牌管理
- HTTP客户端:向Box MCP服务器发送经过身份验证的请求
- 代理逻辑:在STDIO和HTTP传输之间转发消息
安全
代理支持多种安全凭据和令牌存储选项:
- 钥匙圈 (默认):使用操作系统密钥链作为令牌和可选的客户端密钥(macOS密钥链、Windows凭据管理器)
- 记忆:仅将令牌存储在内存中,重新启动时需要重新认证(最安全)
- 加密:使用存储在密钥链中的随机密钥加密令牌
- 纯文本:纯JSON文件(仅限开发)
关键安全功能:
- 客户端机密可以存储在密钥链中(通过设置脚本)
- 令牌使用与凭据分离的安全存储
- 文件权限自动设置为600(仅限所有者读/写)
- 凭证格式验证可防止拼写错误
看 SECURITY.md 有关详细的安全配置选项。
文件
main.py:入口点和信号处理setup.py:新用户的交互式设置脚本config.py:环境变量配置auth/oauth.py:Box OAuth 2.0实现auth/secure_storage.py:操作系统密钥链令牌存储auth/memory_storage.py:仅内存令牌存储auth/encrypted_storage.py:加密文件令牌存储transport/http_client.py:Box MCP服务器的可流式HTTP客户端proxy/server.py:主代理服务器逻辑stdio_reader.py:异步STDIO消息读取器logger.py:日志记录配置SECURITY.md:安全配置指南
