Skip to main content
Glama

DirectAdmin MCP Server

ci version license

Eine produktionsreife Model Context Protocol-Steuerungsebene für DirectAdmin. Ein KI-Agent (Helpdesk, Eigentümer oder Notfall-Sysadmin) spricht mit diesem Prozess; der Prozess spricht mit dem Panel. Jeder Aufruf wird als benannter Hash-Token authentifiziert, durch ein Profil (readonly / helpdesk / operator / break-glass) autorisiert, optional bestätigt, als strukturiertes JSON protokolliert, ratenbegrenzt und außerhalb eines Wartungsfensters verweigert. SSL-Ausstellung und CSF/BFM-Entsperrung sind erstklassige Helpdesk-Aktionen – sie sind nicht das gesamte Produkt.

Die vorgesehene Architektur ist ein Hop-Host neben dem Agenten (keine Installation auf jedem DA-Server): ein schreibgeschützter Listener für den gesprächigen Agenten und ein Schreib-Listener für erlaubte Änderungen. Fleet-Fakten (CloudLinux, Profil) liegen in inventory.json auf dieser Hop-Maschine.

Es deckt die DirectAdmin New JSON API (320 Operationen aus dem offiziellen Swagger) und die Legacy-CMD_API_*-Admin-Aufrufe ab, die die New API weiterhin nicht ersetzt (Benutzer anlegen, DNS, Backups, BFM).

Lesen Sie docs/agent.md und docs/tokens.md, bevor Sie ein Modell auf die Produktion richten.

┌──────────────┐     MCP (stdio / SSE)     ┌──────────────────┐     HTTPS      ┌─────────────┐
│  Claude /    │ ─────────────────────────► │  directadmin-mcp │ ─────────────► │ DirectAdmin │
│  Cursor /    │                            │  confirm=true    │  Basic+key    │  :2222/api  │
│  any MCP     │ ◄───────────────────────── │  audit.jsonl     │               │  + CSF plug │
└──────────────┘                            └──────────────────┘               └─────────────┘

Was Sie fragen können

Sie sagen

Tool

„Let's-Encrypt-Zertifikat für shop.example.com neu ausstellen"

ssl_reissue_domain

„Das Hostname-Zertifikat ist abgelaufen, erneuern"

ssl_reissue_server

„Kunde 203.0.113.44 ist aus CSF ausgesperrt"

csf_unblock_ip / firewall_unblock_everywhere

„Ist diese IP blockiert? Warum? Dem Kunden mitteilen."

ip_block_reason

„Benutzer über dem Quota auflisten"

users_list_all + users_get_usage

„php-fpm74 neu starten"

services_restart (benötigt ENABLE_SERVICE_CONTROL=true)

Alles andere unter /api/*

da_list_endpointsda_api

Destruktive Aufrufe (delete, deny, restart, reissue, unblock, …) erfordern confirm=true. Das Modell muss eine ausdrückliche Freigabe erhalten.

Related MCP server: cPanel MCP Server

Voraussetzungen

  • Python 3.10+ (3.12 empfohlen) oder Docker

  • DirectAdmin mit API-Zugriff und einem Login-Key (nicht das Hauptpasswort)

  • Für CSF-Tools: das ConfigServer Security & Firewall-DirectAdmin-Plugin

  • Netzwerkpfad vom MCP-Host zu https://ihr-panel:2222

Schnellstart (stdio — Claude Desktop / Cursor)

git clone https://github.com/OpenIaaS/directadmin-mcp-server.git
cd directadmin-mcp-server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.sample .env
# edit .env — DA_URL, DA_USERNAME, DA_LOGIN_KEY

Erzeugen Sie einen Login-Key unter Admin Level → Account Manager → Login Keys. Beschränken Sie ihn auf die IP dieser Maschine. Legen Sie den Key in .env ab:

DA_URL=https://panel.example.com:2222
DA_USERNAME=admin
DA_LOGIN_KEY=...
DA_SSL_VERIFY=true

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "directadmin": {
      "command": "/absolute/path/to/directadmin-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/directadmin-mcp/server.py"],
      "env": {
        "DA_URL": "https://panel.example.com:2222",
        "DA_USERNAME": "admin",
        "DA_LOGIN_KEY": "your-login-key"
      }
    }
  }
}

Cursor / andere MCP-Clients verwenden dieselbe command- + args- + env-Struktur.

HTTP / SSE-Modus (Remote-Assistent)

python -c "import secrets; print(secrets.token_urlsafe(48))"   # MCP_AUTH_TOKEN
# put the token in .env, keep MCP_HOST=127.0.0.1
python main.py

Stellen Sie Caddy oder nginx mit TLS davor. Clients senden Authorization: Bearer <MCP_AUTH_TOKEN> an /sse. Setzen Sie das Token nicht in die Query-String.

Docker (nur Loopback):

cp .env.sample .env   # fill DA_* and MCP_AUTH_TOKEN
docker compose up -d --build
curl -sS http://127.0.0.1:8888/health

Das Image läuft als UID 10001, verwirft alle Capabilities und verwendet ein schreibgeschütztes Root-Dateisystem. Siehe SECURITY.md.

SSL-Ausstellung

Admin-SSL-Symbol (alle Kundendomains, Pro Pack, nicht in der New API):

ssl_admin_list
ssl_admin_reissue  domains=["shop.example.com","blog.example.com"]  confirm=true

Dies ist CMD_ADMIN_SSL action=multiple – dieselbe Aktion wie Admin Level → Admin SSL. Der Login-Key muss für diesen Befehl freigeschaltet sein.

Eine Domain (New API, DirectAdmin 1.660+ / aktuelles Evolution):

ssl_get_domain_acme_config  domain=shop.example.com  impersonate=alice
ssl_reissue_domain          domain=shop.example.com  impersonate=alice  confirm=true
ssl_reissue_domain          domain=shop.example.com  dry_run=true
ssl_reissue_server          confirm=true

ssl_reissue_domain ist POST /api/domain-tls/{domain}/provision-certs. ssl_reissue_server ist POST /api/server-tls/obtain.

Auf älteren Panels ist dieselbe Absicht ssl_reissue_domain_legacy (CMD_API_SSL- Let's-Encrypt-Anfrage). Immer den besitzenden Benutzer impersonieren, wenn Sie als Admin angemeldet sind – Domain-TLS ist eine Ressource auf Benutzerebene.

Verwandt: ssl_list_domain_certs, ssl_set_domain_acme_config, ssl_upload_cert_files, ssl_create_csr, ssl_install_self_signed, ssl_acme_dns_providers.

CSF / Firewall-Entsperrung

CSF ist nicht in der New JSON API. Diese Tools senden POST an das offizielle Plugin /CMD_PLUGINS_ADMIN/csf/. Das Plugin muss installiert sein.

Eine IP ist oft an zwei Stellen blockiert (LFD und DirectAdmin BFM). Verwenden Sie das kombinierte Tool, wenn ein Kunde ausgesperrt ist:

csf_search_ip                ip=203.0.113.44
bfm_ip_reason                ip=203.0.113.44
ip_block_reason              ip=203.0.113.44
firewall_unblock_everywhere  ip=203.0.113.44  confirm=true
csf_unblock_ip               ip=203.0.113.44  also_allow=true  confirm=true
bfm_unblock_ip               ip=203.0.113.44  confirm=true

csf_unblock_ip führt das Plugin-Quick-Unblock aus (action=killcsf -dr + csf -tr + Drop-States). also_allow=true fügt eine 1-stündige temporäre Freigabe hinzu, damit der nächste Handshake nicht sofort wieder gesperrt wird.

Weitere CSF-Tools: csf_allow_ip, csf_deny_ip, csf_ignore_ip, csf_flush_temp, csf_restart, csf_enable, csf_disable, csf_status.

csf_disable ist standardmäßig verweigert (TOOL_DENYLIST + ENABLE_CSF_DISABLE=false). Entsperren Sie Kunden stattdessen mit firewall_unblock_everywhere.

Tool-Übersicht

Kuratierte Tools sind nach Modul gruppiert. Alles andere ist über da_api / da_legacy erreichbar. Playbooks: docs/agent.md, docs/operations.md, docs/ssl.md, docs/csf.md, docs/propack.md, docs/cloudlinux.md, docs/hardening.md, docs/audit.md, docs/tokens.md. Inventar: docs/tools.json (273 kuratierte Tools + 320 Swagger-Operationen).

Modul

Tools (Präfix)

Hinweise

SSL

ssl_*

Domain + Hostname-ACME, Ausstellung, Upload

CSF

csf_*, firewall_*

Plugin; benötigt ENABLE_CSF=true

BFM

bfm_*

Native Panel-Blockaden

Konten

users_*, resellers_*, admins_*

New API + CMD_API_ACCOUNT_*

Pakete

packages_*

Benutzer-/Reseller-Pakete

System

system_*, license_*, maintenance_*

Version, OS-Updates, Nutzung

Dienste

services_*

start/stop/restart/reload/logs

Einstellungen

hostname_*, da_config_*, timezone_*, email_server_*

directadmin.conf

Auth

login_keys_*, login_urls_*, mfa_*, sessions_*

Bevorzugt eingeschränkte Keys

Sicherheit

modsecurity_*, clamav_*, security_txt_*, redis_*

WAF / AV

Daten

db_*, fm_*, email_*, dns_*, ips_*, backups_*, domains_*, ftp_*, cron_*

Admin-Tag-2

Build

cb_*, plugins_*, wp_*, git_*, cpanel_*

CustomBuild / Apps

Pro Pack

unit_*, nginx_set_template, imapsync_*, propack_inventory

Unit + Templates; kein Web-Terminal

CloudLinux

cl_*

Opt-in (ENABLE_CLOUDLINUX=false standardmäßig)

Richtlinie

policy_status

Live-ENABLE_*-Flags; Genehmigungs-Token erforderlich?

Audit

audit_search, audit_recent, window_now

Wer hat was, wann, im Fenster?

Notausgänge

da_ping, da_list_endpoints, da_describe_endpoint, da_api, da_legacy

Vollständiges Swagger

da_api akzeptiert nur Pfade, die in der gebündelten tools/api_spec.json existieren (exportiert aus https://demo.directadmin.com:2222/static/swagger.json). /api/execute ist blockiert, außer ENABLE_EXECUTE=true.

Konfiguration

Siehe .env.sample. Wichtige Stellschrauben:

Variable

Standard

Zweck

DA_URL

erforderlich

https://host:2222

DA_USERNAME / DA_LOGIN_KEY

erforderlich

Login-Key, nicht das Passwort

DA_IMPERSONATE

leer

Standard-Login-as; bevorzugt pro Tool impersonate=

DA_SSL_VERIFY

true

Panel-Zertifikat verifizieren

MCP_HOST / PORT

127.0.0.1 / 8888

HTTP-Bind

MCP_AUTH_TOKEN

leer

Erforderlich für HTTP in Produktion

MCP_ALLOWED_CIDRS

leer

Optionale Client-Allow-Liste

TOOL_ALLOWLIST / TOOL_DENYLIST

leer / da_execute

Schlagradius reduzieren

REQUIRE_CONFIRM

true

Destruktive Tools benötigen confirm=true

ENABLE_CSF

true

CSF-Plugin-Aufrufe

ENABLE_EXECUTE

false

/api/execute-Durchreichung

RATE_LIMIT_PER_MINUTE

60

Pro Client-Identität

AUDIT_LOG

logs/audit.jsonl

Geschwärzte JSON-Zeilen

Sicherheit

Lesen Sie SECURITY.md. Kurzfassung:

  • Login-Key + IP-Beschränkung auf der DirectAdmin-Seite

  • Bearer-Token + Loopback-Bind + TLS-Proxy auf der MCP-Seite

  • Bestätigungs-Gate, Allow/Deny-Tool-Listen, kein Wildcard-CORS

  • Geheimnisse werden nie in Logs geschrieben

  • Docker: Nicht-Root, cap_drop: ALL, schreibgeschütztes Root

Wenn ein Token oder Key leakt, rotieren Sie beide sofort. Ein Login-Key, der in einen Chat eingefügt wurde, ist verbrannt.

Entwicklung

pip install -r requirements-dev.txt
pytest -q
ruff check .

Hinzufügen eines kuratierten Tools: Erstellen Sie eine Funktion in tools/, dekorieren Sie sie mit @mcp.tool() + @log_tool_call, validieren Sie Eingaben (validate_ip, validate_domain, validate_username) und rufen Sie guard_confirm auf, wenn der Aufruf den Zustand verändert.

Der generische Katalog übernimmt neue Swagger-Pfade, wenn Sie tools/api_spec.json durch einen frischen Export von Ihrem eigenen Panel (/static/swagger.json) ersetzen.

Kompatibilität

Transport

Datei

Wann

stdio

server.py

Claude Desktop, Cursor, lokale Agenten

SSE

main.py/sse

Ältere Remote-MCP-Clients

HTTP Health / Tool-Liste

main.py

/health (Liveness), /ready (Panel), /mcp/tools

Getestet gegen das offizielle New-API-Swagger (info.version = 1.0, 269 Pfade / 320 Operationen). Legacy-Aufrufe folgen docs.directadmin.com/developer/api/legacy-api.html.

Lizenz

MIT. Verwenden Sie es, ändern Sie es und liefern Sie es mit Ihrem Panel-Tooling aus.

Dieses Repository ist eine unabhängige Implementierung, die erstmals von OpenIaaS im August 2026 veröffentlicht wurde. Ein MIT-Release von 2025 (omryatia/directadmin-mcp) lieferte das ursprüngliche Layout — Einstiegspunkte und Modulennamen. Dieser Ausgangspunkt bleibt als Hinweis auf abgeleitete Arbeit in LICENSE erhalten. Mit Stand 20. August 2026 ist es nur ein kleiner Bruchteil des Baums: Etwa eine von zwanzig der ursprünglichen einzigartigen Codezeilen erscheint noch wörtlich; die Python-Quellen sind etwa dreieinhalb Mal größer, und die Domain-Teile (SSL, CSF, Policy, Audit) sind neu.

Mit Dank an die DirectAdmin-Community — die Dokumentation, das Forum und die Betreiber, die diese Systeme seit 23+ Jahren betreiben.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A local MCP server for managing WHM and cPanel servers through AI clients, supporting server health, account, DNS, email, database, SSL, bandwidth, disk, cron, and service-management tools across multiple WHM accounts.
    31
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    A comprehensive MCP server for managing cPanel hosting accounts through AI assistants. It supports DNS, email (DKIM/SPF), databases, domains, SSL, PHP, cron jobs, security, Git deployment, and more.
    100
    15
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for EasyPanel that enables AI agents to manage servers, projects, services, databases, and domains via 40 curated tools or raw tRPC access to all 347 API procedures.
    47
    4
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

  • Provision and manage a VPS for AI agents over MCP: register, order, get root, control the server.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenIaaS/directadmin-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server