Skip to main content
Glama
SquarePiSigma5

cloudflare-dns-mcp-server

cloudflare-dns-mcp-server

Ein Model Context Protocol (MCP)-Server, der es jedem MCP-kompatiblen LLM-Client (Claude Code, Claude Desktop, claude.ai Custom Connectors, Cursor und andere) ermöglicht, DNS-Einträge in Ihrem Cloudflare-Konto zu lesen und zu bearbeiten. Er läuft als streambarer HTTP-Server (zustandsloser JSON-Modus, der aktuelle MCP-Standard für Remote-Server) und bietet einen stdio-Modus für Clients, die lokale Subprozess-Server starten.

Tools

Tool

Funktion

cloudflare_verify_token

Bestätigt, dass der API-Token gültig und aktiv ist

cloudflare_list_zones

Listet Domains auf, die der Token verwalten kann

cloudflare_list_dns_records

Listet/filtert Einträge in einer Zone (Quelle der Eintrags-IDs)

cloudflare_get_dns_record

Ruft einen Eintrag anhand der ID ab

cloudflare_create_dns_record

Erstellt A/AAAA/CNAME/MX/TXT/SRV/CAA-Einträge usw.

cloudflare_update_dns_record

Teilweises Update; liefert Vorher/Nachher, damit Änderungen rückgängig gemacht werden können

cloudflare_delete_dns_record

Löscht (erfordert confirm=true); liefert eine Momentaufnahme zur Wiederherstellung

cloudflare_export_zone

Exportiert die Zone als BIND-Datei – erstellen Sie vor Massenänderungen ein Backup

Related MCP server: cloudflare-dns-mcp-server

Einrichtung

Erfordert Node.js 20+.

1. Erstellen Sie einen eingeschränkten Cloudflare-API-Token. Gehen Sie im Cloudflare-Dashboard zu Mein Profil → API-Tokens → Token erstellen → verwenden Sie die Vorlage Zone-DNS bearbeiten und begrenzen Sie sie unter Zonenressourcen auf die spezifische(n) Zone(n), die das Modell verwalten soll. Verwenden Sie nicht den Global API Key – ein eingeschränkter Token bedeutet, dass der schlimmste Fall nur DNS auf diesen Zonen betrifft.

2. Installieren und bauen:

npm install
npm run build

3. Konfigurieren und ausführen:

cp .env.example .env   # fill in tokens, then either export them or use a loader
export CLOUDFLARE_API_TOKEN="cf_..."
export MCP_AUTH_TOKEN="$(openssl rand -hex 24)"   # protects the MCP endpoint itself
npm start

Der MCP-Endpunkt ist jetzt unter http://127.0.0.1:8787/mcp erreichbar (Health-Check unter /healthz). Umgebungsvariablen: HOST (Standard 127.0.0.1), PORT (Standard 8787), TRANSPORT (http Standard, oder stdio), ALLOWED_ORIGINS (zusätzliche Browser-Origins, kommagetrennt).

4. Schnelltest:

MCP_AUTH_TOKEN="<same token>" npm run smoke

Dies verbindet sich mit einem echten MCP-Client, listet die 8 Tools auf und ruft cloudflare_verify_token auf. Sie können auch den MCP Inspector auf die URL richten: npx @modelcontextprotocol/inspector.

Clients verbinden

Claude Code:

claude mcp add --transport http cloudflare-dns http://127.0.0.1:8787/mcp \
  --header "Authorization: Bearer $MCP_AUTH_TOKEN"

Cursor / andere Clients mit JSON-Konfiguration – jeder Client, der streambares HTTP mit benutzerdefinierten Headern unterstützt, funktioniert auf die gleiche Weise:

{
  "mcpServers": {
    "cloudflare-dns": {
      "url": "http://127.0.0.1:8787/mcp",
      "headers": { "Authorization": "Bearer <MCP_AUTH_TOKEN>" }
    }
  }
}

Clients, die nur lokale stdio-Server starten:

{
  "mcpServers": {
    "cloudflare-dns": {
      "command": "node",
      "args": ["/path/to/cloudflare-dns-mcp-server/dist/index.js"],
      "env": { "CLOUDFLARE_API_TOKEN": "cf_...", "TRANSPORT": "stdio" }
    }
  }
}

claude.ai / Claude Mobile Custom Connectors benötigen eine öffentliche HTTPS-URL – sie können localhost nicht erreichen. Der schnellste Weg ist ein Cloudflare Tunnel vom Rechner, auf dem der Server läuft:

cloudflared tunnel --url http://127.0.0.1:8787

Wichtiger Hinweis: Die Custom-Connector-Oberfläche von claude.ai authentifiziert über OAuth oder gar nicht – sie hat kein Feld für einen statischen Bearer-Header. Das lässt zwei Optionen für den Fernzugriff: Den Tunnel hinter Cloudflare Access (Service-Auth) platzieren und die Authentifizierung dort beenden, oder mit nicht gesetztem MCP_AUTH_TOKEN laufen und sich darauf verlassen, dass die Tunnel-URL geheim bleibt – was für etwas, das Ihre DNS-Einträge bearbeiten kann, deutlich schwächer ist. Bei einem Cloudflare Tunnel bindet der Server weiterhin an 127.0.0.1, sodass kein Opt-in erforderlich ist; wenn Sie den Port jedoch direkt statt über einen Tunnel freigeben, erfordert ein unauthentifizierter Nicht-Localhost-Bind ALLOW_UNAUTHENTICATED=true. Prüfen Sie vor der Wahl die aktuellen Auth-Optionen des claude.ai-Connectors; diese ändern sich im Laufe der Zeit.

Sicherheitshinweise

Der Server bindet standardmäßig an 127.0.0.1 und weigert sich, ohne CLOUDFLARE_API_TOKEN zu starten. Wenn Sie ohne gesetztes MCP_AUTH_TOKEN an eine andere Adresse binden, weigert er sich zu starten – jeder, der den Port erreichen kann, könnte Ihre DNS-Einträge bearbeiten – es sei denn, Sie setzen ALLOW_UNAUTHENTICATED=true, was nur angemessen ist, wenn die Authentifizierung vorgelagert erfolgt (z. B. Cloudflare Access). Browser-Origin-Anfragen werden abgelehnt, es sei denn, sie stammen von localhost oder ALLOWED_ORIGINS (DNS-Rebinding-Schutz). Tokens werden aus der Umgebung gelesen, nie protokolliert und von keinem Tool zurückgegeben.

Auf der Modell-Sicherheitsseite: Das Löschen erfordert ein explizites confirm=true-Argument, Updates liefern Vorher/Nachher-Zustände, sodass jede Änderung rückgängig gemacht werden kann, und cloudflare_export_zone bietet ein Ein-Klick-BIND-Backup – es lohnt sich, Ihr Modell vor Massenänderungen darum zu bitten. DNS-Änderungen verbreiten sich im echten Internet; ein falscher Eintrag kann eine Website oder E-Mail lahmlegen. Überprüfen Sie daher, was das Modell vorschlägt, bevor Sie es auf Produktionszonen loslassen.

Entwicklung

npm run build    # compile TypeScript → dist/
npm start        # run HTTP server
npm run smoke    # end-to-end client test against the running server

Quellstruktur: src/index.ts (Transports, Auth-Middleware), src/cloudflare.ts (API-Client, Zonenauflösung, Formatierung), src/tools.ts (Tool-Registrierungen).

Lizenz

MIT

Related MCP Connectors

Related MCP Servers