Ephemeral MicroVM-isolated code execution for AI agents. Fresh VM per call, hard-purged after.
MCP server for ScratchRun — ephemeral, MicroVM-isolated code execution for AI agents.
Each call runs in a fresh hardware-isolated MicroVM. The VM is hard-purged after execution. No state, no files, nothing persists between calls.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"scratchrun": {
"command": "npx",
"args": ["-y", "@scratchrun/mcp-server"],
"env": {
"SCRATCHRUN_API_KEY": "sr_live_your_key_here"
}
}
}
}
Get an API key at scratchrun.dev.
scratchrun_execExecutes code in an ephemeral sandbox and returns stdout, stderr, exit code, and any output files.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
runtime | python3.12 | python3.11 | node20 | bash | yes | Runtime to use |
code | string | yes | Code to execute |
timeout_ms | integer | no | Timeout in ms (default 10000, max 30000) |
memory_mb | integer | no | Memory limit in MB (default 256, max 512) |
env | object | no | Environment variables — use for secrets, not code strings |
files | object | no | Files to write before execution (path → content) |
return_files | string[] | no | File paths to capture after execution (returned as base64) |
Example — run Python and return a chart:
{
"runtime": "python3.12",
"code": "import matplotlib.pyplot as plt\nimport numpy as np\nx = np.linspace(0, 10, 100)\nplt.plot(x, np.sin(x))\nplt.savefig('/tmp/plot.png')",
"return_files": ["/tmp/plot.png"]
}
Output files are returned as base64. Image files (PNG, JPG, SVG) are returned as MCP image content blocks and render inline in Claude.
TerminateMicroVM called unconditionally after every run — VM destroyed, never reused169.254.x.x) always blocked at the network layer/tmp is RAM-backed and gone with the VM~400ms median (warm pool). 2–8s cold start if the pool is empty.
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @scratchrun/mcp-serverMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"dev-scratchrun-mcp": {
"command": "npx",
"args": [
"-y",
"@scratchrun/mcp-server"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@scratchrun/mcp-servernpmScratchRun works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.