Sandbox MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DOCKER_HOST | No | The Docker daemon socket path. Overrides automatic detection of default socket locations. | |
| SANDBOX_MCP_LOG_LEVEL | No | Log level for the server (e.g. INFO, DEBUG, WARNING). | |
| SANDBOX_MCP_SANDBOX_USER | No | Username or UID to run containers as a non-root user where supported. | |
| SANDBOX_MCP_SNAPSHOT_EXCLUDES | No | Additional comma-separated paths to exclude from the project snapshot. | |
| SANDBOX_MCP_STRICT_ENV_DENYLIST | No | Set to 'false' to allow credential-shaped environment variables into the sandbox. | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_experimentA | Create a disposable, isolated environment and copy a project into it. USE THIS when you are about to do something you should not do on the developer's machine: install dependencies, run a build or a migration, try an upgrade, run unfamiliar code, or explore a fix you are not sure about. Reach for it before the risky step, not after. The project is SNAPSHOT-COPIED into the sandbox. Files you change inside never propagate back; the developer's working tree is untouched by construction. Secrets (.env files, keys, credential directories) are withheld from the copy, as are node_modules and other build output. RETURNS an experiment_id plus the isolation actually applied -- read the SAFETY: network is disabled unless you ask for it; no host environment variable is passed unless you name it, and credential-shaped names are refused even then; CPU, memory, PIDs and wall-clock are capped. |
| destroy_experimentA | Destroy a sandbox and everything in it, returning a final report. USE THIS as soon as an experiment has told you what you needed. Always call it -- a sandbox left running keeps consuming the developer's CPU and memory. IDEMPOTENT: calling it on an already-destroyed experiment is safe and returns the stored report rather than an error. RETURNS the final report, including what changed inside the sandbox, so you can summarise the experiment after it is gone. |
| execute_experimentA | Run a shell command inside a sandbox. USE THIS for anything you would otherwise run in the developer's terminal: installs, builds, scripts, migrations, one-off exploration. The command runs in the container, never on the host. RETURNS exit code, stdout, stderr and duration. A non-zero exit is a normal result, not an error -- read it and decide what to try next. Set background=true for something long-running, then poll get_job_status and fetch get_job_result when it finishes. Otherwise this waits, bounded by the timeout, so it cannot hang your session. |
| run_testsA | Run the project's test suite inside a sandbox and parse the results. USE THIS instead of execute_experiment when you want to know whether the project still works -- it detects the runner (npm, pytest, cargo, go, make) by looking at what is actually in the sandbox, and parses counts out of the output. RETURNS exit code, stdout/stderr, duration and, when parseable, a summary with passed/failed/total and the names of failing tests. If Pass |
| read_sandbox_fileA | Read a file from inside the sandbox as text. USE THIS to investigate a failure -- read the source, the config, a log -- without guessing from stack traces. Paths are workspace-relative and cannot escape it; this tool cannot read the developer's machine. |
| write_sandbox_fileA | Write a file inside the sandbox, creating parent directories as needed. USE THIS to apply a candidate fix. Prefer it over shell heredocs: no quoting to get wrong. SAFETY: writes land in the sandbox copy only. There is no tool here that writes to the developer's project -- if a change is worth keeping, show them the diff from inspect_changes and let them apply it. |
| inspect_changesA | Show what the experiment changed, against the project as it was copied in. USE THIS before destroying a sandbox, and before telling the developer what you found. It is the evidence for your conclusion. RETURNS created / modified / deleted file lists plus insertion and deletion counts, and optionally the unified diff. Build output and dependency directories are excluded, so a 30,000-file node_modules will not bury the two lines that matter. |
| collect_artifactsA | Copy selected files out of a sandbox before it is destroyed. USE THIS for build output, test reports, coverage, benchmark results or logs you want to keep or quote. Patterns are workspace-relative shell globs ('dist/*.js'), or '/name' for a recursive search ('/junit.xml'). Files land in the server's own state directory; this tool cannot write anywhere on the developer's machine. |
| get_experimentA | Fetch an experiment's full state and a summary of what happened in it. USE THIS to re-orient -- after a long gap, or to check whether a sandbox is still alive before sending more commands. RETURNS status, base image, isolation settings, resource limits, how many commands ran and how many failed, the last test summary, change statistics and artifact count. |
| list_experimentsA | List experiments, most recent first. USE THIS to find a sandbox you created earlier, or to check for ones you forgot to destroy before creating another. |
| get_job_statusA | Check on a command started with background=true. RETURNS status and elapsed milliseconds. Poll this, then call get_job_result once |
| get_job_resultA | Fetch the completed result of a background command. RETURNS the same shape as execute_experiment: exit code, stdout, stderr, duration. If the job is still running this waits for it, bounded by the job's own timeout. |
| cancel_jobA | Stop a running command and kill its process inside the sandbox. USE THIS when a command is clearly stuck or no longer needed. Safe on a job that already finished -- it returns the final state untouched. |
| compare_experimentsA | Compare two or more experiments side by side. USE THIS when you tried several approaches -- three candidate fixes, two runtime versions, a couple of dependency upgrades -- and have to recommend one. Run each approach in its own experiment, then compare. RETURNS per-experiment test results, failing test names, exit codes, change size, duration and artifact counts, plus a recommendation when the evidence supports one. Destroyed experiments are still comparable: their findings were recorded before teardown. |
| check_sandbox_runtimeA | Confirm the sandbox runtime is available and report the active defaults. USE THIS first if create_experiment fails, to tell a stopped Docker daemon apart from a rejected request. Returns the Docker version the server is talking to and the isolation defaults every experiment starts from. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| experiments | Every experiment this server knows about, most recent first. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/riyasaxena32/sandbox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server