Prototype · Preview: every server in the official registry, synced every 30 minutes. Sign in with Google to write reviews.
PopNx MCPMCP servers for people who use AI · explained in plain words

Hetzner DNS

by ni-cversion 0.6.0i★ 0iRuns on your computer
Registry nameio.github.ni-c/hetzner-dns-mcp

How to install

Overview

Description from the maker (original English)

Manage DNS zones and records (zonefiles, RRSets, TTL, protection) via the Hetzner Cloud API

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Developer tools
  • You need to fill in: HETZNER_API_TOKEN

Install

Pick the AI app you use, then copy the settings.

Passed 2/2 checks · Runs on your computer

First: which AI do you use?

Pick your app and the steps appear below.

Works with Claude, with some setup first

You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Sign up and create a Hetzner DNS key

    Open the maker’s site, sign up and create an API key for the next step. It may cost money.

    Open the Hetzner DNS site ↗

  3. Open the Claude desktop app’s settings file

    SettingsDeveloperEdit Config

  4. Paste these settings and save the file

    {
      "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"
          }
        }
      }
    }

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Quit Claude and open it again

  6. Try it

    Use Hetzner DNS and tell me what you can do for me, then show me one thing

    ✓ If Claude says it is using Hetzner DNS or shows a Hetzner DNS tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

ChatGPT cannot connect Hetzner DNS yet

Hetzner DNS runs on your computer, but ChatGPT can only connect servers that run on the web

What you can do instead

A · Use an app that can connect Hetzner DNS

  • You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
  • You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)
  • You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)
  • You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)

B · Others in Developer tools that work with ChatGPT

Picked from the most used in the same category, only ones that connect by address with no key

Works with Claude Code, with some setup first

You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Sign up and create a Hetzner DNS key

    Open the maker’s site, sign up and create an API key for the next step. It may cost money.

    Open the Hetzner DNS site ↗

  3. Open Terminal

    Mac: press Command+Space and type Terminal · Windows: open PowerShell

  4. Paste this command and press Enter

    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-mcp

    Replace “your-value” with your key before pressing Enter

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Type /mcp in Claude Code

    You should see Hetzner DNS listed as connected

  6. Try it

    Use Hetzner DNS and tell me what you can do for me, then show me one thing

    ✓ If Claude Code says it is using Hetzner DNS or shows a Hetzner DNS tool in the answer, you are connected

Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with Cursor, with some setup first

You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Sign up and create a Hetzner DNS key

    Open the maker’s site, sign up and create an API key for the next step. It may cost money.

    Open the Hetzner DNS site ↗

  3. Click this button to open Cursor

    Open in Cursor

    Cursor asks you to confirm; click Install

  4. Fill in your key

    In the Hetzner DNS settings, HETZNER_API_TOKEN, HETZNER_READ_ONLY, HETZNER_ALLOW_TOOLS, HETZNER_DENY_TOOLS, HETZNER_API_BASE_URL is empty; add your key and save

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Open the AI chat in Cursor in Agent mode

  6. Try it

    Use Hetzner DNS and tell me what you can do for me, then show me one thing

    ✓ If Cursor says it is using Hetzner DNS or shows a Hetzner DNS tool in the answer, you are connected

Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Works with VS Code, with some setup first

You need a Hetzner DNS key (sign up on the maker’s site, may cost money) · Install Node.js on your computer first (one time)

  1. Install Node.js

    One time only; it works for every server that needs Node.js

    Open the Node.js download page ↗

  2. Sign up and create a Hetzner DNS key

    Open the maker’s site, sign up and create an API key for the next step. It may cost money.

    Open the Hetzner DNS site ↗

  3. Click this button to open VS Code

    Open in VS Code

    VS Code asks you to confirm; click Install

  4. Fill in your key

    In the Hetzner DNS settings, HETZNER_API_TOKEN, HETZNER_READ_ONLY, HETZNER_ALLOW_TOOLS, HETZNER_DENY_TOOLS, HETZNER_API_BASE_URL is empty; add your key and save

    Paste the key only into the app’s field, never into a chat or to anyone

  5. Open the AI chat in VS Code in Agent mode

  6. Try it

    Use Hetzner DNS and tell me what you can do for me, then show me one thing

    ✓ If VS Code says it is using Hetzner DNS or shows a Hetzner DNS tool in the answer, you are connected

Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version

Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.

See every app that uses MCP →

JSON settings are under “For developers” below

Stuck? Ask people who use Hetzner DNS💬 Discussion →
For developers: Terminal commands and JSON settings

Installed on your computer

Claude Code

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-mcp

Claude Desktop (claude_desktop_config.json)

{
  "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"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json)

{
  "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"
      }
    }
  }
}

VS Code (mcp.json)

{
  "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"
      }
    }
  }
}

Values you fill in

  • HETZNER_API_TOKEN secret required env
    Hetzner Cloud API token (project-scoped, Cloud Console -> Security -> API tokens)
  • HETZNER_READ_ONLY env
    Set to true to register only the read-only tools (default: false)
  • HETZNER_ALLOW_TOOLS env
    Comma-separated tool names or list_* prefixes to register; 'essential' selects a curated preset (default: all tools)
  • HETZNER_DENY_TOOLS env
    Comma-separated tool names or list_* prefixes to remove from whatever HETZNER_ALLOW_TOOLS left
  • HETZNER_API_BASE_URL env
    Override the Hetzner Cloud API base URL (default: https://api.hetzner.cloud/v1)

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

At a glance

Downloads per weeki
85/wk
Licencei
No licence stated
Connection
Runs on your computer
Latest versioni
0.6.0
Published to registryi
Sep 8, 2026
Code last changedi
Nov 11, 2026
Maker
ni-c
Packages
npm: hetzner-dns-mcp
oci: ghcr.io/ni-c/hetzner-dns-mcp:0.6.0
Registry status
Active

Which apps can use it

Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.

Run on your computer in

ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast

All apps, with pros and cons →

Related guides

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 12, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account ni-c, which owns the repo

  • ✓ Pass

    Still maintained

    Code last changed yesterday

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Discussion

Ask, share a tip or report that it does not work. Sorted by what people marked helpful.

No posts yet. Be the first to ask or share.

Posts here are written by users, not the PopNx team.

Sign in with Google to post

User reviews

No reviews yet

Sign in with Google to write a review

Compared with others in Developer toolsi

  • More stars than 0% of the other 5777 servers in this category
  • Published to the registry more recently than 34% of the other 5777 servers in this category
  • Basic checks equal to or better than 100% of the other 5777 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Hetzner DNS safe?

It passed 2 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: HETZNER_API_TOKEN

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed yesterday, and the latest version (0.6.0) reached the registry 2 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js, Docker on your computer.

What can I use instead?

In the same category: REA, Netdata, Front-End Checklist

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

REA

Reverse engineer anything from your terminal or agent with one CLI and MCP server.

by morlutoWidely used↓ 388.7K/wk★ 451.3KUpdated 17 days ago

Runs on your computer

Netdata

Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.

by netdataWidely used★ 81.4KUpdated 7 days ago

Runs in the cloud

Front-End Checklist

Review frontend code and live pages against 386 quality-gated web development rules.

by thedaviddiasWidely used★ 74.7KUpdated 38 days ago

Runs in the cloud

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

hetzner-dns-mcp

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.

What makes it different

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.

Requirements

  • Node.js ≥ 24
  • A Hetzner Cloud API token for the project that holds your DNS zones — create one in the Hetzner Cloud Console under _your project → Security → API tokens_. Use a read & write token for full functionality (a read-only token limits you to the read tools).

Configuration

Configuration is provided via environment variables:

VariableRequiredDescription
HETZNER_API_TOKENyesHetzner Cloud API token (project-scoped)
HETZNER_READ_ONLYnotrue registers only the read tools; the write tools do not exist at all
HETZNER_ALLOW_TOOLSnoComma-separated tool names, list_* prefixes, or essential for a curated preset
HETZNER_DENY_TOOLSnoSame syntax; removed from whatever HETZNER_ALLOW_TOOLS left
ELICITATIONnofalse replaces the approval dialog with the two-call token. Not prefixed
HETZNER_API_BASE_URLnoBase 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.

Choosing which tools load

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.

Installation

Claude Code
claude mcp add hetzner-dns -s user \

-e HETZNER_API_TOKEN=your-token \ -- npx -y hetzner-dns-mcp

Claude Desktop

Add to your claude_desktop_config.json:

{

"mcpServers": { "hetzner-dns": { "command": "npx", "args": ["-y", "hetzner-dns-mcp"], "env": { "HETZNER_API_TOKEN": "your-token" } } } }

Codex

Add to your ~/.codex/config.toml:

[mcp_servers.hetzner-dns]

command = "npx" args = ["-y", "hetzner-dns-mcp"] env = { HETZNER_API_TOKEN = "your-token" }

From source
git clone https://github.com/ni-c/hetzner-dns-mcp.git

cd hetzner-dns-mcp npm install npm run build

then use node /path/to/hetzner-dns-mcp/dist/index.js as the command

Docker

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" } } } }

Through mcp-hub

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.

Tools

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.

Zones
ToolDescription
list_zonesList zones with status, mode, nameservers and record counts

| get_zone

Only the beginning is shown; read the rest in the repo