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.
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.
No comments yet
Be the first to share your take.