tiny-agent-sandbox
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tiny-agent-sandboxrun python code to calculate factorial of 5"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Tiny Agent Sandbox
A small, inspectable Docker-backed sandbox that agents can call as an MCP tool.
It runs Python, JavaScript, or shell snippets in a new container with no network, no host mounts, a read-only root filesystem, a non-root user, dropped capabilities, and hard resource/output limits. Results are returned as structured data for an agent to reason about.
This is a learning and local-development project, not a production multi-tenant security boundary. Docker containers share a kernel. ReadSECURITY.md before using untrusted code.
What the agent sees
The MCP server exposes two tools:
sandbox_status()reports Docker readiness and missing runtime images.run_code(language, code, timeout_seconds)returnsstdout,stderr, exit status, timeout and truncation flags, duration, and the runtime image.
The agent cannot choose an image, command, mount, environment variable, network policy, or Docker flag. Those remain operator-controlled policy.
Related MCP server: Sandbox Agent
Quick start
Prerequisites: Docker, Python 3.11+, and uv.
git clone https://github.com/wesleyzhangwq/tiny-agent-sandbox.git
cd tiny-agent-sandbox
docker pull python:3.12-alpine
docker pull node:22-alpine
docker pull alpine:3.22
uv sync --no-editable
uv run --no-editable tas doctor
uv run --no-editable tas run python -c 'print(sum(range(10)))'Start the MCP server over stdio:
uv run --no-editable tiny-agent-sandboxConnect an MCP client
For clients that accept the common mcpServers JSON shape:
{
"mcpServers": {
"tiny-agent-sandbox": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/wesleyzhangwq/tiny-agent-sandbox",
"tiny-agent-sandbox"
]
}
}
}Pull the three runtime images before starting the client. Tool calls use --pull=never, so an agent
cannot cause an image download.
Example tool input:
{
"language": "python",
"code": "import statistics\nprint(statistics.mean([2, 4, 9]))",
"timeout_seconds": 5
}Example structured result:
{
"language": "python",
"image": "python:3.12-alpine",
"exit_code": 0,
"stdout": "5\n",
"stderr": "",
"timed_out": false,
"output_truncated": false,
"duration_ms": 180
}Default policy
Control | Default |
Network | disabled |
Root filesystem | read-only |
Writable storage | 64 MiB ephemeral |
User | UID/GID 65534 |
Linux capabilities | all dropped |
Privilege escalation | disabled |
Memory / swap | 256 MiB / 256 MiB |
CPU | 1 core |
Processes | 64 |
File descriptors | 64 |
Wall time | 5 seconds default, 30 seconds maximum |
Input / combined output | 64 KiB / 128 KiB |
The fixed policy is assembled in
src/tiny_agent_sandbox/runner.py. Timeout and output overflow
remove the named container rather than merely terminating the Docker client.
Development
uv sync --no-editable --extra dev
uv run --no-editable ruff check .
uv run --no-editable pytest -m "not integration"
docker pull python:3.12-alpine node:22-alpine alpine:3.22
uv run --no-editable pytest -m integrationThe preliminary ecosystem notes and design tradeoffs are in
docs/research.md.
Roadmap
Optional gVisor (
runsc) backend with explicit runtime detection.Digest-pinned, operator-configurable runtime images.
Per-session workspaces with strict size and lifetime limits.
Egress proxy with destination allowlists and audit logs.
Concurrency quotas and OpenTelemetry execution traces.
License
Apache-2.0
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides secure execution of arbitrary JavaScript code within a sandboxed QuickJS WASM environment, allowing language models or other MCP clients to safely run JavaScript code snippets without compromising the host system.4
- AlicenseAqualityCmaintenanceEnables code execution in isolated Docker containers with persistent IPython, Node.js, or R kernels, supporting file import/export and cross-session transfers via MCP tools.6MIT
- AlicenseBqualityBmaintenanceDynamic MCP server for Node.js enabling runtime tool creation, management, and execution in isolated sandboxes (Docker or Node).8171MIT
- FlicenseNot gradedqualityBmaintenanceEnables secure execution of Python code, SQL queries, and metric fetching through MCP with ephemeral Docker sandboxing.
Related MCP Connectors
Execute code in 8 languages (Python, JS, TS, Go, Java, C++, C, Bash) in gVisor sandboxes.
Remote MCP server: 10 developer utilities (base64, JWT, DNS, UUID, URL, JSON, UA, IP lookup).
Find and call the right MCP server for any task - pay per use, no install.
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/wesleyzhangwq/tiny-agent-sandbox'
If you have feedback or need assistance with the MCP directory API, please join our Discord server