Token导航 LogoToken导航

MCP Server · AI代理

Sandbox Agent

一个基于Docker隔离的多语言沙盒代码执行代理,支持Python、Node.js和R,提供持久化状态、文件传输和LLM集成功能。

stdio官方级别未说明来源级核验工具 6
安全执行PythonClaudeClaude DesktopCursor

快速开始

作者 / 组织
eduresser
提供方
eduresser
运行时
Python

工具数量

6

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Sandbox Agent 属于AI代理类 MCP Server,公开资料标注 6 个工具,通过stdio 本地进程接入,适配 Claude Desktop、Claude、Cursor,有可以直接复制的安装命令;接入前要先准备 API Key。

分类

AI代理

传输方式

stdio

认证方式

API Key

部署方式

公开资料未说明

安装与配置

安装命令

uv run sandbox-agent cli # Interactive CLI (default)

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 6 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

沙盒代理

基于Docker的沙盒代码执行的LangGraph代理。每个会话都在一个隔离的、强化的Docker容器中运行,该容器具有一个持久内核——Python的IPython, vm.createContext Node.js和专用的R环境。支持3个运行时、与提供者无关的LLM配置和视觉(多模式模型的自动检测)。可用作交互式CLI、MCP服务器(Cursor、Claude Desktop)、REST API(艾格拉),以及React前端。

特性

  • Docker隔离 --每个会话都在自己的容器中运行,没有暴露的端口,也没有主机卷
  • 硬化容器 --非根用户(UID 65532)、PID限制、内存+交换限制、仅tmpfs可写目录、, no-new-privileges
  • 碰撞检测 --检测到OOM杀伤、分叉炸弹、分段故障,并明确报告给特工
  • 持久状态 --变量在代码执行之间存活(如Jupyter单元格)
  • PostgreSQL检查点 --对话历史记录在重新启动后仍然存在(与Aegra共享)
  • 异步支持 --Promise(Node.js)和协程(Python)会自动等待
  • 多运行时 --Python、Node.js和R
  • 丰富的显示输出 --捕获matplotlib/ggplot图形、Plotly图表、IPython音频、HTML小部件等;自动将图像发送到多模式LLM
  • 提供者不可知 --通过以下方式与OpenAI、Anthropic、Google Gemini、Ollama或任何兼容提供商合作 langchain init_chat_model
  • 运行时软件包安装 — pip install / npm install / install.packages() 在会话创建时或通过终端
  • 6工具 — create_session, execute_code, execute_terminal, import_files, export_files, stop_session
  • MCP服务器 --通过模型上下文协议(stdio传输)公开相同的工具
  • REST API -完整的LangGraph平台API,通过 艾格拉 使用OpenAPI文档、流媒体、线程管理
  • 输入验证 --Pydantic模式在执行前验证所有工具输入,失败时返回结构化错误
  • React前端 --SPA聊天、工具可视化、文件上传/下载、设置对话框(React 19+Vite+Tailwind CSS)
  • 文件上传 -将文件上载到API以导入沙箱会话(POST /threads/{id}/files/upload)
  • 文件导出 --注册文件以供下载(无主机副本);通过API下载或在交叉会话导入中使用
  • 文件导入 --从主机路径、内联内容或其他会话(在同一对话中导出的文件)导入
  • 跨会话传输 --从会话A导出,导入到会话B {session_id, path}
  • 会话垃圾回收 --空闲超时、最大生存期、线程驱逐、孤立容器清理
  • 自动清理 --当代理退出时,所有容器都会停止并被移除

先决条件

  • Python 3.11+
  • Docker引擎
  • LLM提供商的API密钥(CHAT_MODEL_API_KEY)
  • PostgreSQL(适用于API/CLI模式-checkpointer+Aegra)
  • Node.js 18+和npm(用于React前端)

设置

# Docker — installs (if needed), configures permissions, and builds all 3 images
sudo ./setup-docker.sh

# Install Python dependencies (open a new terminal so the docker group is active)
uv sync

# Install frontend dependencies
cd frontend && npm install && cd ..

# Configure environment
cp .env.example .env
# Edit .env with your CHAT_MODEL_API_KEY, POSTGRES_PASSWORD, and other settings

# Docker images are also built automatically on first use if not already present

PostgreSQL(CLI、API和UI都需要)

PostgreSQL在使用时通过Docker Compose自动启动 localhostCLI检测PostgreSQL是否可访问并自动启动:

# Manual start (if needed)
docker compose up postgres -d

或者通过以下方式指向现有的PostgreSQL实例 POSTGRES_* env变量 .env.

用法

所有命令都使用统一 sandbox-agent 入口点:

uv run sandbox-agent cli       # Interactive CLI (default)
uv run sandbox-agent mcp       # MCP server (Cursor, Claude Desktop)
uv run sandbox-agent api       # REST API (Aegra, no reload)
uv run sandbox-agent api dev   # REST API with hot reload
uv run sandbox-agent ui        # React UI (auto-starts API if needed)

命令行界面

uv run sandbox-agent cli
# or simply
uv run sandbox-agent

CLI作为Aegra REST API之上的瘦客户端运行。要求API正在运行(uv run sandbox-agent api).特征:

  • 富有的 带有语法高亮显示的工具I/O的面板(每个运行时词法分析器)
  • Markdown渲染流媒体代理输出
  • 跨重启的持久线程(~/.local/state/sandbox-agent/cli-thread.json)
  • /new 开始新对话的命令
  • 通过将模型/提供商/密钥设置传递给API configurable

MCP 服务器

运行MCP服务器(stdio传输)以与Cursor、Claude Desktop或任何兼容MCP的客户端集成:

uv run sandbox-agent mcp
光标或克劳德桌面

添加以下MCP配置:

{
  "mcpServers": {
    "sandbox-agent": {
      "command": "uv",
      "args": ["--directory", "/path/to/sandbox-agent", "run", "sandbox-agent", "mcp"]
    }
  }
}

MCP服务器公开了与CLI代理相同的6个工具,具有相同的行为。它在中维护一个持久的thread_id ~/.local/state/sandbox-agent/mcp-thread.json 为了确保导出URL的一致性。

这 import_files 该工具直接接受文件内容(如文本或base64) file_content/encoding 密钥)、主机路径(通过 source/destination),或跨会话引用(session_id+path).这 export_files 该工具通过注册文件进行下载 GET /threads/{thread_id}/files/download?session_id=...&path=....

REST API(Aegra)

将代理作为REST API运行,通过 艾格拉 (自托管LangGraph平台替代方案):

uv run sandbox-agent api       # Production mode (no reload, auto-starts PostgreSQL)
uv run sandbox-agent api dev   # Development mode (hot reload via aegra dev)

如果无法在本地主机上访问PostgreSQL,则生产命令会通过Docker Compose自动启动PostgreSQL。服务器运行在 http://localhost:8000 OpenAPI文档位于 /docs。使用LangGraph SDK或curl创建助手、线程和流运行。与Agent Chat UI、LangGraph Studio和CopilotKit兼容。

自定义端点:

  • GET /threads/{thread_id}/files/download?session_id=...&path=... --流式传输从容器导出的文件
  • POST /threads/{thread_id}/files/upload --上传文件以供导入沙盒会话
  • DELETE /threads/{thread_id} --还清理该线程的Docker会话和存储(通过中间件)
  • GET /settings --返回在后端合并的持久化前端设置 .env 默认值
  • PUT /settings --将前端设置持久化到PostgreSQL(加密)

反应前端

通过Aegra API与代理商聊天的web UI(React 19+Vite+Tailwind CSS):

# Install frontend dependencies (if not done during setup)
cd frontend && npm install && cd ..

# Start the UI (auto-starts API + PostgreSQL if needed)
uv run sandbox-agent ui

前端运行在 http://localhost:5173 (带有API代理的Vite dev服务器 :8000).特征:

  • 通过侧边栏进行话题管理(创建、恢复、删除对话)
  • 使用可扩展的工具块流式传输响应(每次运行时突出显示语法)
  • 文件上传和下载支持
  • 思维块可视化
  • 设置对话框(模型、提供商、API密钥、基本URL、视觉切换)
  • 通过服务器端API进行持久设置(GET/PUT /settings),带后端 .env 默认为回退

程序化

from sandbox_agent.sandbox import SandboxManager

manager = SandboxManager()

info = manager.create_session(
    runtime="python",
    dependencies={"pandas": "2.2.3", "matplotlib": ""},
)
sid = info.session_id

r1 = manager.execute_code(sid, """
import pandas as pd
df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})
print(df.describe())
""")
print(r1.stdout)

# Variables persist between calls
r2 = manager.execute_code(sid, "df.shape")
print(r2.result)

# Export files from the sandbox (registers for download, no host copy)
manager.execute_code(sid, "df.to_csv('/workspace/output.csv', index=False)")
export = manager.export_files(sid, [{"source": "output.csv"}])
print(export.files[0].session_id, export.files[0].path)

manager.stop_session(sid)
导出文件

export_files 注册文件以供下载和跨会话导入(无主机副本)。文件可通过API获得(GET /threads/{thread_id}/files/download?session_id=...&path=...)以及 import_files 在其他会议中:

# Export a single file
result = manager.export_files(sid, [{"source": "report.pdf"}])

# Export an entire directory
result = manager.export_files(sid, [{"source": "results/"}])

# Export multiple files at once
result = manager.export_files(sid, [
    {"source": "data.csv"},
    {"source": "chart.png"},
    {"source": "/workspace/logs/"},
])

for f in result.files:
    print(f"{f.session_id}:{f.path} ({'OK' if f.success else f.error})")
跨会话文件传输

使用 export_files + import_files 在会话之间移动文件(甚至在不同的运行时之间):

# Session A (Python): produce data
sid_a = manager.create_session(runtime="python", dependencies={"pandas": ""}).session_id
manager.execute_code(sid_a, """
import pandas as pd
df = pd.DataFrame({'x': [1,2,3], 'y': [4,5,6]})
df.to_csv('/workspace/data.csv', index=False)
""")
export = manager.export_files(sid_a, [{"source": "data.csv"}])
path = export.files[0].path  # /workspace/data.csv

# Session B (R): consume the same data
sid_b = manager.create_session(runtime="r", dependencies={"readr": ""}).session_id
manager.import_files(sid_b, [{"session_id": sid_a, "path": path, "destination": "data.csv"}])
manager.execute_code(sid_b, 'df  API["Aegra REST API
    (LangGraph Platform)"]
    UI --> API
    API --> Agent["LangGraph ReAct Agent"]
    Agent --> Tools["LangChain Tools"]
    MCP --> Core["Core Tool Functions"]

    Tools --> Core
    Core --> SM["SandboxManager
    Docker SDK"]

    SM -->|"docker exec -i + JSON pipe"| Docker

    subgraph Docker ["Docker Containers
    isolated, hardened"]
        direction LR
        PY["Python
        IPython · UNIX socket"]
        JS["Node.js
        vm.createContext · UNIX socket"]
        R["R
        R env · TCP :8765"]
    end

    subgraph Storage ["Persistence"]
        PG["PostgreSQL
        checkpoints, exports"]
    end

    API --> PG
    SM --> PG

在每个容器内,都有一个持久的 内核 (PID 1)保持执行状态 客户端 通过UNIX套接字(Python/Node.js)或TCP(R)连接到它 docker exec 呼叫:

flowchart TB
    SM["SandboxManager"] -->|"docker exec -i"| Client["Client (ephemeral)"]

    subgraph container ["Container"]
        Client -->|"UNIX socket / TCP"| Kernel["Kernel (PID 1, persistent)"]
        Kernel --- State["State
        variables, imports, data"]
    end

测试

# Unit tests (no Docker required)
uv run pytest tests/test_cli.py tests/test_http_app.py -v

# Integration tests (requires Docker)
uv run pytest tests/test_manager.py tests/test_tools.py tests/test_export_files.py tests/test_mcp.py -v

# LangGraph debug trace (requires Docker + LLM API key)
uv run pytest tests/test_langgraph_debug.py -v -s

# API integration tests (requires Docker + running API: uv run sandbox-agent api dev)
uv run pytest tests/test_api.py -v -s

# Full suite
uv run pytest tests/ -v

生产部署

A制作 Dockerfile 和 docker-compose.yml 包括:

# Start PostgreSQL + API
docker compose up -d

# Or build and run manually
docker build -t sandbox-agent-api .
docker run -p 8000:8000 --env-file .env sandbox-agent-api

生产图像使用 aegra serve 具有非根 app 用户。

许可证

麻省理工学院 --爱德华多·拉蒙·雷瑟

工具与能力

工具数量

6

资源数量

0

提示词数量

0

能力标签

代码沙盒Python本地部署Docker隔离多语言支持LLM集成安全执行

支持客户端

Claude DesktopClaudeCursor

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 只提供 6 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 已经适配 Claude Desktop、Claude、Cursor,换客户端不用重新研究配置。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备API Key,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到API Key的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Sandbox Agent

MCP World · 本页

6stdio有1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Sandbox Agent 怎么安装?

公开资料给出的安装命令是 uv run sandbox-agent cli # Interactive CLI (default),运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Sandbox Agent 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Sandbox Agent 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Sandbox Agent 需要 API Key 吗?

公开资料标注的认证方式是API Key,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Sandbox Agent 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、Cursor;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP