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)
安装
-
克隆此仓库: bash git clone https://github.com/yourusername/mcp-docker-interpreter.git cd mcp-docker-interpreter
-
创建并激活虚拟环境: bash python -m venv .venv source .venv/bin/activate # 在Windows上: .venvScriptsactivate
-
安装依赖项: 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服务器公开了三个主要工具:
-
initialize_sandbox:为代码执行创建一个新的Docker容器
参数:
- image: 要使用的Docker镜像 (默认: "alpine:latest")
-
execute_code:在初始化的沙盒中运行代码
参数:
- code: 要执行的代码字符串
- language: 编程语言 (默认: "python")
-
stop_sandbox:停止并移除容器
不需要参数
工作原理
-
当调用
initialize_sandbox时,系统会:- 基于Alpine Linux创建一个Docker容器
- 安装Python及其他依赖
- 设置安全限制
-
当调用
execute_code时:- 代码在隔离的容器内执行
- 标准输出和错误被捕获
- 结果被返回给调用的应用程序
-
当调用
stop_sandbox时:- 容器被停止并移除
- 所有资源被释放
安全考量
此沙盒实现了多项安全措施:
- 容器具有受限的CPU和内存使用
- 容器以最小权限运行
- 默认禁用网络访问
- 容器是一次性的,在使用后会被清理
开发
项目结构
mcp-docker-interpreter/ ├── main.py # MCP服务器和Docker沙盒的主要实现 ├── requirements.txt # 项目依赖 └── README.md # 本文件
添加新的语言支持
要添加对新编程语言的支持,请修改DockerSandbox类中的run_code方法以处理新语言。
故障排除
常见问题1. Docker连接错误:
- 确保Docker正在运行
- 检查DOCKER_HOST环境变量是否为您的Docker安装正确设置
-
容器创建失败:
- 验证您是否有权限创建Docker容器
- 确保指定的基础镜像是可访问的
-
代码执行失败:
- 检查语言运行时是否已在容器中正确安装
- 验证代码对于指定的语言是否有效
许可证
致谢
- 本项目使用了模型上下文协议
- 使用Docker SDK for Python构建
服务配置
[{'mcpServers': {'docker-sandbox': {'args': ['/absolute/path/to/your/main.py'], 'command': 'python', 'env': {'DOCKER_HOST': 'unix:///path/to/your/docker.sock'}}}}]