MCP Setup
DockPod runs a Model Context Protocol server so Claude, Cursor, or any other MCP-compatible AI client can inspect and manage your containers directly from a conversation.
Why a Separate Port
The MCP server listens on its own port (--mcp-addr, default :8090), separate from the main web UI/API port. This isn't incidental — MCP transports stream chunks over a connection that stays open, and Fiber's fasthttp-based Flush() is a no-op under the hood, which silently buffers everything until the handler returns. Running MCP on a dedicated net/http.Server avoids that entirely.
1. Generate an API Key
Go to Settings → API Keys → Generate key and give it a name (e.g. "Claude Desktop"). The key is shown only once, in the form dp_mcp_xxxxxxxxxxxxxxxxxxxx.
The same dialog shows the server URL and a complete config block with the URL and key already filled in, both one click to copy. That is the shortest path — everything below is the same information, for when you want to understand or automate it.
2. Connect Your Client
DockPod serves MCP over Streamable HTTP at /mcp. Most clients accept that as a plain URL, with the key as a Bearer token:
{
"mcpServers": {
"dockpod": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"headers": { "Authorization": "Bearer dp_mcp_xxxxxxxxxxxxxxxxxxxx" }
}
}
}Claude Code takes it on the command line:
claude mcp add --transport http DockPod https://mcp.example.com/mcp \
-H "Authorization: Bearer dp_mcp_xxxxxxxxxxxxxxxxxxxx"Which address to use
There are three, and the panel picks between them in this order. It matters because only the first is encrypted.
https://<mcp-domain>/mcp— when an MCP Domain is configured under Settings → General → Domain. TLS terminates at the shared proxy on the standard port 443. This is the one to use for anything crossing a network you don't control.http://<panel-domain>:8090/mcp— the direct listener, reached at the panel's own hostname. Plain HTTP: the Bearer key travels unencrypted.http://<server-ip>:8090/mcp— the same listener by address, for when no domain is set up at all.
Changing --mcp-addr changes that port and the internal target the HTTPS route forwards to.
Older clients
The SSE endpoint is deprecated
/sse is still served so existing configurations keep working, but it is no longer the endpoint to set up against. Streamable HTTP replaced it, and a client pointed at /sse cannot be given a plain URL — which is the whole reason connecting used to be awkward.
Some clients accept only stdio servers (command/args/env) in their config — older Claude Desktop builds among them. Bridge those with mcp-remote, pointing it at the Streamable HTTP endpoint:
{
"mcpServers": {
"DockPod": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.example.com/mcp", "--header", "Authorization:${AUTH_HEADER}"],
"env": { "AUTH_HEADER": "Bearer dp_mcp_xxxxxxxxxxxxxxxxxxxx" }
}
}
}Fully quit and reopen the client after editing its config.
3. Try It
In your AI client's conversation:
"List all my running containers" "Show logs for nginx" "Deploy my-app"
See Available Tools for the full list and which tier each requires.