项目简介

本项目 'MCP Docker沙箱代码执行器' 是一个基于 Model Context Protocol (MCP) 的服务器实现,它利用 Docker 容器技术为大型语言模型 (LLM) 提供一个安全隔离的代码执行环境。通过此服务器,LLM 可以在沙箱中安全地运行代码,而无需直接访问主机系统资源。

主要功能点

  • 安全的代码执行环境: 所有代码都在隔离的 Docker 容器中执行,保障主机系统安全。
  • 多语言支持: 目前支持 Python,易于扩展以支持更多编程语言。
  • 资源限制: 可以限制容器的 CPU 和内存使用,防止资源滥用。
  • MCP 协议兼容: 完全遵循 Model Context Protocol,可以与任何支持 MCP 协议的 LLM 客户端集成。
  • 自动化的容器管理: 自动创建、启动、停止和清理 Docker 容器,简化使用流程。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/svngoku/mcp-docker-code-interpreter.git
    cd mcp-docker-code-interpreter
  2. 创建并激活虚拟环境 (推荐):

    python -m venv .venv
    source .venv/bin/activate   # Linux/macOS
    .venv\Scripts\activate  # Windows
  3. 安装依赖:

    pip install -r requirements.txt
  4. 确保 Docker 运行: 请确保你的系统上已安装并运行 Docker Desktop 或 Docker Engine。

服务器配置

要将此 MCP 服务器连接到 MCP 客户端(例如 Cursor 或 Claude Desktop),你需要配置客户端的 MCP 设置。以下是配置示例,你需要根据你的实际情况进行调整。

针对 Cursor 或 Claude Desktop 的 MCP 配置 (JSON 格式):

{
  "mcpServers": {
    "docker-sandbox": {  // 服务器名称,可以自定义
      "command": "python", // 启动服务器的命令
      "args": ["/absolute/path/to/mcp-docker-code-interpreter/main.py"], // 启动命令的参数,指向 main.py 脚本的绝对路径
      "env": {
        "DOCKER_HOST": "unix:///path/to/your/docker.sock" // Docker socket 路径,根据你的 Docker 安装配置
      }
    }
  }
}

配置参数说明:

  • 'server name' (docker-sandbox): 为你的 MCP 服务器指定一个名称,在客户端中用于标识。
  • 'command' (python): 启动 MCP 服务器的命令,这里使用 'python' 解释器。
  • 'args' (["/absolute/path/to/mcp-docker-code-interpreter/main.py"]): 传递给启动命令的参数,请将 '/absolute/path/to/mcp-docker-code-interpreter/main.py' 替换为你本地 'main.py' 文件的绝对路径。 例如 '/Users/yourusername/Documents/mcp-docker-code-interpreter/main.py'。
  • 'env' (环境变量):
    • 'DOCKER_HOST': 请将 'unix:///path/to/your/docker.sock' 替换为你 Docker socket 文件的路径。 Docker Desktop 默认路径可能有所不同,例如 macOS 上 Colima 的路径可能是 'unix:///Users/username/.colima/default/docker.sock'。 你需要根据你的 Docker 环境进行调整。

查找 Docker Socket 路径:

Docker socket 的路径取决于你的 Docker 安装方式和操作系统。

  • Docker Desktop (默认): 通常 Docker Desktop 会自动配置,无需显式设置 'DOCKER_HOST' 环境变量。 如果遇到连接问题,可以尝试不设置 'DOCKER_HOST' 环境变量。
  • Colima (macOS): 通常路径为 'unix:///Users/username/.colima/default/docker.sock',你需要将 'username' 替换为你的用户名。
  • Docker Engine (Linux): 通常路径为 'unix:///var/run/docker.sock'。

如果你的 Docker socket 路径不确定,请查阅 Docker 官方文档或你的 Docker 环境配置说明。

基本使用方法

  1. 启动 MCP 服务器: 在克隆的仓库目录下,激活虚拟环境后,运行以下命令启动服务器:

    uv run mcp dev main.py

    或者直接运行:

    python main.py

    确保在运行命令前,你已经正确配置了 'DOCKER_HOST' 环境变量(如果需要)。

  2. 在 MCP 客户端中配置并连接服务器: 根据上述 "服务器配置" 部分的说明,在你的 MCP 客户端(如 Cursor 或 Claude Desktop)中添加并配置 "docker-sandbox" 服务器。

  3. 使用 MCP 工具: 连接成功后,你可以在 MCP 客户端中使用以下工具 (Tools) 与服务器交互:

    • 'initialize_sandbox(image="alpine:latest")': 初始化 Docker 沙箱环境。

      • 'image': 可选参数,指定使用的 Docker 镜像,默认为 'alpine:latest' (一个轻量级的 Linux 发行版)。你可以根据需要选择其他镜像,例如 'python:3.12-alpine' 或 'node:20-slim'。
      • 调用此工具会创建一个新的 Docker 容器作为代码执行的沙箱。
    • 'execute_code(code, language="python")': 在沙箱中执行代码。

      • 'code': 要执行的代码字符串。
      • 'language': 可选参数,指定编程语言,默认为 'python'。目前主要支持 Python。
      • 调用此工具会在之前初始化的沙箱容器中执行指定的代码,并返回执行结果(标准输出和错误)。
    • 'stop_sandbox()': 停止并移除 Docker 沙箱容器。

      • 调用此工具会停止并删除当前正在运行的沙箱容器,释放资源。

    使用示例 (在支持 MCP 客户端中,通过自然语言或特定指令调用 Tool):

    例如,在 Cursor 中,你可能可以使用类似 '@tool initialize_sandbox' 来初始化沙箱,然后使用 '@tool execute_code code="print('Hello from sandbox')" language="python"' 来执行 Python 代码。具体的调用方式取决于你的 MCP 客户端的实现。

注意事项

  • Docker 环境: 本项目依赖 Docker 环境,请确保 Docker 正常运行。
  • 资源限制: 沙箱容器有资源限制 (例如内存限制 512MB, CPU 限制等),请注意执行的代码不要超出限制。
  • 安全性: 虽然提供了沙箱环境,但仍需注意代码的安全性。本项目尽力提供了安全措施,但无法保证绝对安全。

信息

分类

AI与计算