Contabo MCP
MCP server for the Contabo cloud API — virtual machines, images, snapshots, networking, DNS, object storage, secrets, domains, and tags.
Manage Contabo VPS/VDS instances, images, snapshots, firewalls, private networks, VIPs, DNS, S3-compatible object storage, secrets, domains, and tags from Cursor, Claude Desktop, or any MCP client. Published on npm as @kieksme/contabo-mcp.
Quick start
npx -y @kieksme/contabo-mcp
npm: @kieksme/contabo-mcp · Releases
Set CONTABO_CLIENT_ID, CONTABO_CLIENT_SECRET, CONTABO_API_USER, and CONTABO_API_PASSWORD in your environment or MCP client config. How to get them from the Contabo API details page: see Obtaining API credentials in the package README.
Cursor (.cursor/mcp.json):
{
"mcpServers": {
"contabo": {
"command": "npx",
"args": ["-y", "@kieksme/contabo-mcp"],
"env": {
"CONTABO_CLIENT_ID": "...",
"CONTABO_CLIENT_SECRET": "...",
"CONTABO_API_USER": "...",
"CONTABO_API_PASSWORD": "..."
}
}
}
}
Remote MCP (HTTP)
Besides stdio, the server runs as a remote MCP over Streamable HTTP with Bearer-token auth — the mode used in Docker. Select it via MCP_TRANSPORT=http (default is stdio, fully backward compatible).
Run the published image from GHCR:
docker run --rm -p 3000:3000 \
-e MCP_TRANSPORT=http \
-e MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
-e CONTABO_CLIENT_ID=... -e CONTABO_CLIENT_SECRET=... \
-e CONTABO_API_USER=... -e CONTABO_API_PASSWORD=... \
ghcr.io/kieksme/contabo-mcp:latest
The server listens on http://localhost:3000/; GET /health returns {"status":"ok"} (unauthenticated) for orchestrator probes. The CONTABO_* credentials are still required — the HTTP transport only changes how clients reach the server, not how it authenticates to Contabo.
Connect an MCP client (present the MCP_AUTH_TOKEN as a Bearer token):
{
"mcpServers": {
"contabo-remote": {
"type": "streamable-http",
"url": "https://your-host:3000/",
"headers": { "Authorization": "Bearer <MCP_AUTH_TOKEN>" }
}
}
}
For stdio-only clients, bridge with mcp-remote:
npx -y mcp-remote https://your-host:3000/ --header "Authorization: Bearer <MCP_AUTH_TOKEN>"
Security: the server speaks plain HTTP — terminate TLS at a reverse proxy / ingress and never expose the raw port unencrypted. Beyond localhost, enable MCP_HTTP_DNS_REBINDING_PROTECTION=true with MCP_HTTP_ALLOWED_HOSTS. See Remote HTTP transport (Docker) in the package README for all MCP_* variables, Docker Compose, and scaling notes.
Deploying to Railway instead of Docker? See Deploy on Railway in the package README — the Dockerfile and a committed railway.json already carry the build/healthcheck config, so it's a Root Directory + variables setup away from a running instance (and, once a maintainer publishes it, a one-click marketplace template).
See contabo-mcp/README.md for the full tool list and install options. To develop or release, see CONTRIBUTING.md. Releases on main are proposed by release-please via pull request.
Install as a Claude Code plugin
/plugin marketplace add kieksme/mcp-contabo
/plugin install contabo-mcp@mcp-contabo
Claude Code prompts you for the four Contabo API credentials when you enable the plugin and stores them in the OS credential store rather than in plaintext config files — no manual .mcp.json editing needed.
MCP Market
List this server on MCP Market so others can discover it when searching for Contabo or cloud hosting tools.
- Open Submit an MCP Server.
- Choose MCP Server (not Agent Skill).
- Paste the repository URL:
https://github.com/kieksme/mcp-contabo - Submit and wait for review.
After approval, the listing appears in MCP Market search.
No comments yet
Be the first to share your take.