Skip to content

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:

json
{
  "mcpServers": {
    "dockpod": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer dp_mcp_xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

Claude Code takes it on the command line:

bash
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.

  1. 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.
  2. http://<panel-domain>:8090/mcp — the direct listener, reached at the panel's own hostname. Plain HTTP: the Bearer key travels unencrypted.
  3. 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:

json
{
  "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.

Released under a commercial-friendly freemium license.