Hetzner Cloud MCP

Community-MCP fuer Hetzner Cloud API. Quelle: dkruyt/mcp-hetzner, gelistet in hetznercloud/awesome-hcloud.

Setup

Status (Stand 2026-05-13): Install ✅, Token-Setup ✅, Smoke-Test ✅. Repo geklont nach ~/source/mcps/mcp-hetzner, installiert via uv tool install --force --editable .. Binary: /Users/marvinkuehlmann/.local/bin/mcp-hetzner. MCP-Konfig in ~/.claude.json nutzt op run-Wrapper mit 1Password-Reference fuer den HCLOUD_TOKEN. Smoke-Test via list_locations lieferte 6 erwartete Datacenter (fsn1, nbg1, hel1, ash, hil, sin) — MCP voll funktionsfaehig.

Install-Commands (zur Reproduktion, erledigt 2026-05-13):

cd ~/source/mcps/
git clone https://github.com/dkruyt/mcp-hetzner.git
cd mcp-hetzner
uv tool install --force --editable .

Smoke-Test (ohne Token): mcp-hetzner → erwarteter Output: Error: HCLOUD_TOKEN environment variable not set (= Server probiert Start, fehlt nur Token).

Claude-Code-Registration (~/.claude.json mcpServers-Block):

{
  "mcpServers": {
    "hetzner": {
      "command": "mcp-hetzner",
      "env": { "HCLOUD_TOKEN": "<token-aus-1password>" }
    }
  }
}

Alternativ via 1Password-CLI-Reference (sicherer, kein Klartext-Token im File):

{
  "mcpServers": {
    "hetzner": {
      "command": "op",
      "args": ["run", "--", "mcp-hetzner"],
      "env": { "HCLOUD_TOKEN": "op://Private/Hetzner-<project>/credential" }
    }
  }
}

Tools

27 Tools ueber 5 Domains:

DomainTools
Server-Managementlist_servers, get_server, create_server, delete_server, power_on_server, power_off_server, reboot_server
Volume-Managementlist_volumes, get_volume, create_volume, delete_volume, attach_volume, detach_volume, resize_volume
Firewall-Managementlist_firewalls, get_firewall, create_firewall, update_firewall, delete_firewall, set_firewall_rules, apply_firewall, remove_firewall
SSH-Key-Managementlist_ssh_keys, get_ssh_key, create_ssh_key, update_ssh_key, delete_ssh_key
Info (read-only)list_images, list_server_types, list_locations

Volume-Quirk: resize_volume kann nur vergroessern, nie verkleinern (Hetzner-API-Constraint).

Was NICHT abgedeckt ist

  • Object Storage (S3-API) — kein Hetzner-MCP spricht S3. Fuer Bucket-Anlage + Lifecycle + Object-Lock: aws CLI mit --endpoint-url https://<region>.your-objectstorage.com. Stack-Mirror-konsistent zu Becker (siehe plan D-PLAN-14).
  • Load Balancer, Floating IPs, Primary IPs, Certificates, Placement Groups — bei dkruyt nicht enthalten. Falls spaeter gebraucht: lazyants/hetzner-mcp-server als optionale Erweiterung (104 Tools, breiter, aber weniger Track-Record).
  • DNS — Hetzner hat eigenes DNS-Produkt, AV nutzt aber Cloudflare als DNS-Layer. DNS-MCP separat (Cloudflare-API).
  • Project-Anlage selbst — neue Projects werden via Hetzner-Console angelegt, nicht via API. Pro-Project-API-Token wird in Console generiert.

Tool-Verwendungs-Konventionen

  • Pruef-vor-Schreib: vor create_* / delete_* immer list_* mit Filter — verhindert Duplikate, blast-radius-bounded
  • Project-Context: MCP nutzt das Token aus HCLOUD_TOKEN, daher ist „aktueller Project-Scope” implizit. Bei Multi-Project-Operations brauchen wir Token-Wechsel (siehe mcp-tool-nutzung)
  • Permissions: Token sollte Read+Write sein fuer Marvin-Operations, Read-only-Token fuer Audit-Reads
  • Rate-Limits: Hetzner gibt 3600 req/h pro Token, MCP handhabt das selbst nicht — bei intensiven Operations selber drosseln

Rotation

Token alle 6 Monate rotieren:

  1. Neuen Token in Hetzner-Console generieren
  2. 1Password-Eintrag aktualisieren
  3. ~/.claude.json-MCP-Konfig aktualisieren (oder 1Password-CLI-Reference picks-up auto)
  4. Claude Code neu starten (MCP-Restart)
  5. Alten Token in Hetzner-Console loeschen
  • _index — alle MCPs
  • mcp-hetzner — Code-Repo lokal
  • _index — Hetzner-Capability-Dashboard (Project-Setup, Cost-Alarme, etc.)
  • plan — bauender Plan