JohanLi233
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"mcpSandbox": {
"args": [
"-y",
"supergateway",
"--sse",
"http://115.190.87.78/sse?api_key=\u003cAPI_KEY\u003e"
],
"command": "npx"
}
}
}
服务介绍
MCP Sandbox
欢迎尝试 mcp sandbox
中文文档 | English
演示
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 连接的客户端与其交互。
可用工具
- create_sandbox: 创建一个新的 Python Docker 沙箱,并返回其 ID 以便后续代码执行和包安装
- list_sandboxes: 列出所有现有的沙箱(Docker 容器)以供重用
- execute_python_code: 在指定的 Docker 沙箱中执行 Python 代码
- install_package_in_sandbox: 在指定的 Docker 沙箱中安装 Python 包
- check_package_installation_status: 检查 Docker 沙箱中是否已安装某个包或其安装状态
- execute_terminal_command: 在指定的 Docker 沙箱中执行终端命令。参数:
sandbox_id(字符串),command(字符串)。返回stdout,stderr,exit_code。 - 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 代码:
-
首先,使用 "list_sandboxes" 工具查看所有现有的沙箱(Docker 容器)。
- 如果存在沙箱,可以重用现有的 sandbox_id,不要创建新的。
- 如果需要新的沙箱,请使用 "create_sandbox" 工具。
- 每个沙箱都是一个独立的 Python 环境,后续操作都需要 sandbox_id。
-
如果需要安装包,请使用 "install_package_in_sandbox" 工具
- 参数:sandbox_id 和 package_name(例如 numpy, pandas)
- 这将启动异步安装并立即返回状态
-
安装包后,可以使用 "check_package_installation_status" 工具检查安装状态
- 参数:sandbox_id 和 package_name(要检查的包名)
- 如果包仍在安装中,你需要再次使用此工具进行检查
-
使用 "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。