关于 MCP-Compose-Proxy-Shim
这是一个 Node.js 桥接工具,可将 Claude Desktop 等本地 MCP 客户端连接到运行在 Docker 中的 MCP-Compose 服务,并经由 MCP-Compose 代理转发请求。
主要功能
- 01桥接本地客户端与远程服务
- 02经 MCP-Compose 代理转发请求
- 03支持 API 密钥认证
- 04配置缓存、重试与日志
- 05限制路径和请求大小
适用场景
- 01在 Claude Desktop 使用 Docker 服务
- 02将本地客户端接入 MCP-Compose 代理
- 03通过调试日志查看转发请求
MCP 相关
该桥接工具向客户端提供本地 MCP 服务接口,并将请求转发到 MCP-Compose 代理,由代理与 Docker 中运行的 MCP 服务通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP-Compose-Proxy-Shim
用于连接本地大模型客户端(例如 Claude Desktop)与运行在 Docker 容器中的远程 MCP-Compose 服务的桥接工具。
🚀 概述
MCP-Compose-Proxy-Shim 让你可以在需要 MCP 服务在本地运行的大模型客户端中使用容器化 MCP 服务。它充当透明桥接工具,拦截本地 MCP 服务调用,并将其重定向到远程 MCP-Compose 代理。
主要优势:
- 在 Claude Desktop 中使用运行于 Docker 容器中的 MCP 服务
- 避免付费远程 MCP 服务的限制和费用
- 充分利用基于 Docker 的 MCP 服务的强大功能和灵活性
- 支持文件系统、记忆、天气及其他 MCP 服务
本项目旨在与 MCP-Compose 集成。MCP-Compose 是用于在 Docker 容器中运行 Model Context Protocol(MCP)服务的工具。
📋 要求
- Node.js v14 或更高版本
- Claude Desktop 或其他兼容 MCP 的大模型客户端
- 正在运行且配置了代理的 MCP-Compose(参见 MCP-Compose)
🔧 安装
-
克隆此仓库:
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 Desktop 配置
由于“导入服务”功能需要 Claude Max 计划,你需要手动编辑 Claude 的配置文件:
-
找到 Claude Desktop 的配置目录:
- macOS:
~/Library/Application Support/Claude - Windows:
%APPDATA%\Claude - Linux:
~/.config/Claude
- macOS:
-
创建或编辑 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-Compose
-
首先,确保已安装并运行 MCP-Compose:
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 | 日志级别(trace、debug、info、warn、error) | 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脚本 - shim 按预期通过 stdin/stdout 与 Claude 通信
- 在后台,它会将所有请求转发到你的 MCP-Compose 代理
- 代理负责与 Docker 容器进行实际通信
- 结果经由代理返回 shim,再传回 Claude
📝 日志记录
日志写入位置:
- 当
MCP_DEBUG=true时,写入控制台(stderr) - 当
MCP_LOG_FILE=true时,写入/tmp/mcp-shim-[server].log文件
🔒 安全功能
- 路径清理,防止目录遍历
- 速率限制,防止滥用
- 请求大小限制
- 通过 API 密钥进行身份验证
- 安全的错误处理
📚 相关项目
- MCP-Compose:用于 MCP 服务的 Docker 编排工具
- Model Context Protocol:MCP 官方文档
🤝 参与贡献
欢迎贡献!欢迎提交拉取请求。
📄 许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。