Docker容器执行服务

一个提供隔离Docker环境用于代码执行的MCP服务器,支持多语言编程环境创建、包安装和命令执行。

  • by Tsuchijo
  • Python
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 Tsuchijo/sandbox-mcp

使用说明

沙盒MCP服务器

一个MCP服务器,为代码执行提供隔离的Docker环境。此服务器允许您:

  • 使用任何Docker镜像创建容器
  • 用多种编程语言编写和执行代码
  • 安装软件包并设置开发环境
  • 在隔离容器中运行命令

先决条件

  • Python 3.9或更高版本
  • Docker已安装并正在运行
  • uv包管理器(推荐)
  • Docker MCP服务器(推荐)

安装

  1. 克隆此存储库:
git clone <your-repo-url>
cd sandbox_server
  1. 使用uv创建和激活虚拟环境:
uv venv
source .venv/bin/activate  # On Unix/MacOS
# Or on Windows:
# .venv\Scripts\activate
  1. 安装依赖项:
uv pip install .

与Claude Desktop集成

  1. 打开Claude Desktop的配置文件:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  1. 添加沙盒服务器配置:
{
    "mcpServers": {
        "sandbox": {
            "command": "uv",
            "args": [
                "--directory",
                "/absolute/path/to/sandbox_server",
                "run",
                "sandbox_server.py"
            ],
            "env": {
                "PYTHONPATH": "/absolute/path/to/sandbox_server"
            }
        }
    }
}

替换 /absolute/path/to/sandbox_server 带有项目目录的实际路径。

  1. 重新启动克劳德桌面

使用示例

基本用法

连接到Claude Desktop后,您可以:

  1. 创建一个Python容器:
Could you create a Python container and write a simple hello world program?
  1. 用不同语言运行代码:
Could you create a C program that calculates the fibonacci sequence and run it?
  1. 安装软件包并使用它们:
Could you create a Python script that uses numpy to generate and plot some random data?

保存和复制环境

服务器提供了几种保存和复制开发环境的方法:

创建持久容器

创建容器时,可以使其持久化:

Could you create a persistent Python container with numpy and pandas installed?

这将创建一个容器,该容器:

  • Claude Desktop关闭后仍在运行
  • 可以直接通过Docker访问
  • 保留所有已安装的软件包和文件

服务器将提供以下说明:

  • 直接访问容器(docker exec)
  • 停止和启动容器
  • 不再需要时将其删除

保存容器状态

设置环境后,您可以将其另存为Docker映像:

Could you save the current container state as an image named 'my-ds-env:v1'?

这将:

  1. 使用您的所有内容创建一个新的Docker镜像:
    • 已安装的软件包
    • 已创建文件
    • 配置更改
  2. 提供重复使用环境的说明

然后,您可以共享此图像或将其用作新容器的起点:

Could you create a new container using the my-ds-env:v1 image?

生成Dockerfiles

为了使您的环境完全可复制,您可以生成一个Dockerfile:

Could you export a Dockerfile that recreates this environment?

生成的Dockerfile将包括:

  • 基础图像规范
  • 已创建文件
  • 其他设置步骤的模板

您可以使用此Dockerfile来:

  1. 与他人共享您的环境设置
  2. 版本控制您的开发环境
  3. 修改和自定义构建过程
  4. 部署到不同的系统

推荐工作流程

对于可重复的开发环境:

  1. 创建持久容器:
Create a persistent Python container for data science work
  1. 安装所需的软件包并设置环境:
Install numpy, pandas, and scikit-learn in the container
  1. 测试您的设置:
Create and run a test script to verify the environment
  1. 保存状态:
Save this container as 'ds-workspace:v1'
  1. 导出Dockerfile:
Generate a Dockerfile for this environment

这为您提供了多种重新创建环境的选项:

  • 直接使用保存的Docker镜像
  • 通过修改从Dockerfile构建
  • 如果需要,可以访问原始容器

安全说明

  • 所有代码都在隔离的Docker容器中执行
  • 使用后容器会自动移除
  • 文件系统在容器之间是隔离的
  • 主机系统访问受到限制

项目结构

sandbox_server/
├── sandbox_server.py     # Main server implementation
├── pyproject.toml        # Project configuration
└── README.md            # This file

可用工具

服务器提供三个主要工具:

  1. create_container_environment:使用指定映像创建新的Docker容器
  2. create_file_in_container:在容器中创建文件
  3. execute_command_in_container:在容器中运行命令
  4. save_container_state:将容器状态保存到持久容器
  5. export_dockerfile:导出docker文件以创建持久环境
  6. exit_container:完成后关闭容器以清理环境