MCP代理桥接工具

MCP-Compose-Proxy-Shim是一个桥接工具,用于将本地LLM客户端(如Claude Desktop)连接到运行在Docker容器中的远程MCP-Compose服务器。

  • by phildougherty
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 phildougherty/mcp-compose-proxy-shim

使用说明

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作曲)

🔧 安装

  1. 克隆此存储库:

    git clone https://github.com/phildougherty/mcp-compose-proxy-shim.git
    cd mcp-compose-proxy-shim
    
  2. 安装依赖项:

    npm install
    
  3. 使脚本可执行:

    chmod +x bin/npx lib/mcp-shim.js
    

🔌 配置

Claude桌面配置

由于“导入服务器”功能需要Claude Max计划,您需要手动编辑Claude的配置文件:

  1. 找到Claude Desktop的配置目录:

    • macOS: ~/Library/Application Support/Claude
    • 视窗: %APPDATA%\Claude
    • Linux: ~/.config/Claude
  2. 创建或编辑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"
      ]
    }
  }
}
  1. 重要:编辑配置文件后重新启动Claude Desktop。

🚀 用法

先设置MCP作曲

  1. 首先,确保 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

🔍 运作原理

  1. 这 bin/npx 脚本拦截Claude通常在本地对MCP服务器进行的调用
  2. 它不是运行实际的服务器,而是启动我们的 lib/mcp-shim.js 脚本
  3. 垫片按预期通过stdin/stdout与Claude通信
  4. 在幕后,它将所有请求转发给您的MCP Compose代理
  5. 代理处理与Docker容器的实际通信
  6. 结果通过代理流回到垫片,然后流到克劳德

📝 日志记录

日志将写入:

  • 控制台(stderr)在以下情况下 MCP_DEBUG=true
  • 文件在 /tmp/mcp-shim-[server].log 当 MCP_LOG_FILE=true

🔒 安全功能

  • 路径清理以防止目录遍历
  • 限制利率以防止滥用
  • 请求大小限制
  • 通过API密钥进行身份验证
  • 安全错误处理

📚 相关项目

🤝 贡献

欢迎投稿!请随时提交拉取请求。

📄 许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。