使用说明
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)
安装
-
克隆此存储库:
git clone https://github.com/yourusername/mcp-docker-interpreter.git cd mcp-docker-interpreter -
创建并激活虚拟环境:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate -
安装依赖项:
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服务器公开了三个主要工具:
-
初始化_沙盒:为代码执行创建一个新的Docker容器
Arguments: - image: The Docker image to use (default: "alpine:latest") -
execute_code:在初始化的沙盒中运行代码
Arguments: - code: The code string to execute - language: Programming language (default: "python") -
stop_sandbox:停止并移除容器
No arguments needed
运作原理
-
当
initialize_sandbox系统被称为:- 基于Alpine Linux创建Docker容器
- 安装Python和其他依赖项
- 设置安全限制
-
当
execute_code被称为:- 代码在隔离容器内执行
- 捕获标准输出和错误
- 结果返回给调用应用程序
-
当
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 类来处理新语言。
故障排除
常见问题
-
Docker连接错误:
- 确保Docker正在运行
- 检查是否为DOCKER安装正确设置了DOCKER_HOST环境变量
-
容器创建失败:
- 验证您是否有权创建Docker容器
- 确保指定的基础映像可访问
-
代码执行失败:
- 检查语言运行库是否正确安装在容器中
- 验证代码对指定语言有效
许可证
致谢
- 该项目使用 模型上下文协议
- 内置于 Docker Python SDK
