API-Dokumentation

Model Context Protocol (MCP)

Der Sitequest MCP-Endpunkt ermöglicht es KI-Assistenten wie GitHub Copilot, Claude oder anderen MCP-kompatiblen Clients, direkt mit deiner Infrastruktur zu interagieren.

Übersicht

MCP (Model Context Protocol) ist ein offener Standard, der KI-Anwendungen eine sichere Verbindung zu externen Tools und Datenquellen ermöglicht. Sitequest implementiert einen zustandslosen Streamable-HTTP-MCP-Server.

  • Endpunkt: POST https://hosting.site.quest/mcp
  • Protokollversion: 2025-03-26
  • Transport: Streamable HTTP (zustandslos, JSON-Antworten)
  • Authentifizierung: Dieselben API-Schlüssel wie bei der REST-API

Verfügbare Tools

VPS-Tools

Tool Erforderlicher Scope Beschreibung
list_vms vps:read Alle VPS mit Status, Spezifikationen und Nutzungsmetriken auflisten
get_vm vps:read Detaillierte VPS-Informationen einschließlich Live-Konfiguration und Status
get_vm_monitoring vps:read CPU-/Arbeitsspeicher-/Ping-Verlauf und Ausfallstatistiken
get_vm_traffic vps:read Aktuelle Bandbreitennutzung und tägliches Traffic-Protokoll
list_ssh_keys vps:read Alle SSH-Schlüssel auf einem VPS auflisten
vm_power vps:manage VPS starten, stoppen oder neustarten
vm_reinstall_os vps:manage Betriebssystem neu installieren (destruktiv, Bestätigung erforderlich)
vm_mount_iso vps:manage ISO-Image einbinden oder aushängen
vm_reset_password vps:manage Neues Root-Passwort generieren (destruktiv, Bestätigung erforderlich)
rename_vm vps:manage Anzeigenamen eines VPS aktualisieren
list_backups vps:manage Alle Sicherungen eines VPS auflisten
create_backup vps:manage Neue Sicherung erstellen (Bestätigung erforderlich)
restore_backup vps:manage VPS aus einer Sicherung wiederherstellen (destruktiv, Bestätigung erforderlich)
delete_backup vps:manage Sicherung löschen (destruktiv, Bestätigung erforderlich)
get_firewall vps:manage Firewall-Status und Regeln abrufen
manage_firewall vps:manage Regeln hinzufügen/entfernen, Firewall aktivieren/deaktivieren
exec_command vps:manage Einmaligen SSH-Befehl auf einem VPS ausführen
list_files vps:manage Verzeichnisinhalte per SFTP auflisten
read_file vps:manage Dateiinhalt per SFTP lesen
write_file vps:manage Dateiinhalt per SFTP schreiben
ssh_security vps:manage SSH-Sicherheitseinstellungen abrufen oder aktualisieren
generate_ssh_key vps:manage SSH-Schlüsselpaar generieren, optional für Web-Terminal speichern
upload_ssh_key vps:manage Öffentlichen SSH-Schlüssel hochladen, optional für Web-Terminal speichern
delete_ssh_key vps:manage Einen SSH-Schlüssel von einem VPS entfernen
create_vm vps:provision Neuen VPS erstellen (erstellt Bestellung + belastet Mandat)
delete_vm vps:provision VPS beim Provider löschen (destruktiv, erfordert Bestätigung)
upgrade_vm vps:provision VPS-Ressourcen upgraden (CPU, RAM, Speicher usw.)

Domain-Tools

Tool Erforderlicher Scope Beschreibung
list_domains domains:read Alle Domains mit Registrierungsstatus und DNS-Eintragsanzahl auflisten
get_domain domains:read Detaillierte Domain-Informationen einschließlich DNS-Einträgen und Registrar-Daten
list_dns_records domains:read DNS-Einträge einer Domain auflisten
add_dns_record domains:manage DNS-Eintrag erstellen
edit_dns_record domains:manage Vorhandenen DNS-Eintrag aktualisieren
delete_dns_record domains:manage DNS-Eintrag entfernen
set_nameservers domains:manage Domain-Nameserver aktualisieren
set_transfer_lock domains:manage Transfersperre aktivieren oder deaktivieren
set_whois_privacy domains:manage WHOIS-Datenschutz aktivieren oder deaktivieren
set_dnssec domains:manage DNSSEC aktivieren oder deaktivieren
get_authcode domains:manage Domain-Authcode (Transferschlüssel) abrufen
register_domain domains:provision Neue Domain registrieren (erstellt Bestellung + belastet Mandat)
transfer_domain domains:provision Domain zu Sitequest transferieren (erstellt Bestellung + belastet Mandat)
cancel_domain domains:provision Domain beim Registrar kündigen (destruktiv, erfordert Bestätigung)

Bestell-Tools

Tool Erforderlicher Scope Beschreibung
get_order_status vps:provision oder domains:provision Bestellstatus anhand von ID oder Token abrufen

Webspace-Tools

Shared Webhosting mit isolierten PHP/MariaDB-Sites. SFTP- und Exec-Tools laufen als unprivilegierter Site-Linux-User, eingesperrt im Home-Verzeichnis der Site.

Tool Erforderlicher Scope Beschreibung
webspace_list webspace:read Alle Webspaces mit Status, Plan, CMS und Kontingentnutzung auflisten
webspace_get webspace:read Webspace inklusive verknüpfter Domains und Live-Speicherplatznutzung abrufen
webspace_get_ssh_info webspace:read SSH-Verbindungsdaten (Host, Port, Benutzername, Host-Key-Fingerprint)
webspace_list_ssh_keys webspace:read Autorisierte SSH-Schlüssel auflisten
webspace_create webspace:provision Bezahlten Webspace bereitstellen (erstellt Bestellung + belastet Mandat)
webspace_claim_free webspace:provision Einmaligen Free-Tier-Webspace für das Konto beanspruchen
webspace_upgrade webspace:provision Speicherplatz und/oder Anzahl Datenbanken erhöhen (kein Downgrade)
webspace_delete webspace:provision Webspace dauerhaft löschen (destruktiv, erfordert Bestätigung)
webspace_set_label webspace:manage Anzeigenamen aktualisieren
webspace_set_php webspace:manage PHP-Version ändern (8.1 – 8.5, erfordert Bestätigung)
webspace_install_cms webspace:manage WordPress, Joomla, TYPO3 oder Static installieren/neu installieren (löscht Docroot, erfordert Bestätigung)
webspace_link_domain webspace:manage Benutzereigene Domain verknüpfen und Let's-Encrypt-Zertifikat ausstellen
webspace_unlink_domain webspace:manage Eine zuvor verknüpfte Domain lösen (erfordert Bestätigung)
webspace_reset_db_password webspace:manage MariaDB-Passwort zurücksetzen (neues Passwort wird einmal zurückgegeben, erfordert Bestätigung)
webspace_exec webspace:manage Einmaligen SSH-Befehl in der Jailed Shell ausführen
webspace_list_files webspace:manage Verzeichnisinhalte per Jailed SFTP auflisten
webspace_read_file webspace:manage Datei per Jailed SFTP lesen (max. 10 MB)
webspace_write_file webspace:manage Datei per Jailed SFTP schreiben (max. 10 MB)
webspace_mkdir webspace:manage Neues Verzeichnis im Jail erstellen
webspace_rename webspace:manage Innerhalb des Jails umbenennen / verschieben
webspace_delete_path webspace:manage Datei oder Verzeichnis löschen (erfordert Bestätigung)
webspace_chmod webspace:manage Berechtigungen einer Datei/Verzeichnisses ändern
webspace_add_ssh_key webspace:manage Autorisierten SSH-Public-Key hochladen
webspace_delete_ssh_key webspace:manage Autorisierten SSH-Schlüssel anhand des Fingerprints entfernen (erfordert Bestätigung)

Webspace-Preise sind noch nicht via MCP verfügbar. Verwende den REST-Endpunkt GET /api/v1/webspaces/pricing, bis ein get_webspace_pricing-Tool ergänzt wurde.

Einrichtung für VS Code / GitHub Copilot

Erstelle eine .vscode/mcp.json-Datei in deinem Workspace:

{
  "servers": {
    "sitequest": {
      "type": "http",
      "url": "https://hosting.site.quest/mcp",
      "headers": {
        "Authorization": "Bearer DEIN_API_SCHLÜSSEL"
      }
    }
  }
}

Ersetze DEIN_API_SCHLÜSSEL durch einen API-Schlüssel mit den benötigten Berechtigungen (z.B. vps:read, domains:read).

Nach dem Speichern erkennt VS Code den MCP-Server automatisch. Du kannst Copilot dann Fragen stellen wie:

  • "Liste meine VPS auf"
  • "Welche Domains habe ich?"
  • "Zeige mir die Details für Server X"

Einrichtung für andere MCP-Clients

Jeder MCP-Client, der den Streamable-HTTP-Transport unterstützt, kann sich verbinden. Konfiguriere:

  • URL: https://hosting.site.quest/mcp
  • Methode: Nur POST (GET gibt 405 zurück)
  • Header:
    • Authorization: Bearer DEIN_API_SCHLÜSSEL
    • Content-Type: application/json
    • Accept: application/json, text/event-stream

Manuelles JSON-RPC-Beispiel

Initialisierung:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer DEIN_API_SCHLÜSSEL" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": { "name": "mein-client", "version": "1.0" }
    }
  }'

Verfügbare Tools auflisten:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer DEIN_API_SCHLÜSSEL" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'

Tool aufrufen:

curl -X POST https://hosting.site.quest/mcp \
  -H "Authorization: Bearer DEIN_API_SCHLÜSSEL" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "list_vms",
      "arguments": {}
    }
  }'

Authentifizierung

MCP verwendet dasselbe API-Schlüssel-System wie die REST-API. Weitere Details zum Erstellen von Schlüsseln und Verwalten von Berechtigungen findest du unter Autorisierung.

Rate Limiting

MCP-Anfragen teilen sich dasselbe Rate-Limit wie die REST-API: 60 Anfragen pro Minute pro API-Schlüssel. Rate-Limit-Header sind in jeder Antwort enthalten.

Unterschiede zur REST-API

Merkmal REST-API MCP
Protokoll HTTP REST JSON-RPC 2.0 über HTTP
Methoden Standard-HTTP-Verben Nur POST
Antwortformat { "data": ... } JSON-RPC Result/Error
Sitzungen Zustandslos Zustandslos (kein SSE-Streaming)
Anwendungsfall Direkte Integration KI-Assistenten-Integration

Quellcode & Client-Beispiele

Das Sitequest-MCP-Server-Listing, Beispielkonfigurationen für Clients (VS Code, Claude Desktop, Cursor und weitere) sowie der Eintrag für MCP-Verzeichnisse werden im öffentlichen Repository gepflegt:

github.com/Sitequest-Software/sitequest-mcp