PluginBench
MCP Server
Maintained
MIT

Exec Sandbox MCP Server

io.github.inhuman/mcp-exec

What is the Exec Sandbox MCP server?

Single exec tool running caller Python in a network-isolated locked-down sandbox.

How to install Exec Sandbox

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • MCP_EXEC_TRANSPORT

    MCP transport. Must be 'stdio' for direct docker/stdio use.

  • MCP_EXEC_DEFAULT_TIMEOUT_S

    Default wall-clock timeout per exec, seconds.

  • MCP_EXEC_MAX_TIMEOUT_S

    Maximum wall-clock timeout a caller may request, seconds.

  • MCP_EXEC_MAX_OUTPUT_BYTES

    Cap on combined stdout/stderr before truncation.

  • MCP_EXEC_MAX_STDIN_BYTES

    Cap on stdin passed to the sandboxed code.

  • MCP_EXEC_AUTH_TOKEN
    secret

    Optional X-MCP-AUTH token (http/sse transports only).

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-exec": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "docker.io/idconstruct/mcp-exec:v0.5.4",
        "--network",
        "none",
        "--read-only",
        "--cap-drop",
        "ALL",
        "--security-opt",
        "no-new-privileges",
        "--user",
        "65532:65532",
        "--tmpfs",
        "/tmp:rw,noexec,nosuid,size=64m",
        "--memory",
        "256m",
        "--pids-limit",
        "128",
        "--cpus",
        "1"
      ],
      "env": {
        "MCP_EXEC_TRANSPORT": "<YOUR_MCP_EXEC_TRANSPORT>",
        "MCP_EXEC_DEFAULT_TIMEOUT_S": "<YOUR_MCP_EXEC_DEFAULT_TIMEOUT_S>",
        "MCP_EXEC_MAX_TIMEOUT_S": "<YOUR_MCP_EXEC_MAX_TIMEOUT_S>",
        "MCP_EXEC_MAX_OUTPUT_BYTES": "<YOUR_MCP_EXEC_MAX_OUTPUT_BYTES>",
        "MCP_EXEC_MAX_STDIN_BYTES": "<YOUR_MCP_EXEC_MAX_STDIN_BYTES>",
        "MCP_EXEC_AUTH_TOKEN": "<YOUR_MCP_EXEC_AUTH_TOKEN>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "mcp-exec": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "docker.io/idconstruct/mcp-exec:v0.5.4",
        "--network",
        "none",
        "--read-only",
        "--cap-drop",
        "ALL",
        "--security-opt",
        "no-new-privileges",
        "--user",
        "65532:65532",
        "--tmpfs",
        "/tmp:rw,noexec,nosuid,size=64m",
        "--memory",
        "256m",
        "--pids-limit",
        "128",
        "--cpus",
        "1"
      ],
      "env": {
        "MCP_EXEC_TRANSPORT": "<YOUR_MCP_EXEC_TRANSPORT>",
        "MCP_EXEC_DEFAULT_TIMEOUT_S": "<YOUR_MCP_EXEC_DEFAULT_TIMEOUT_S>",
        "MCP_EXEC_MAX_TIMEOUT_S": "<YOUR_MCP_EXEC_MAX_TIMEOUT_S>",
        "MCP_EXEC_MAX_OUTPUT_BYTES": "<YOUR_MCP_EXEC_MAX_OUTPUT_BYTES>",
        "MCP_EXEC_MAX_STDIN_BYTES": "<YOUR_MCP_EXEC_MAX_STDIN_BYTES>",
        "MCP_EXEC_AUTH_TOKEN": "<YOUR_MCP_EXEC_AUTH_TOKEN>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-exec": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "docker.io/idconstruct/mcp-exec:v0.5.4",
        "--network",
        "none",
        "--read-only",
        "--cap-drop",
        "ALL",
        "--security-opt",
        "no-new-privileges",
        "--user",
        "65532:65532",
        "--tmpfs",
        "/tmp:rw,noexec,nosuid,size=64m",
        "--memory",
        "256m",
        "--pids-limit",
        "128",
        "--cpus",
        "1"
      ],
      "env": {
        "MCP_EXEC_TRANSPORT": "<YOUR_MCP_EXEC_TRANSPORT>",
        "MCP_EXEC_DEFAULT_TIMEOUT_S": "<YOUR_MCP_EXEC_DEFAULT_TIMEOUT_S>",
        "MCP_EXEC_MAX_TIMEOUT_S": "<YOUR_MCP_EXEC_MAX_TIMEOUT_S>",
        "MCP_EXEC_MAX_OUTPUT_BYTES": "<YOUR_MCP_EXEC_MAX_OUTPUT_BYTES>",
        "MCP_EXEC_MAX_STDIN_BYTES": "<YOUR_MCP_EXEC_MAX_STDIN_BYTES>",
        "MCP_EXEC_AUTH_TOKEN": "<YOUR_MCP_EXEC_AUTH_TOKEN>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "mcp-exec": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "docker.io/idconstruct/mcp-exec:v0.5.4",
        "--network",
        "none",
        "--read-only",
        "--cap-drop",
        "ALL",
        "--security-opt",
        "no-new-privileges",
        "--user",
        "65532:65532",
        "--tmpfs",
        "/tmp:rw,noexec,nosuid,size=64m",
        "--memory",
        "256m",
        "--pids-limit",
        "128",
        "--cpus",
        "1"
      ],
      "env": {
        "MCP_EXEC_TRANSPORT": "<YOUR_MCP_EXEC_TRANSPORT>",
        "MCP_EXEC_DEFAULT_TIMEOUT_S": "<YOUR_MCP_EXEC_DEFAULT_TIMEOUT_S>",
        "MCP_EXEC_MAX_TIMEOUT_S": "<YOUR_MCP_EXEC_MAX_TIMEOUT_S>",
        "MCP_EXEC_MAX_OUTPUT_BYTES": "<YOUR_MCP_EXEC_MAX_OUTPUT_BYTES>",
        "MCP_EXEC_MAX_STDIN_BYTES": "<YOUR_MCP_EXEC_MAX_STDIN_BYTES>",
        "MCP_EXEC_AUTH_TOKEN": "<YOUR_MCP_EXEC_AUTH_TOKEN>"
      }
    }
  }
}
Claude Code
claude mcp add mcp-exec --env MCP_EXEC_TRANSPORT=<YOUR_MCP_EXEC_TRANSPORT> --env MCP_EXEC_DEFAULT_TIMEOUT_S=<YOUR_MCP_EXEC_DEFAULT_TIMEOUT_S> --env MCP_EXEC_MAX_TIMEOUT_S=<YOUR_MCP_EXEC_MAX_TIMEOUT_S> --env MCP_EXEC_MAX_OUTPUT_BYTES=<YOUR_MCP_EXEC_MAX_OUTPUT_BYTES> --env MCP_EXEC_MAX_STDIN_BYTES=<YOUR_MCP_EXEC_MAX_STDIN_BYTES> --env MCP_EXEC_AUTH_TOKEN=<YOUR_MCP_EXEC_AUTH_TOKEN> -- docker run -i --rm docker.io/idconstruct/mcp-exec:v0.5.4 --network none --read-only --cap-drop ALL --security-opt no-new-privileges --user 65532:65532 --tmpfs /tmp:rw,noexec,nosuid,size=64m --memory 256m --pids-limit 128 --cpus 1

Related MCP servers

Runs a command in a throwaway Kubernetes pod and returns exit code, output and artifacts.

0
Go
MIT
View repository →

SSH Fleet

Maintained

Curated ssh_probe diagnostics and single-host ssh_exec over an allowlisted SSH fleet.

0
Go
MIT
View repository →