J

JohanLi233

code-executionvirtualization

316 查看 · 2026-07-07 更新

MCP Sandbox

MCP Sandbox Logo

欢迎尝试 mcp sandbox

Python Version License UV MCP

中文文档 | English

演示

demo

Python MCP Sandbox 是一个交互式的 Python 代码执行工具,允许用户和 LLM 在隔离的 Docker 容器中安全地执行 Python 代码并安装包。

Viby

Viby 与 mcp sandbox 配合使用

功能

  • 🐳 Docker 隔离:在隔离的 Docker 容器中安全地运行 Python 代码
  • 📦 包管理:轻松安装和管理 Python 包
  • 📊 文件生成:支持生成文件并通过网页链接访问

安装

bash

克隆仓库

git clone https://github.com/JohanLi233/python-mcp-sandbox.git cd python-mcp-sandbox

uv venv uv sync

启动服务器

uv run main.py

默认的 SSE 端点是 http://localhost:8000/sse,你可以通过 MCP Inspector 或任何支持 SSE 连接的客户端与其交互。

可用工具

  1. create_sandbox: 创建一个新的 Python Docker 沙箱,并返回其 ID 以便后续代码执行和包安装
  2. list_sandboxes: 列出所有现有的沙箱(Docker 容器)以供重用
  3. execute_python_code: 在指定的 Docker 沙箱中执行 Python 代码
  4. install_package_in_sandbox: 在指定的 Docker 沙箱中安装 Python 包
  5. check_package_installation_status: 检查 Docker 沙箱中是否已安装某个包或其安装状态
  6. execute_terminal_command: 在指定的 Docker 沙箱中执行终端命令。参数:sandbox_id (字符串), command (字符串)。返回 stdout, stderr, exit_code
  7. upload_file_to_sandbox: 将本地文件上传到指定的 Docker 沙箱。参数:sandbox_id (字符串), local_file_path (字符串), dest_path (字符串, 可选, 默认: /app/results)。

项目结构

python-mcp-sandbox/ ├── main.py # 应用程序入口 ├── requirements.txt # 项目依赖 ├── Dockerfile # Python 容器的 Docker 配置 ├── results/ # 生成文件的目录 ├── mcp_sandbox/ # 主包目录 │ ├── init.py │ ├── models.py # Pydantic 模型 │ ├── api/ # API 相关组件 │ │ ├── init.py │ │ └── routes.py # API 路由定义 │ ├── core/ # 核心功能 │ │ ├── init.py │ │ ├── docker_manager.py # Docker 容器管理 │ │ └── mcp_tools.py # MCP 工具 │ └── utils/ # 实用工具 │ ├── init.py │ ├── config.py # 配置常量 │ ├── file_manager.py # 文件管理 │ └── task_manager.py # 周期性任务管理 └── README.md # 项目文档

示例提示

我已经为你配置了一个 Python 代码执行沙箱。你可以按照以下步骤运行 Python 代码:

  1. 首先,使用 "list_sandboxes" 工具查看所有现有的沙箱(Docker 容器)。

    • 如果存在沙箱,可以重用现有的 sandbox_id,不要创建新的。
    • 如果需要新的沙箱,请使用 "create_sandbox" 工具。
    • 每个沙箱都是一个独立的 Python 环境,后续操作都需要 sandbox_id。
  2. 如果需要安装包,请使用 "install_package_in_sandbox" 工具

    • 参数:sandbox_id 和 package_name(例如 numpy, pandas)
    • 这将启动异步安装并立即返回状态
  3. 安装包后,可以使用 "check_package_installation_status" 工具检查安装状态

    • 参数:sandbox_id 和 package_name(要检查的包名)
    • 如果包仍在安装中,你需要再次使用此工具进行检查
  4. 使用 "execute_python_code" 工具运行你的代码

    • 参数:sandbox_id 和 code(Python 代码)
    • 返回输出、错误和生成文件的链接
    • 所有生成的文件都存储在沙箱内,file_links 是直接的 HTTP 链接,可以在浏览器中内联查看

示例工作流程:

  • 使用 list_sandboxes 检查可用的沙箱,如果没有可用的沙箱,则使用 create_sandbox 创建一个新的 → 获取 sandbox_id
  • 使用 install_package_in_sandbox 安装必要的包(如 pandas, matplotlib),使用 sandbox_id 参数
  • 使用 check_package_installation_status 验证包安装,使用相同的 sandbox_id 参数
  • 使用 execute_python_code 运行你的代码,使用 sandbox_id 参数

代码执行在一个安全的沙箱中进行。生成的文件(图像、CSV 等)将以直接的 HTTP 链接形式提供,可以直接在浏览器中查看。

请记住不要在你的 Python 代码中使用 plt.show()。对于可视化:

  • 使用 plt.savefig() 保存图形,而不是 plt.show()
  • 对于数据,使用 df.to_csv() 或 df.to_excel() 等方法保存为文件
  • 所有保存的文件将在结果中自动显示为 HTTP 链接,可以直接打开或嵌入。## MCP 示例配置

以下是针对 claude 的示例配置:

json { "mcpServers": { "mcpSandbox": { "command": "npx", "args": ["-y", "supergateway", "--sse", "http://localhost:8000/sse"] } } }

在线演示的 MCP 示例配置

json { "mcpServers": { "mcpSandbox": { "command": "npx", "args": ["-y", "supergateway", "--sse", "http://115.190.87.78/sse?api_key=<API_KEY>"] } } }

根据您的环境需要修改 serverUrl

服务配置

[{'mcpServers': {'mcpSandbox': {'args': ['-y', 'supergateway', '--sse', 'http://localhost:8000/sse'], 'command': 'npx'}}}, {'mcpServers': {'mcpSandbox': {'args': ['-y', 'supergateway', '--sse', 'http://115.190.87.78/sse?api_key=<API_KEY>'], 'command': 'npx'}}}]

来源