mcp-contabo
Health Warn
- License — License: GPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
MCP server for Contabo: manage VPS/VDS, snapshots, object storage, secrets & domains via Cursor, Claude & other MCP clients.
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>" }
}
}
}
ChatGPT, Codex, and GitHub Copilot
ChatGPT needs the public HTTPS endpoint as a custom MCP app/connector and the bearer token during setup; it cannot reach localhost.
Codex:
codex mcp add contabo --url https://<your-host>/ \
--bearer-token-env-var CONTABO_MCP_AUTH_TOKEN
For GitHub Copilot, use .vscode/mcp.json for local VS Code and .github/mcp.json for Copilot Cloud Agent/Copilot CLI. Configure COPILOT_MCP_CONTABO_URL and COPILOT_MCP_CONTABO_TOKEN as Copilot secrets or variables.
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.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found