e0e362d700
SDK Tests / changes (push) Successful in 2m29s
Real E2E Tests / changes (push) Successful in 2m29s
Deploy Docs Pages / build (push) Has been cancelled
Deploy Docs Pages / deploy (push) Has been cancelled
Real E2E Tests / JavaScript E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Python E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Java E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / C# E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Go E2E (docker bridge) (push) Has been cancelled
Real E2E Tests / Real E2E CI (push) Has been cancelled
SDK Tests / SDK CI (push) Has been cancelled
SDK Tests / CLI Tests (push) Has been cancelled
SDK Tests / Python SDK Quality (code-interpreter) (push) Has been cancelled
SDK Tests / Python SDK Quality (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / JavaScript SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Python SDK Tests (sandbox) (push) Has been cancelled
SDK Tests / CLI Quality (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Kotlin SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (code-interpreter) (push) Has been cancelled
SDK Tests / C# SDK Quality And Tests (sandbox) (push) Has been cancelled
SDK Tests / Go SDK Quality And Tests (push) Has been cancelled
153 lines
3.7 KiB
Markdown
153 lines
3.7 KiB
Markdown
# OpenSandbox MCP Sandbox Server
|
|
|
|
## 1. Overview
|
|
|
|
OpenSandbox MCP Server exposes the OpenSandbox Python SDK as MCP tools for
|
|
Claude Code, Cursor, and other MCP-capable clients. It provides focused
|
|
sandbox lifecycle management, command execution, and text file operations.
|
|
|
|
## 2. Installation & Startup
|
|
|
|
### Source
|
|
|
|
```bash
|
|
uv sync
|
|
uv run opensandbox-mcp
|
|
```
|
|
|
|
### Package
|
|
|
|
```bash
|
|
pip install opensandbox-mcp
|
|
opensandbox-mcp
|
|
```
|
|
|
|
### Configuration
|
|
|
|
Environment variables:
|
|
|
|
- `OPEN_SANDBOX_API_KEY`
|
|
- `OPEN_SANDBOX_DOMAIN`
|
|
|
|
CLI overrides:
|
|
|
|
```bash
|
|
opensandbox-mcp --api-key ... --domain ... --protocol https
|
|
```
|
|
|
|
Config fields:
|
|
|
|
- `api_key`: OpenSandbox API key for authentication.
|
|
- `domain`: OpenSandbox API domain, for example `api.opensandbox.io`.
|
|
- `protocol`: `http` or `https` for API requests.
|
|
- `request_timeout_seconds`: HTTP request timeout in seconds.
|
|
- `transport`: `stdio` by default, or `streamable-http`.
|
|
|
|
### Streamable HTTP
|
|
|
|
```bash
|
|
opensandbox-mcp \
|
|
--transport streamable-http
|
|
```
|
|
|
|
## 3. Integrations
|
|
|
|
### Claude Code stdio
|
|
|
|
```bash
|
|
claude mcp add opensandbox-sandbox --transport stdio -- \
|
|
opensandbox-mcp --api-key "$OPEN_SANDBOX_API_KEY" --domain "$OPEN_SANDBOX_DOMAIN"
|
|
```
|
|
|
|
### Claude Code http
|
|
|
|
```bash
|
|
claude mcp add opensandbox-sandbox --transport http http://localhost:8000/mcp
|
|
```
|
|
|
|
### Cursor stdio
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"opensandbox-sandbox": {
|
|
"command": "opensandbox-mcp",
|
|
"args": [
|
|
"--api-key",
|
|
"${OPEN_SANDBOX_API_KEY}",
|
|
"--domain",
|
|
"${OPEN_SANDBOX_DOMAIN}"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Cursor http
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"opensandbox-sandbox": {
|
|
"url": "http://localhost:8000/mcp"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## 4. Tools
|
|
|
|
Notes:
|
|
|
|
- All tools operate on a `sandbox_id` returned by `sandbox_create` or `sandbox_connect`.
|
|
- `file_read`/`file_write` are text-only; use `encoding` and `range_header` for large files.
|
|
|
|
### Sandbox
|
|
|
|
- `sandbox_create`: create a new sandbox and register it locally
|
|
- `sandbox_connect`: attach to an existing sandbox and register it locally
|
|
- `sandbox_kill`: terminate a sandbox by ID
|
|
- `sandbox_get_info`: fetch sandbox info by ID
|
|
- `sandbox_list`: list sandboxes with optional `filter` object
|
|
- `sandbox_renew`: extend sandbox expiration
|
|
- `sandbox_healthcheck`: check if sandbox is healthy
|
|
- `sandbox_get_metrics`: get resource metrics
|
|
- `sandbox_get_endpoint`: get network endpoint for a port
|
|
|
|
### Command Execution
|
|
|
|
- `command_run`: run a command inside a sandbox
|
|
- `command_interrupt`: interrupt a running command
|
|
|
|
### Filesystem
|
|
|
|
- `file_read`: read a text file
|
|
- `file_write`: write a text file
|
|
- `file_delete`: delete files
|
|
- `file_search`: search for files by glob
|
|
- `file_create_directories`: create directories
|
|
- `file_delete_directories`: delete directories
|
|
- `file_move`: move/rename files or directories
|
|
- `file_replace_contents`: replace file content
|
|
|
|
## 5. Minimal Workflow
|
|
|
|
1. `sandbox_create` -> keep the `sandbox_id`.
|
|
2. `file_write` code or assets into the sandbox.
|
|
3. `command_run` to execute, install dependencies, or start a service.
|
|
4. `sandbox_get_endpoint` if you expose a port.
|
|
5. `sandbox_kill` when finished.
|
|
|
|
## 6. Usage Examples
|
|
|
|
Here are some examples of what you can ask an LLM to do:
|
|
|
|
- "Create a Python sandbox and run a quick health command."
|
|
- "Write a Python script into the sandbox and run it."
|
|
- "Download a GitHub repo, install dependencies, and run its tests."
|
|
- "Generate a CSV file with fake sales data and run a simple summary script."
|
|
- "Start a tiny web server on port 8000 and return the public URL."
|
|
- "Build a minimal REST API (hello + health) and expose it on port 8000."
|
|
- "Create a tar.gz of /app and report the file size."
|
|
- "Build a simple Snake game and return the web endpoint where it can be accessed."
|