Docker沙盒代码执行环境

一个基于Docker的安全代码执行环境,用于Model Context Protocol (MCP),支持多语言代码在隔离容器中运行。

  • by svngoku
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 svngoku/mcp-docker-code-interpreter

使用说明

MCP Docker沙盒解释器

用于模型上下文协议(MCP)的基于Docker的安全代码执行环境。

概述

该项目为通过MCP(模型上下文协议)执行代码提供了一个安全的沙箱。它允许AI助手通过在隔离的Docker容器中执行所有代码,安全地运行代码,而不需要直接访问主机系统。

graph LR
    A[Claude/Cursor] -->|Sends Code| B[MCP Server]
    B -->|Executes Code| C[Docker Sandbox]
    C -->|Returns Results| A

特性

  • 安全执行:代码在具有严格安全限制的隔离Docker容器中运行
  • 多语言支持:目前支持Python,可轻松扩展到其他语言
  • 资源限制:CPU和内存限制,防止滥用
  • MCP集成:与模型上下文协议完全兼容
  • 自动设置:处理容器创建、依赖项安装和清理

需求

  • Docker(桌面或引擎)
  • Python 3.10+
  • MCP-SDK(pip install mcp)
  • Docker Python SDK(pip install docker)

安装

  1. 克隆此存储库:

    git clone https://github.com/yourusername/mcp-docker-interpreter.git
    cd mcp-docker-interpreter
    
  2. 创建并激活虚拟环境:

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

    pip install -r requirements.txt
    

用法

启动MCP服务器

通过运行以下命令启动服务器:

# For Colima users:
export DOCKER_HOST="unix:///Users/username/.colima/default/docker.sock"

# Run the server
uv run mcp dev main.py

连接到AI助手

您可以将此MCP服务器连接到支持模型上下文协议的AI助手:

光标

在Cursor中,将以下内容添加到MCP设置中:

{
  "mcpServers": {
    "docker-sandbox": {
      "command": "python",
      "args": ["/absolute/path/to/your/main.py"],
      "env": {
        "DOCKER_HOST": "unix:///path/to/your/docker.sock"
      }
    }
  }
}

用实际文件路径替换路径。

克劳德桌面版

与Cursor类似,将配置添加到Claude Desktop的MCP设置中。

MCP工具

此MCP服务器公开了三个主要工具:

  1. 初始化_沙盒:为代码执行创建一个新的Docker容器

    Arguments:
    - image: The Docker image to use (default: "alpine:latest")
    
  2. execute_code:在初始化的沙盒中运行代码

    Arguments:
    - code: The code string to execute
    - language: Programming language (default: "python")
    
  3. stop_sandbox:停止并移除容器

    No arguments needed
    

运作原理

  1. 当 initialize_sandbox 系统被称为:

    • 基于Alpine Linux创建Docker容器
    • 安装Python和其他依赖项
    • 设置安全限制
  2. 当 execute_code 被称为:

    • 代码在隔离容器内执行
    • 捕获标准输出和错误
    • 结果返回给调用应用程序
  3. 当 stop_sandbox 被称为:

    • 容器被停止并移除
    • 所有资源均已释放

安全注意事项

此沙盒实现了多种安全措施:

  • 容器的CPU和内存使用受到限制
  • 容器以最低权限运行
  • 默认情况下禁用网络访问
  • 容器是一次性的,使用后会被清理干净

发展

项目结构

mcp-docker-interpreter/
├── main.py          # Main implementation of MCP server and Docker sandbox
├── requirements.txt # Project dependencies
└── README.md        # This file

添加新语言支持

要添加对新编程语言的支持,请修改 run_code 方法在 DockerSandbox 类来处理新语言。

故障排除

常见问题

  1. Docker连接错误:

    • 确保Docker正在运行
    • 检查是否为DOCKER安装正确设置了DOCKER_HOST环境变量
  2. 容器创建失败:

    • 验证您是否有权创建Docker容器
    • 确保指定的基础映像可访问
  3. 代码执行失败:

    • 检查语言运行库是否正确安装在容器中
    • 验证代码对指定语言有效

许可证

MIT许可证

致谢