MCP编写代理垫片
将本地LLM客户端(如Claude Desktop)连接到在Docker容器中运行的远程MCP Compose服务器的网桥。
🚀 概述
MCP Compose Proxy Shim允许您将容器化的MCP服务器与期望在本地运行MCP服务器的LLM客户端一起使用。它充当一个透明的网桥,拦截本地MCP服务器调用并将其重定向到远程MCP Compose代理。
主要优势:
- 在Docker容器中运行MCP服务器时使用Claude Desktop
- 避免付费远程MCP服务器的限制和成本
- 利用基于Docker的MCP服务器的所有功能和灵活性
- 适用于文件系统、内存、天气和其他MCP服务器
该项目旨在与 MCP作曲,一个在Docker容器中运行模型上下文协议(MCP)服务器的工具。
📋 需求
- Node.js v14或更高版本
- Claude Desktop或其他兼容MCP的LLM客户端
- MCP Compose使用代理运行(请参阅 MCP作曲)
🔧 安装
- 克隆此存储库:
git clone https://github.com/phildougherty/mcp-compose-proxy-shim.git
cd mcp-compose-proxy-shim- 安装依赖项:
npm install- 使脚本可执行:
chmod +x bin/npx lib/mcp-shim.js🔌 配置
Claude桌面配置
由于“导入服务器”功能需要Claude Max计划,您需要手动编辑Claude的配置文件:
- 找到Claude Desktop的配置目录:
- macOS: ~/Library/Application Support/Claude - 视窗: %APPDATA%\Claude - Linux: ~/.config/Claude
- 创建或编辑MCP服务器配置文件:
- 创建一个名为的文件 claude_desktop_config.json 在配置目录中 - 添加以下内容(调整环境路径):
{
"mcpServers": {
"filesystem": {
"command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/phildougherty/Documents",
"/Users/phildougherty/Downloads"
]
},
"memory": {
"command": "/absolute/path/to/mcp-compose-proxy-shim/bin/npx",
"args": [
"-y",
"@modelcontextprotocol/server-memory"
]
}
}
}- 重要:编辑配置文件后重新启动Claude Desktop。
🚀 用法
先设置MCP作曲
- 首先,确保 MCP作曲 已安装并正在运行:
cd /path/to/mcp-compose
./mcp-compose up
./mcp-compose proxy这将启动Docker容器中的MCP服务器和端口9876上的代理。
环境变量
在运行Claude Desktop之前,请设置以下环境变量:
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_PROXY_URL | MCP Compose代理的URL | http://localhost:9876 |
MCP_API_KEY | 用于身份验证的API密钥 | "" |
MCP_DEBUG | 启用调试输出 | false |
MCP_LOG_LEVEL | 日志级别(跟踪、调试、信息、警告、错误) | info |
MCP_CACHE | 启用响应缓存 | true |
MCP_CACHE_TTL_MS | 缓存TTL(毫秒) | 300000 (5分钟) |
MCP_MAX_RETRIES | 最大重试次数 | 3 |
MCP_LOG_FILE | 启用文件日志记录 | false |
🔍 运作原理
- 这
bin/npx脚本拦截Claude通常在本地对MCP服务器进行的调用 - 它不是运行实际的服务器,而是启动我们的
lib/mcp-shim.js脚本 - 垫片按预期通过stdin/stdout与Claude通信
- 在幕后,它将所有请求转发给您的MCP Compose代理
- 代理处理与Docker容器的实际通信
- 结果通过代理流回到垫片,然后流到克劳德
📝 日志记录
日志将写入:
- 控制台(stderr)在以下情况下
MCP_DEBUG=true - 文件在
/tmp/mcp-shim-[server].log当MCP_LOG_FILE=true
🔒 安全功能
- 路径清理以防止目录遍历
- 限制利率以防止滥用
- 请求大小限制
- 通过API密钥进行身份验证
- 安全错误处理
📚 相关项目
🤝 贡献
欢迎投稿!请随时提交拉取请求。
📄 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
