Skip to content

MCP für Agenten

ZPO spricht das Model Context Protocol (MCP) — damit arbeiten Agenten wie Claude Code direkt mit ZPO, ohne die REST-API zu kennen. Die Schnittstelle liegt unter /mcp (Streamable HTTP, zustandslos).

BereichLesenÄndern
Dienste (inkl. Wartung), Backend-Poolsjaja
Fehlerprofile (Fehler-, Sperr- und Prüfseiten)jaja
Standorte, Knoten, DNS-Einträge, Zertifikatejanein
Abgleich, Ereignisse, Statistik, Metriken, Audit-Logjanein
CrowdSec (LAPIs, Sperren, Allowlists, Sperrstufen)janein
Einstellungen (Allgemein, Alarme, Sicherung, Profile, IP-Gruppen)janein
Benutzer und API-Schlüsselneinnein

Zusätzlich gelten die Rechte des Benutzers, dem der Schlüssel gehört — wer nur die Rolle „viewer” hat, ändert auch über MCP nichts. Jede Änderung steht im Audit-Log mit der Adresse mcp. Geheimnisse (Passwörter, Schlüssel) liefert ZPO auch hier nie aus.

Unter Einstellungen → API-Schlüssel einen Schlüssel mit der Berechtigung MCP anlegen. Er gilt nur an /mcp; umgekehrt kommt ein gewöhnlicher Schlüssel nicht an die MCP-Schnittstelle.

Claude Code:

Terminal window
claude mcp add --transport http zpo https://zpo.example.com/mcp --header "Authorization: Bearer zpo_…"

Andere Clients tragen dieselbe Adresse ein und schicken den Schlüssel als Authorization: Bearer zpo_… oder X-API-Key: zpo_….

Lesend: system_info, list_sites, get_site, list_proxy_nodes, list_dns_nodes, list_dns_records, list_services, get_service, service_metrics, list_pools, get_pool, list_certificates, list_acme_accounts, list_dns_providers, sync_status, list_events, stats, list_audit, crowdsec_overview, crowdsec_bans, crowdsec_allowlists, crowdsec_stages, list_ip_groups, list_performance_profiles, list_security_profiles, list_error_profiles, get_error_profile, get_settings.

Ändernd: create_service, update_service, set_service_maintenance, delete_service, create_pool, update_pool, delete_pool, create_error_profile, update_error_profile, delete_error_profile.

update_service und update_pool erwarten das ganze Objekt, so wie get_service bzw. get_pool es liefern — fehlende Felder gelten als leer. Unbekannte Felder lehnt ZPO ab, damit ein Tippfehler auffällt.