Docker化MCP桥接工具

一个用Rust编写的模型上下文协议(MCP)桥接工具,作为透明代理使本地MCP客户端能够与Docker容器内的MCP服务器安全通信。

  • by fritzprix
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 fritzprix/mcp-bridge

使用说明

码头化MCP桥

强健的 模型上下文协议(MCP)桥 用Rust写的。此CLI工具充当透明代理,使本地MCP客户端(如Claude Desktop或Libr Agent)能够与在隔离的Docker容器内运行的MCP服务器安全通信。

🚀 特性

  • 孤立:所有MCP服务器都在临时Docker容器内运行,保护您的主机系统。
  • 透明度:无缝管道标准I/O(Stdin/Stdout),因此主机客户端不知道Docker层。
  • 并发:使用基于UUID的容器命名来支持多个并行会话而不会发生冲突。
  • 自动清理:即使进程中断(Ctrl+C),也保证在退出时删除容器。
  • 易于安装:卷装载的自动绝对路径分辨率。
  • 交叉平台的:适用于Linux、macOS和Windows的二进制文件。

📦 安装

快速安装(推荐)

下载适用于您平台的最新版本的单行安装脚本:

curl -fsSL https://raw.githubusercontent.com/fritzprix/mcp-bridge/master/install.sh | bash

这将:

  • 自动检测您的操作系统和体系结构(Linux/MOSC/Windows,x86_64/aarch64)
  • 从GitHub版本下载最新二进制文件
  • 安装到 ~/.local/bin (可定制 INSTALL_DIR)
  • 验证Docker可用性

手动下载

从以下网址下载适用于您平台的最新版本 发布 页面:

  • Linux: mcp-bridge-x86_64-unknown-linux-gnu
  • macOS(英特尔): mcp-bridge-x86_64-apple-darwin
  • macOS(苹果硅): mcp-bridge-aarch64-apple-darwin
  • 窗户: mcp-bridge-x86_64-pc-windows-msvc.exe

从源代码构建

确保你有 锈 和 码头工人 安装。

git clone https://github.com/fritzprix/mcp-bridge.git
cd mcp-bridge
cargo build --release
# Binary will be at ./target/release/mcp-bridge

🛠 用法

这 mcp-bridge CLI封装Docker命令参数以简化执行。

mcp-bridge [OPTIONS] [COMMAND]...

选项

  • --image <IMAGE>:要使用的Docker镜像(默认值: ghcr.io/fritzprix/mcp-agent:latest).
  • -v, --mount <SRC:DST>:将主机目录装载到容器路径。可以多次使用。相对主机路径会自动解析为绝对路径。
  • -e, --env <KEY=VALUE>:设置环境变量。可以多次使用。
  • [COMMAND]...:在容器内运行的命令(例如。, node build/index.js, python server.py).

便利包装(可选)

为了简化使用,您可以使用提供的包装器脚本:

# Download the wrapper
curl -fsSL https://raw.githubusercontent.com/fritzprix/mcp-bridge/master/mcp-bridge.sh -o mcp-bridge.sh
chmod +x mcp-bridge.sh

# Run with defaults (mounts current directory)
./mcp-bridge.sh run

# Open interactive shell
./mcp-bridge.sh shell

# Use custom image
./mcp-bridge.sh custom alpine -- sh -c "echo hello"

例子

快速入门(使用预构建映像)

# Mount current directory and run the agent
mcp-bridge --mount $(pwd):/workspace

自定义图像的基本用法

从任何Docker镜像运行MCP服务器:

mcp-bridge --image alpine -- sh -c "echo 'Starting MCP Server...'"

安装目录

挂载当前目录(.)to /app 在容器中:

mcp-bridge --image my-mcp-server \
  --mount .:/app \
  -- node /app/index.js

注入环境变量

传递API密钥或配置:

mcp-bridge --env API_KEY=secret123 \
  --env DEBUG=true \
  -- python main.py

🏗 建筑

  1. CLI条目:解析参数,解析挂载的相对路径,并生成唯一的会话ID(UUID)。
  2. 容器创建:生成Docker容器(mcp-bridge-{uuid})与 Tty: false 以确保干净的JSON-RPC通信。
  3. I/O管道:异步管道主机标准→ 集装箱标准和集装箱标准→ 主机标准输出使用 tokio.
  4. 日志分离:所有网桥日志(连接状态、错误)都发送到 标准 所以它们不会破坏Stdout上的MCP协议。
  5. 清理:自定义 Drop 实施确保 docker rm -f 当桥接进程终止时调用。

🧪 发展

运行测试

cargo test

本地验证

# Verify clean exit behavior
cargo run -- --image alpine -- sh -c "echo clean_exit"

🤖 Mcp代理

该项目在 agent/ 目录,设计用于在网桥管理的Docker环境中运行。

特性

  • 外壳性能:执行命令,管理后台进程。
  • 文件系统能力:已优化 search_files (ripgrep), directory_tree (树)和标准文件操作。
  • 资源:通过以下方式观察正在运行的流程 internal://processes/list.

用法

快速入门(预构建映像):

# Use the pre-built image from GitHub Container Registry
mcp-bridge --mount $(pwd):/workspace

或者在本地构建:

cd agent
npm install
npm run build
docker build -t mcp-agent .
# Run with local image
mcp-bridge --image mcp-agent --mount $(pwd):/workspace

� 客户端配置

将其与 克劳德桌面版 或其他MCP客户端,将以下内容添加到您的配置文件中(例如。, claude_desktop_config.json):

{
  "mcpServers": {
    "docker-agent": {
      "command": "/path/to/mcp-bridge",
      "args": [
        "--mount", "/absolute/path/to/your/project:/workspace"
      ]
    }
  }
}

备注:替换 /path/to/mcp-bridge 带有编译二进制文件的绝对路径 /absolute/path/to/your/project 使用您希望代理访问的目录。默认图像(ghcr.io/fritzprix/mcp-agent:latest)将自动拉动。