返回市场
沙盒-mcp

沙盒-mcp

作者:Tsuchijo14 星标更新:2025-01-11

项目介绍

沙盒 MCP 服务器

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

  • 使用任何 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  # 在 Unix/MacOS 上
# 或在 Windows 上:
# .venv\Scripts\activate
  1. 安装依赖项:
uv pip install .

与 Claude Desktop 的集成

  1. 打开 Claude Desktop 的配置文件:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %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

使用示例

基本用法

连接到 Claude Desktop 后,您可以:

  1. 创建一个 Python 容器:
能否创建一个 Python 容器,并编写一个简单的“Hello World”程序?
  1. 在不同语言中运行代码:
能否创建一个计算斐波那契数列的 C 程序并运行它?
  1. 安装包并使用它们:
能否创建一个使用 numpy 生成和绘制随机数据的 Python 脚本?

保存和复制环境

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

创建持久性容器

创建容器时,可以使其具有持久性:

能否创建一个已安装 numpy 和 pandas 的持久性 Python 容器?

这将创建一个容器:

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

服务器将提供以下指令:

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

保存容器状态

设置好环境后,可以将其保存为 Docker 镜像:

能否将当前容器状态保存为名为 'my-ds-env:v1' 的镜像?

这将:

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

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

能否使用 my-ds-env:v1 镜像创建一个新容器?

生成 Dockerfile

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

能否导出一个能够重建此环境的 Dockerfile?

生成的 Dockerfile 将包括:

  • 基础镜像规范
  • 创建的文件
  • 进一步设置步骤的模板

您可以使用此 Dockerfile 来:

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

推荐工作流程

为了实现可重现的开发环境:

  1. 创建一个持久性容器:
创建一个用于数据科学工作的持久性 Python 容器
  1. 安装所需的包并设置环境:
在容器中安装 numpy、pandas 和 scikit-learn
  1. 测试您的设置:
创建并运行一个测试脚本来验证环境
  1. 保存状态:
将此容器保存为 'ds-workspace:v1'
  1. 导出 Dockerfile:
为此环境生成一个 Dockerfile

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

  • 直接使用保存的 Docker 镜像
  • 根据 Dockerfile 构建并进行修改
  • 如有需要,访问原始容器

安全注意事项

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

项目结构

sandbox_server/
├── sandbox_server.py     # 主服务器实现
├── pyproject.toml        # 项目配置
└── README.md            # 此文件

可用工具

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

  1. create_container_environment: 创建具有指定镜像的新 Docker 容器
  2. create_file_in_container: 在容器中创建文件
  3. execute_command_in_container: 在容器中运行命令
  4. save_container_state: 将容器状态保存为持久性容器
  5. export_dockerfile: 导出 Dockerfile 以创建持久性环境
  6. exit_container: 关闭容器以清理环境