Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DOCKER_HOSTNoThe Docker daemon socket location. Set explicitly if your Docker socket is not in one of the default probed locations.
SANDBOX_MCP_LOG_LEVELNoLog level for the Sandbox MCP server (for example, 'INFO').
SANDBOX_MCP_SANDBOX_USERNoRuns containers as a non-root user where the toolchain tolerates it.
SANDBOX_MCP_SNAPSHOT_EXCLUDESNoAdditional paths to exclude when snapshotting the project into the sandbox. For example, add '.npmrc' if it contains an auth token.
SANDBOX_MCP_STRICT_ENV_DENYLISTNoSet to 'false' to allow credential-shaped environment variables to be forwarded into the sandbox. Defaults to strict denial.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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 warnings field, which tells you where your request was clamped.

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 test_summary.detected is false, trust the exit code, not the zeros.

Pass command to override detection.

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 finished is true.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
experimentsEvery experiment this server knows about, most recent first.

Latest Blog Posts

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/AbhiteshPundir/sandbox-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server