Skip to main content
Glama

dynu-mcp

MCP-Server für Dynu — einen Anbieter für Dynamic DNS, Domain-Registrierung, E-Mail-Hosting und Cloud-Compute (VPS). Stellt die vollständige öffentliche Dynu REST-API v2 als MCP-Tools bereit.

Übersicht

  • Zustandsloser HTTP-Dienst. Es werden niemals Anmeldeinformationen gespeichert — jede Anfrage liefert ihren eigenen API-Schlüssel über einen Header, der nur für die Lebensdauer dieser einzelnen Anfrage verwendet wird.

  • Unterstützt gleichzeitige Anfragen; die Isolierung der Anmeldeinformationen pro Anfrage erfolgt über Python contextvars, nicht über eine globale/ gemeinsame Client-Instanz.

  • Einstiegspunkte: POST /mcp (MCP-Protokoll) und GET /health (Gesundheitsprüfung).

  • Standardport: 8080 (konfigurierbar über MCP_HTTP_PORT).

Related MCP server: dynadot-mcp

Umfang

30 Tools, reduziert von einem ursprünglichen Build mit 117 Tools, die die vollständige OpenAPI-3.0-Spezifikation von Dynu abdecken. Die Plattform, hinter der dieser MCP läuft, aggregiert die Tools jedes aktivierten Anbieter-MCPs in einen einzigen Gemini/Vertex-Modellaufruf, der bei insgesamt 512 Funktionsdeklarationen gedeckelt ist — bei über 50 registrierten Anbieter-MCPs muss jeder einzelne schlank bleiben. Beibehalten, über dieselben 6 Kategorien: dns (8 — der echte GET /dns-Endpunkt von MSPbots plus Kern-CRUD für Datensätze/Dienste), email (7 — Dienstliste/-details, Konto erstellen/lesen/aktualisieren/löschen), compute (4 — Instanzliste/-details/start/stopp), domain (2 — Liste/Details), monitor (7, vollständige Kategorie), ping (2, vollständige Kategorie). Vollständig entfernt: Verwaltung der Domain-Registrierung (Glue-Records, Nameserver, automatische Verlängerung, Sperren/Entsperren), E-Mail-Schwarz-/Weißlisten-/Alias-/Verteilerlisten-/DKIM-Verwaltung und Backup-/Snapshot-/VNC-/Neuinstallationsvorgänge von Compute — siehe Bekannte Lücken. MSPbots selbst ruft nur 1 Endpunkt auf (GET /dns), der beibehalten wird.

Authentifizierung

Dynu authentifiziert mit einem einzigen statischen API-Schlüssel (zu finden im Bereich API-Anmeldeinformationen des Dynu-Kontrollpanels). Die Integrationskonvention von MSPbots sendet diesen Schlüssel als Rohwert des API-Key-Headers, und dieser Server leitet ihn genau so weiter.

HEADER Erläuterung der Autorisierungsparameter

Header

Typ

Erforderlich

Standardwert

Aufzählungswerte

Feldbeschreibung

Beispiel

X-Dynu-Api-Key

string

Ja

Keiner

Keine

Dynu statischer API-Schlüssel, wird unverändert als API-Key-Anfrageheader an den Upstream weitergeleitet

a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6

Fehlt der Header, wird 401 zurückgegeben:

{
  "error": "Missing credentials",
  "message": "This server requires the X-Dynu-Api-Key header",
  "required_headers": ["X-Dynu-Api-Key"],
  "optional_headers": []
}

Umgebungsvariablen

Variable

Typ

Erforderlich

Standardwert

Beschreibung

MCP_HTTP_PORT

int

Nein

8080

HTTP-Listenport

MCP_HTTP_HOST

string

Nein

0.0.0.0

HTTP-Listenadresse

DYNU_BASE_URL

string

Nein

https://api.dynu.com/v2

Basis-URL der Dynu-API

MCP-Endpunkt

  • POST /mcp — MCP-Protokoll (streambarer HTTP-Transport)

  • GET /health — Gesundheitsprüfung, gibt {"status": "ok"} zurück (reine lokale Lebendigkeitsprüfung, hängt nicht von der Dynu-API ab)

Werkzeugliste

Toolnamen werden aus der jeweiligen Zusammenfassung der Operation in der OpenAPI-Spezifikation des Anbieters abgeleitet (z. B. „Get a list of domains for DNS service" → dynu_get_list_domains_dns_service); die eine Namenskollision (sowohl GET /ping als auch POST /ping haben eine identische Zusammenfassung) wird durch ein _get/_post-Suffix eindeutig gemacht. body-Parameter für POST-Operationen werden als generisches dict akzeptiert — siehe den Models-Abschnitt der OpenAPI-Spezifikation des Anbieters (unten verlinkt) für die genauen Feldnamen/-typen jeder Ressource.

Kategorie

Tool

Funktion

Methode+Pfad

Parameter

dns

dynu_add_new_dns_record_dns_service

Neuen DNS-Datensatz für den DNS-Dienst hinzufügen.

POST /dns/{id}/record

id(erforderlich), body(erforderlich, dict)

dns

dynu_add_new_dns_service

Neuen DNS-Dienst hinzufügen.

POST /dns

body(erforderlich, dict)

dns

dynu_get_details_dns_record_dns_service

Details eines DNS-Datensatzes für den DNS-Dienst abrufen.

GET /dns/{id}/record/{dnsRecordId}

id(erforderlich), dns_record_id(erforderlich)

dns

dynu_get_details_domain_dns_service

Details einer Domain für den DNS-Dienst abrufen.

GET /dns/{id}

id(erforderlich)

dns

dynu_get_list_dns_records_dns_service

Liste der DNS-Datensätze für den DNS-Dienst abrufen.

GET /dns/{id}/record

id(erforderlich)

dns

dynu_get_list_domains_dns_service

Liste der Domains für den DNS-Dienst abrufen.

GET /dns

dns

dynu_remove_dns_record_dns_service

DNS-Datensatz aus dem DNS-Dienst entfernen.

DELETE /dns/{id}/record/{dnsRecordId}

id(erforderlich), dns_record_id(erforderlich)

dns

dynu_update_existing_dns_record_dns_service

Vorhandenen DNS-Datensatz für den DNS-Dienst aktualisieren.

POST /dns/{id}/record/{dnsRecordId}

id(erforderlich), dns_record_id(erforderlich), body(erforderlich, dict)

domain

dynu_get_details_domain_registration_domain

Details einer Domain-Registrierungsdomain abrufen.

GET /domain/{id}

id(erforderlich)

domain

dynu_get_list_domains_domain_registration_service

Liste der Domains für den Domain-Registrierungsdienst abrufen.

GET /domain

email

dynu_add_new_email_account_email_service

Neues E-Mail-Konto für den E-Mail-Dienst hinzufügen.

POST /email/{id}/account

id(erforderlich), body(erforderlich, dict)

email

dynu_get_details_email_account

Details des E-Mail-Kontos abrufen.

GET /email/{id}/account/{accountId}

id(erforderlich), account_id(erforderlich)

email

dynu_get_details_email_service

Details eines E-Mail-Dienstes abrufen.

GET /email/{id}

id(erforderlich)

email

dynu_get_list_email_accounts_email_service

Liste der E-Mail-Konten für den E-Mail-Dienst abrufen.

GET /email/{id}/account

id(erforderlich)

email

dynu_get_list_email_services

Liste der E-Mail-Dienste abrufen.

GET /email

email

dynu_remove_email_account_email_service

E-Mail-Konto aus dem E-Mail-Dienst entfernen.

DELETE /email/{id}/account/{accountId}

id(erforderlich), account_id(erforderlich)

email

dynu_update_existing_email_account_email_service

Vorhandenes E-Mail-Konto für den E-Mail-Dienst aktualisieren.

POST /email/{id}/account/{accountId}

id(erforderlich), account_id(erforderlich), body(erforderlich, dict)

compute

dynu_get_instance

Instanz abrufen.

GET /compute/instance/{id}

id(erforderlich)

compute

dynu_get_list_instances

Liste der Instanzen abrufen.

GET /compute/instance

compute

dynu_start_instance

Instanz starten.

GET /compute/instance/{id}/start

id(erforderlich)

compute

dynu_stop_suspend_instance

Instanz stoppen (aussetzen).

GET /compute/instance/{id}/stop

id(erforderlich)

monitor

dynu_add_new_monitor

Neuen Monitor hinzufügen.

POST /monitor

body(erforderlich, dict)

monitor

dynu_delete_monitor

Monitor löschen.

DELETE /monitor/{id}

id(erforderlich)

monitor

dynu_get_details_monitor

Details eines Monitors abrufen.

GET /monitor/{id}

id(erforderlich)

monitor

dynu_get_list_monitors

Liste der Monitore abrufen.

GET /monitor

monitor

dynu_limits_associated_monitoring

Mit der Überwachung verbundene Grenzwerte.

GET /monitor/limit

monitor

dynu_pause_monitor

Monitor pausieren.

GET /monitor/{id}/pause

id(erforderlich)

monitor

dynu_unpause_monitor

Monitor fortsetzen.

GET /monitor/{id}/unpause

id(erforderlich)

ping

dynu_ping_api_server_obtain_pong_response_get

API-Server anpingen, um die Pong-Antwort zu erhalten.

GET /ping

message(erforderlich)

ping

dynu_ping_api_server_obtain_pong_response_post

API-Server anpingen, um die Pong-Antwort zu erhalten.

POST /ping

body(erforderlich, dict)

Testbeispiel

# Health check
curl -s http://localhost:8080/health

# Call a tool via the MCP protocol (streamable HTTP) — requires an
# initialize handshake first per the MCP spec; abbreviated example below
# shows the tool-call request body only:
curl -s -X POST http://localhost:8080/mcp   -H "X-Dynu-Api-Key: <your-dynu-api-key>"   -H "Content-Type: application/json"   -H "Accept: application/json, text/event-stream"   -H "mcp-session-id: <session-id-from-initialize>"   -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "dynu_get_list_domains_dns_service",
      "arguments": {}
    }
  }'

Live-verifiziert (2026-07-29): dynu_get_list_domains_dns_service (derselbe Endpunkt, den MSPbots selbst aufruft, null Parameter) wurde Ende-zu-Ende über diesen laufenden Server mit einem echten API-Schlüssel aufgerufen und lieferte echte DNS-Domaindatensätze für das Konto zurück.

API-Referenz

Bekannte Lücken

  • Von 117 auf 30 Tools reduziert, durch ausdrückliche Benutzerentscheidung: Die Plattform, hinter der dieser MCP läuft, aggregiert die Tools jedes aktivierten Vendor-MCPs in einen einzigen Gemini/Vertex-Modellaufruf, der bei insgesamt 512 Funktionsdeklarationen gedeckelt ist – bei über 50 registrierten Vendor-MCPs muss jeder schlank bleiben. Behalten: MSPbots' echter GET /dns-Endpunkt, Kern-CRUD für DNS-Einträge/Dienste (8), Kern-CRUD für E-Mail-Dienste/Konten (7), grundlegende Compute-Instanz- Liste/Detail/Start/Stopp (4), Domänen-Liste/Detail (2) sowie Monitor/Ping in vollem Umfang (9). Vollständig entfernt: Domänen-Registrar-Verwaltung (Glue-Records, Nameserver, Auto-Verlängerung, Sperren/Entsperren/Stornieren), E-Mail- Blacklist/Whitelist/Alias/Verteilerlisten/DKIM-Verwaltung sowie Compute- Backup/Snapshot/VNC/Neuinstallation/Passwortänderung. Jede dieser Funktionen kann auf Anfrage wieder hinzugefügt werden, wenn ein realer Anwendungsfall sie benötigt.

  • Schreiboperationen für Compute und Domänen bleiben risikoreicher, auch nach der Kürzung – dynu_start_instance/dynu_stop_suspend_instance wirken auf echte VPS-Instanzen. Behandeln Sie diese als destruktiv/irreversibel und bestätigen Sie sie vor dem Aufruf mit einem Menschen.

  • body-Parameter sind untypisiert (dict) statt vollständig modelliert – der Abschnitt „Models" der OpenAPI-Spezifikation definiert das genaue Schema pro Ressource (z. B. DNS.dnsRecordA), aber die vollständige Abbildung aller als typisierte Python-Parameter war außerhalb des Rahmens. Aufrufer sollten das body-Dict gemäß der verlinkten Spezifikation gestalten.

  • Nur dynu_get_list_domains_dns_service (MSPbots' eigener Endpunkt) wurde live mit echten Kontodaten verifiziert. Die übrigen 29 Tools sind strukturell korrekt (Schema validiert, MCP-Protokoll tools/list bestätigt, Tool-Anzahl nach der Kürzung erneut geprüft), aber nicht einzeln einem Smoke-Test unterzogen – mehrere sind Schreib-/destruktive Operationen, die echte DNS-Einträge, E-Mail-Konten oder VPS- Instanzen erstellen, ändern oder löschen würden, weshalb sie nicht gegen das Live- Testkonto ausgeführt wurden.

Related MCP Connectors

Related MCP Servers