s

svngoku

code-executionshell-accessvirtualization

456 查看 · 2026-07-07 更新

MCP Docker 沙盒解释器

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

概述

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

mermaid graph LR A[Claude/Cursor] -->|发送代码| B[MCP 服务器] B -->|执行代码| C[Docker 沙盒] C -->|返回结果| A

特性

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

要求

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

安装

  1. 克隆此仓库: bash git clone https://github.com/yourusername/mcp-docker-interpreter.git cd mcp-docker-interpreter

  2. 创建并激活虚拟环境: bash python -m venv .venv source .venv/bin/activate # 在Windows上: .venvScriptsactivate

  3. 安装依赖项: bash pip install -r requirements.txt

使用方法

启动MCP服务器

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

bash

对于Colima用户:

export DOCKER_HOST="unix:///Users/username/.colima/default/docker.sock"

运行服务器

uv run mcp dev main.py

连接到AI助手

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

Cursor

在Cursor中,向您的MCP设置添加以下内容:

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

请用实际文件路径替换这些路径。

Claude Desktop

类似于Cursor,在Claude Desktop的MCP设置中添加配置。

MCP工具

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

  1. initialize_sandbox:为代码执行创建一个新的Docker容器

    参数:

    • image: 要使用的Docker镜像 (默认: "alpine:latest")
  2. execute_code:在初始化的沙盒中运行代码

    参数:

    • code: 要执行的代码字符串
    • language: 编程语言 (默认: "python")
  3. stop_sandbox:停止并移除容器

    不需要参数

工作原理

  1. 当调用initialize_sandbox时,系统会:

    • 基于Alpine Linux创建一个Docker容器
    • 安装Python及其他依赖
    • 设置安全限制
  2. 当调用execute_code时:

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

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

安全考量

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

  • 容器具有受限的CPU和内存使用
  • 容器以最小权限运行
  • 默认禁用网络访问
  • 容器是一次性的,在使用后会被清理

开发

项目结构

mcp-docker-interpreter/ ├── main.py # MCP服务器和Docker沙盒的主要实现 ├── requirements.txt # 项目依赖 └── README.md # 本文件

添加新的语言支持

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

故障排除

常见问题1. Docker连接错误:

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

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

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

许可证

MIT许可证

致谢

服务配置

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

来源