GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Beschreibung vom Entwickler (englisches Original)
Manage DNS zones and records (zonefiles, RRSets, TTL, protection) via the Hetzner Cloud API
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
HETZNER_API_TOKEN, HETZNER_READ_ONLY, HETZNER_ALLOW_TOOLS, HETZNER_DENY_TOOLS, HETZNER_API_BASE_URLAls geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"hetzner-dns": {
"command": "npx",
"args": [
"-y",
"hetzner-dns-mcp"
],
"env": {
"HETZNER_API_TOKEN": "your-value",
"HETZNER_READ_ONLY": "your-value",
"HETZNER_ALLOW_TOOLS": "your-value",
"HETZNER_DENY_TOOLS": "your-value",
"HETZNER_API_BASE_URL": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add hetzner-dns --env HETZNER_API_TOKEN=your-value --env HETZNER_READ_ONLY=your-value --env HETZNER_ALLOW_TOOLS=your-value --env HETZNER_DENY_TOOLS=your-value --env HETZNER_API_BASE_URL=your-value -- npx -y hetzner-dns-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"hetzner-dns": {
"command": "npx",
"args": [
"-y",
"hetzner-dns-mcp"
],
"env": {
"HETZNER_API_TOKEN": "your-value",
"HETZNER_READ_ONLY": "your-value",
"HETZNER_ALLOW_TOOLS": "your-value",
"HETZNER_DENY_TOOLS": "your-value",
"HETZNER_API_BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"hetzner-dns": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"hetzner-dns-mcp"
],
"env": {
"HETZNER_API_TOKEN": "your-value",
"HETZNER_READ_ONLY": "your-value",
"HETZNER_ALLOW_TOOLS": "your-value",
"HETZNER_DENY_TOOLS": "your-value",
"HETZNER_API_BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
HETZNER_READ_ONLY envHETZNER_ALLOW_TOOLS envHETZNER_DENY_TOOLS envHETZNER_API_BASE_URL envDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 8. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto ni-c bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: HETZNER_API_TOKEN
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.6.0) kam vor 2 Monaten in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js, Docker auf deinem Computer.
In derselben Kategorie: GitHub, Desktop Commander, Cloudflare MCP
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
A Model Context Protocol (MCP) server for managing DNS zones and records via the Hetzner Cloud API.
Lets MCP clients like Claude Code, Claude Desktop or Codex manage your Hetzner DNS: list, create, update and delete zones and RRSets (record sets), import/export zone files, manage protection and TTLs, and track asynchronous zone actions.
Twenty-two tools is the ceiling, not the floor: HETZNER_ALLOW_TOOLS=essential registers a curated eight instead, and a model picks the right tool far more reliably from eight than from twenty-two — see choosing which tools load.
Note: This server targets the current DNS API that is part of the Hetzner Cloud API (
api.hetzner.cloud). The legacy DNS API (dns.hetzner.com) was shut down in May 2026 and is not supported.
Zones, record sets and the actions behind them. Listing, creating, updating and deleting zones and RRSets, importing and exporting BIND zone files, changing TTLs and protection — and following the asynchronous zone actions Hetzner queues behind a change, rather than reporting success and leaving you to guess.
Nothing upstream is trusted. Record values, comments and zone files come back wrapped as untrusted data, secret-looking keys are redacted, oversized values are truncated and HTML error pages are dropped instead of pasted into the context.
Destructive calls ask a person. Deleting a zone or replacing a record set raises a real dialog through MCP elicitation. Where the client cannot show one, the call is refused and carries a random single-use token that only ever appeared in a previous tool result — so nothing hidden inside a DNS record can mint it.
Configuration is provided via environment variables:
| Variable | Required | Description |
|---|---|---|
HETZNER_API_TOKEN | yes | Hetzner Cloud API token (project-scoped) |
HETZNER_READ_ONLY | no | true registers only the read tools; the write tools do not exist at all |
HETZNER_ALLOW_TOOLS | no | Comma-separated tool names, list_* prefixes, or essential for a curated preset |
HETZNER_DENY_TOOLS | no | Same syntax; removed from whatever HETZNER_ALLOW_TOOLS left |
ELICITATION | no | false replaces the approval dialog with the two-call token. Not prefixed |
HETZNER_API_BASE_URL | no | Base URL of the API (default: https://api.hetzner.cloud/v1) |
Without a token the server still starts and lists its tools (so registries and inspectors can introspect it), but every tool call fails with setup instructions instead of reaching the API.
HETZNER_API_TOKEN and HETZNER_API_BASE_URL are deleted from the process environment once they have been read, so a later crash report or diagnostic dump cannot expose the token.
HETZNER_ALLOW_TOOLS and HETZNER_DENY_TOOLS take comma-separated tool names; a trailing * matches a whole family. essential is a curated preset — list_zones, get_zone, list_rrsets, get_rrset, create_rrset, set_records, delete_rrset and export_zonefile — which covers reading a zone and changing a record without the rare, catastrophic tools.
HETZNER_ALLOW_TOOLS=essential
HETZNER_ALLOW_TOOLS=list_*,get_zone,set_records HETZNER_DENY_TOOLS=delete_zone,import_zonefile
An entry that matches no tool aborts startup and names it, so a typo cannot silently hide a tool — an absent tool is not something anyone traces back to an environment variable. A filtered tool is never registered, so it is absent from tools/list and unknown to tools/call alike, exactly like a write tool under HETZNER_READ_ONLY.
If you run several of these servers at once, mcp-hub is the other answer — its /hub endpoint replaces every server's tools with six meta-tools.
claude mcp add hetzner-dns -s user \
-e HETZNER_API_TOKEN=your-token \ -- npx -y hetzner-dns-mcp
Add to your claude_desktop_config.json:
{
"mcpServers": { "hetzner-dns": { "command": "npx", "args": ["-y", "hetzner-dns-mcp"], "env": { "HETZNER_API_TOKEN": "your-token" } } } }
Add to your ~/.codex/config.toml:
[mcp_servers.hetzner-dns]
command = "npx" args = ["-y", "hetzner-dns-mcp"] env = { HETZNER_API_TOKEN = "your-token" }
git clone https://github.com/ni-c/hetzner-dns-mcp.git
cd hetzner-dns-mcp npm install npm run build
node /path/to/hetzner-dns-mcp/dist/index.js as the command
Multi-arch images (amd64/arm64) are published to GHCR with an SBOM and build provenance:
docker run -i --rm -e HETZNER_API_TOKEN=your-token ghcr.io/ni-c/hetzner-dns-mcp
The image talks MCP over stdio, so clients need docker run -i (no port is exposed):
{
"mcpServers": { "hetzner-dns": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "HETZNER_API_TOKEN", "ghcr.io/ni-c/hetzner-dns-mcp" ], "env": { "HETZNER_API_TOKEN": "your-token" } } } }
A client that cannot spawn a local process — ChatGPT connectors, Claude on the web, Cursor, LibreChat — reaches hetzner-dns-mcp through mcp-hub: one container serves many stdio MCP servers over Streamable HTTP, with an OAuth 2.1 login behind a single password and long-lived tokens for the clients that cannot do OAuth. Its /hub endpoint puts every server behind six meta-tools, so one connector reaches all of them without N×tool schemas in the model's context, and it speaks both protocol revisions — a question this server asks travels through it to the person at the far end.
Its /config/mcp.json uses Claude Code's format, so the entry is the one you already have:
{
"mcpServers": { "hetzner-dns": { "command": "npx", "args": ["-y", "hetzner-dns-mcp"], "env": { "HETZNER_API_TOKEN": "your-token", "HETZNER_ALLOW_TOOLS": "essential" }, "denyTools": ["delete_*"] } } }
allowTools and denyTools there are the hub's own per-server filter, which is not the same thing as *_ALLOW_TOOLS in env — the difference, and the mistake it invites, are in the client guide.
Every tool declares an outputSchema and answers with structuredContent alongside the text block, so a client can use the result without parsing prose. The fence stays in the text — it is the readable presentation of the same marker — and the structured half carries untrusted: true and source: "hetzner-cloud-api" as fields. Every tool carries them: record values, comments, labels and zone files are written by whoever controls the zone, and no tool here answers with anything else.
The API documents are described as open objects with the top-level keys the spec guarantees. The API is not this server's to promise, and the SDK validates each result against its schema before it goes out — a strict shape would turn a field Hetzner adds into a tool that fails outright.
An over-budget result is now an error. It used to be cut off mid-document and say so, which is fine for a text block and impossible for structuredContent: the two channels have to carry the same value, and a document sliced mid-string does not parse.
| Tool | Description |
|---|---|
list_zones | List zones with status, mode, nameservers and record counts |
| get_zone
Nur der Anfang wird gezeigt; den Rest findest du im Repo