Search / io.github.inhuman/mcp-exec
Exec Sandbox
L0· runs locallySingle exec tool running caller Python in a network-isolated locked-down sandbox.
v0.5.4 · active · repository · descriptor JSON · versions
Search / io.github.inhuman/mcp-exec
L0· runs locallySingle exec tool running caller Python in a network-isolated locked-down sandbox.
v0.5.4 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"mcp-exec": {
"command": "docker",
"args": [
"--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",
"-e",
"MCP_EXEC_TRANSPORT",
"-e",
"MCP_EXEC_DEFAULT_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_OUTPUT_BYTES",
"-e",
"MCP_EXEC_MAX_STDIN_BYTES",
"-e",
"MCP_EXEC_AUTH_TOKEN",
"docker.io/idconstruct/mcp-exec:v0.5.4"
],
"env": {
"MCP_EXEC_TRANSPORT": "stdio",
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30",
"MCP_EXEC_MAX_TIMEOUT_S": "300",
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576",
"MCP_EXEC_MAX_STDIN_BYTES": "1048576",
"MCP_EXEC_AUTH_TOKEN": "${MCP_EXEC_AUTH_TOKEN}"
}
}
}
}claude mcp add mcp-exec -e "MCP_EXEC_TRANSPORT=stdio" -e "MCP_EXEC_DEFAULT_TIMEOUT_S=30" -e "MCP_EXEC_MAX_TIMEOUT_S=300" -e "MCP_EXEC_MAX_OUTPUT_BYTES=1048576" -e "MCP_EXEC_MAX_STDIN_BYTES=1048576" -e "MCP_EXEC_AUTH_TOKEN=${MCP_EXEC_AUTH_TOKEN}" -- docker --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 -e MCP_EXEC_TRANSPORT -e MCP_EXEC_DEFAULT_TIMEOUT_S -e MCP_EXEC_MAX_TIMEOUT_S -e MCP_EXEC_MAX_OUTPUT_BYTES -e MCP_EXEC_MAX_STDIN_BYTES -e MCP_EXEC_AUTH_TOKEN docker.io/idconstruct/mcp-exec:v0.5.4[mcp_servers.mcp-exec]
command = "docker"
args = ["--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", "-e", "MCP_EXEC_TRANSPORT", "-e", "MCP_EXEC_DEFAULT_TIMEOUT_S", "-e", "MCP_EXEC_MAX_TIMEOUT_S", "-e", "MCP_EXEC_MAX_OUTPUT_BYTES", "-e", "MCP_EXEC_MAX_STDIN_BYTES", "-e", "MCP_EXEC_AUTH_TOKEN", "docker.io/idconstruct/mcp-exec:v0.5.4"]
env = { "MCP_EXEC_TRANSPORT" = "stdio", "MCP_EXEC_DEFAULT_TIMEOUT_S" = "30", "MCP_EXEC_MAX_TIMEOUT_S" = "300", "MCP_EXEC_MAX_OUTPUT_BYTES" = "1048576", "MCP_EXEC_MAX_STDIN_BYTES" = "1048576", "MCP_EXEC_AUTH_TOKEN" = "${MCP_EXEC_AUTH_TOKEN}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-exec": {
"type": "local",
"command": [
"docker",
"--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",
"-e",
"MCP_EXEC_TRANSPORT",
"-e",
"MCP_EXEC_DEFAULT_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_OUTPUT_BYTES",
"-e",
"MCP_EXEC_MAX_STDIN_BYTES",
"-e",
"MCP_EXEC_AUTH_TOKEN",
"docker.io/idconstruct/mcp-exec:v0.5.4"
],
"enabled": true,
"environment": {
"MCP_EXEC_TRANSPORT": "stdio",
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30",
"MCP_EXEC_MAX_TIMEOUT_S": "300",
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576",
"MCP_EXEC_MAX_STDIN_BYTES": "1048576",
"MCP_EXEC_AUTH_TOKEN": "{env:MCP_EXEC_AUTH_TOKEN}"
}
}
}
}{
"mcpServers": {
"mcp-exec": {
"command": "docker",
"args": [
"--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",
"-e",
"MCP_EXEC_TRANSPORT",
"-e",
"MCP_EXEC_DEFAULT_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_OUTPUT_BYTES",
"-e",
"MCP_EXEC_MAX_STDIN_BYTES",
"-e",
"MCP_EXEC_AUTH_TOKEN",
"docker.io/idconstruct/mcp-exec:v0.5.4"
],
"env": {
"MCP_EXEC_TRANSPORT": "stdio",
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30",
"MCP_EXEC_MAX_TIMEOUT_S": "300",
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576",
"MCP_EXEC_MAX_STDIN_BYTES": "1048576",
"MCP_EXEC_AUTH_TOKEN": "${MCP_EXEC_AUTH_TOKEN}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mcp-exec&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyItLW5ldHdvcmsiLCJub25lIiwiLS1yZWFkLW9ubHkiLCItLWNhcC1kcm9wIiwiQUxMIiwiLS1zZWN1cml0eS1vcHQiLCJuby1uZXctcHJpdmlsZWdlcyIsIi0tdXNlciIsIjY1NTMyOjY1NTMyIiwiLS10bXBmcyIsIi90bXA6cncsbm9leGVjLG5vc3VpZCxzaXplPTY0bSIsIi0tbWVtb3J5IiwiMjU2bSIsIi0tcGlkcy1saW1pdCIsIjEyOCIsIi0tY3B1cyIsIjEiLCItZSIsIk1DUF9FWEVDX1RSQU5TUE9SVCIsIi1lIiwiTUNQX0VYRUNfREVGQVVMVF9USU1FT1VUX1MiLCItZSIsIk1DUF9FWEVDX01BWF9USU1FT1VUX1MiLCItZSIsIk1DUF9FWEVDX01BWF9PVVRQVVRfQllURVMiLCItZSIsIk1DUF9FWEVDX01BWF9TVERJTl9CWVRFUyIsIi1lIiwiTUNQX0VYRUNfQVVUSF9UT0tFTiIsImRvY2tlci5pby9pZGNvbnN0cnVjdC9tY3AtZXhlYzp2MC41LjQiXSwiZW52Ijp7Ik1DUF9FWEVDX1RSQU5TUE9SVCI6InN0ZGlvIiwiTUNQX0VYRUNfREVGQVVMVF9USU1FT1VUX1MiOiIzMCIsIk1DUF9FWEVDX01BWF9USU1FT1VUX1MiOiIzMDAiLCJNQ1BfRVhFQ19NQVhfT1VUUFVUX0JZVEVTIjoiMTA0ODU3NiIsIk1DUF9FWEVDX01BWF9TVERJTl9CWVRFUyI6IjEwNDg1NzYiLCJNQ1BfRVhFQ19BVVRIX1RPS0VOIjoiJHtNQ1BfRVhFQ19BVVRIX1RPS0VOfSJ9fQ%3D%3D"
}{
"servers": {
"mcp-exec": {
"type": "stdio",
"command": "docker",
"args": [
"--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",
"-e",
"MCP_EXEC_TRANSPORT",
"-e",
"MCP_EXEC_DEFAULT_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_OUTPUT_BYTES",
"-e",
"MCP_EXEC_MAX_STDIN_BYTES",
"-e",
"MCP_EXEC_AUTH_TOKEN",
"docker.io/idconstruct/mcp-exec:v0.5.4"
],
"env": {
"MCP_EXEC_TRANSPORT": "stdio",
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30",
"MCP_EXEC_MAX_TIMEOUT_S": "300",
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576",
"MCP_EXEC_MAX_STDIN_BYTES": "1048576",
"MCP_EXEC_AUTH_TOKEN": "${MCP_EXEC_AUTH_TOKEN}"
}
}
}
}{
"mcpServers": {
"mcp-exec": {
"command": "docker",
"args": [
"--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",
"-e",
"MCP_EXEC_TRANSPORT",
"-e",
"MCP_EXEC_DEFAULT_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_TIMEOUT_S",
"-e",
"MCP_EXEC_MAX_OUTPUT_BYTES",
"-e",
"MCP_EXEC_MAX_STDIN_BYTES",
"-e",
"MCP_EXEC_AUTH_TOKEN",
"docker.io/idconstruct/mcp-exec:v0.5.4"
],
"env": {
"MCP_EXEC_TRANSPORT": "stdio",
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30",
"MCP_EXEC_MAX_TIMEOUT_S": "300",
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576",
"MCP_EXEC_MAX_STDIN_BYTES": "1048576",
"MCP_EXEC_AUTH_TOKEN": "${MCP_EXEC_AUTH_TOKEN}"
}
}
}
}extensions:
"mcp-exec":
enabled: true
name: "mcp-exec"
type: stdio
cmd: "docker"
args:
- "--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"
- "-e"
- "MCP_EXEC_TRANSPORT"
- "-e"
- "MCP_EXEC_DEFAULT_TIMEOUT_S"
- "-e"
- "MCP_EXEC_MAX_TIMEOUT_S"
- "-e"
- "MCP_EXEC_MAX_OUTPUT_BYTES"
- "-e"
- "MCP_EXEC_MAX_STDIN_BYTES"
- "-e"
- "MCP_EXEC_AUTH_TOKEN"
- "docker.io/idconstruct/mcp-exec:v0.5.4"
envs:
"MCP_EXEC_TRANSPORT": "stdio"
"MCP_EXEC_DEFAULT_TIMEOUT_S": "30"
"MCP_EXEC_MAX_TIMEOUT_S": "300"
"MCP_EXEC_MAX_OUTPUT_BYTES": "1048576"
"MCP_EXEC_MAX_STDIN_BYTES": "1048576"
"MCP_EXEC_AUTH_TOKEN": "${MCP_EXEC_AUTH_TOKEN}"
timeout: 300
Placeholders to fill from your own secret store: ${MCP_EXEC_AUTH_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured ~updated-91d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
docker.io/idconstruct/mcp-exec:v0.5.4 | oci | unpinned | docker | MCP_EXEC_AUTH_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.inhuman/mcp-exec",
"title": "Exec Sandbox",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "0.5.4",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "docker.io/idconstruct/mcp-exec:v0.5.4",
"runtimeHint": "docker",
"registryType": "oci",
"runtimeArguments": [
{
"name": "--network",
"type": "named",
"value": "none",
"description": "No network for the sandbox (stdio posture)."
},
{
"name": "--read-only",
"type": "named",
"description": "Read-only root filesystem."
},
{
"name": "--cap-drop",
"type": "named",
"value": "ALL",
"description": "Drop all Linux capabilities."
},
{
"name": "--security-opt",
"type": "named",
"value": "no-new-privileges",
"description": "Block privilege escalation."
},
{
"name": "--user",
"type": "named",
"value": "65532:65532",
"description": "Run as the non-root sandbox user."
},
{
"name": "--tmpfs",
"type": "named",
"value": "/tmp:rw,noexec,nosuid,size=64m",
"description": "Writable ephemeral workspace (rootfs is read-only)."
},
{
"name": "--memory",
"type": "named",
"value": "256m",
"description": "Memory limit."
},
{
"name": "--pids-limit",
"type": "named",
"value": "128",
"description": "PID limit."
},
{
"name": "--cpus",
"type": "named",
"value": "1",
"description": "CPU limit."
}
],
"environmentVariables": [
{
"name": "MCP_EXEC_TRANSPORT",
"default": "stdio",
"description": "MCP transport. Must be 'stdio' for direct docker/stdio use."
},
{
"name": "MCP_EXEC_DEFAULT_TIMEOUT_S",
"default": "30",
"description": "Default wall-clock timeout per exec, seconds."
},
{
"name": "MCP_EXEC_MAX_TIMEOUT_S",
"default": "300",
"description": "Maximum wall-clock timeout a caller may request, seconds."
},
{
"name": "MCP_EXEC_MAX_OUTPUT_BYTES",
"default": "1048576",
"description": "Cap on combined stdout/stderr before truncation."
},
{
"name": "MCP_EXEC_MAX_STDIN_BYTES",
"default": "1048576",
"description": "Cap on stdin passed to the sandboxed code."
},
{
"name": "MCP_EXEC_AUTH_TOKEN",
"isSecret": true,
"description": "Optional X-MCP-AUTH token (http/sse transports only)."
}
]
}
],
"repository": {
"url": "https://github.com/inhuman/mcp-exec",
"source": "github"
},
"description": "Single exec tool running caller Python in a network-isolated locked-down sandbox."
}