Teleport Docker MCP — read-only, P2P, zero cloud
Docker's official MCP server controls the Docker daemon on the host machine. Sharing it raw would let a foreign LLM start or stop anything you run. Teleport the observability tools only — container logs and image listings — and keep lifecycle control local. This guide maps all 8 tools of
docker/mcp-server-docker by blast radius, then gives you the exact
command to share it with a remote teammate's AI agent — capability without credentials.
npx -y mcpwire share --allow "list_containers,list_images,inspect_container" --redact-secrets --ttl 30m -- docker run -i --rm docker/mcp-server-docker
Only the 3 read-only tools are exposed; the other 5 are invisible to the peer
(filtered from tools/list and blocked if forced). Tunnel dies in 30 minutes. Add
--confirm to approve every call, or --max-calls 20 for a hard budget.
{
"mcpServers": {
"teleported-docker": {
"command": "npx",
"args": [
"-y",
"mcpwire",
"join",
"wire://<TICKET_FROM_HOST_BANNER>"
]
}
}
} | tool | risk | notes |
|---|---|---|
list_containers | SAFE | Running container index. |
list_images | SAFE | Image index. |
get_container_logs | CAUTION | Logs may embed secrets — pair with --redact-secrets. |
inspect_container | SAFE | Container details. |
run_container | HIGH RISK | Starts arbitrary images on your daemon. |
stop_container | HIGH RISK | Kills workloads. |
remove_container | HIGH RISK | Deletes containers. |
prune_images | HIGH RISK | Destructive cleanup. |
🔒 Why not just share your token?
Docker's credential would grant the full toolset to a foreign LLM — including run_container and stop_container. With mcpwire the credential stays in your env; the peer only ever holds an expiring wire:// capability scoped to 3 tools.
🎥 Audit everything
Add --record session.wirelog and every call, block and redaction is logged locally. Drag the file into mcpwire.co/replay for a DevTools-style waterfall of what the remote agent actually did.
🔁 Works with every MCP client
Claude Desktop, Cursor, Windsurf, Cline — anything speaking MCP over stdio. Your peer pastes the snippet above; you keep the kill-switch (Ctrl+C) in your terminal.
What happens if the peer's agent tries to call a blocked Docker tool?
The request never reaches your MCP server. mcpwire answers with a JSON-RPC error (-32601 [MCPWire Firewall]) and logs the attempt — the tool doesn't exist from the agent's point of view, so well-behaved agents won't even try.
Can I expose the caution-level tools too?
Yes — just add them to --allow or run with --confirm so each call waits for your y/n in the host terminal. The risk map above tells you exactly what you'd be signing up for.
Is the traffic really serverless?
Yes. Discovery goes through the public Hyperswarm DHT; the data path is a direct Noise-encrypted socket between the two machines (UDP hole punching). If both NATs are stubborn, Hyperswarm routes through community relays — which only see ciphertext.
← all teleport guides ⚡ open the policy builder
Need persistent wire://your-company/db namespaces, SSO / GitHub identity
verification before the P2P handshake, and centralized audit logs for compliance (SOC2 / ISO)?