
# Management-MCP-Server

Der KeenAuth-Management-MCP-Server ermöglicht es einem KI-Assistenten, die Konfiguration Ihrer Umgebung über das Model Context Protocol zu lesen. Er läuft lokal über stdio und ruft die Management-API mit Ihrem Schlüssel auf. Es gibt noch kein Installationspaket.

## Standardmäßig nur lesend

Ohne `--allow-write` stellt der Server nur schreibgeschützte Tools bereit. Kein Tool löscht etwas, in keinem Modus.

| Tool | Was es zurückgibt |
|---|---|
| `users_list`, `users_get`, `users_search` | Benutzer, mit maskierten personenbezogenen Daten |
| `applications_list`, `applications_get`, `application_credentials_list` | Anwendungen |
| `apis_list`, `apis_get` | APIs |
| `connections_list`, `connections_get` | Verbindungen |
| `api_keys_list`, `api_keys_get` | API-Schlüssel: nur Metadaten, der Schlüssel selbst wird nie zurückgegeben |
| `organizations_list`, `organizations_get` | Organisationen: Name, Slug, externe ID, Status und Zeitstempel; die `metadata` der Organisation wird nie zurückgegeben |
| `custom_domains_list`, `custom_domains_get` | Eigene Domains und ihre DNS-Einträge |
| `support_access_grants_list`, `support_access_grants_get` | Support-Zugriffsberechtigungen |
| `environment_settings_get` | Umgebungseinstellungen: Sprachen, Zeitzone, Sitzung, Registrierung, Benachrichtigungen zur Sicherheit, Kontowiederherstellung, MFA, Front-Channel-Logout und erlaubte First-Factor-Methoden |

`--unmask-pii` beendet den Server in dieser Version mit Exit-Code 2.

## Schreib-Tools

Starten Sie den Server mit `--allow-write`, um auch Schreib-Tools bereitzustellen. Diese Version enthält eines:

| Tool | Was es ändert |
|---|---|
| `environment_settings_update` | Nur aktivierte Sprachen, Standardsprache und Standardzeitzone. Einstellungen für Sitzung, Registrierung, Kontowiederherstellung, MFA, Benachrichtigungen zur Sicherheit und First Factor können über MCP nicht geändert werden. |

Jeder Schreibvorgang erfordert zwei Aufrufe:

1. Der erste Aufruf ändert nichts. Er liest die aktuellen Einstellungen und gibt eine Vorschau jedes Feldes mit aktuellem und vorgeschlagenem Wert sowie ein `confirmation_token` zurück.
2. Der Assistent zeigt Ihnen die Vorschau. Erst nachdem Sie zugestimmt haben, ruft er das Tool erneut mit exakt denselben Argumenten und dem `confirmation_token` auf. Dann schreibt der Server die Änderung.

Das `confirmation_token` wird vom laufenden Server erzeugt, ist einmal gültig und läuft nach 5 Minuten ab. Es ist an das Tool, die genauen Argumente und die Version der Einstellungen gebunden, die in der Vorschau angezeigt wurde. Ein Token, das mit anderen Argumenten verwendet wird, wird abgelehnt und verbraucht. Wurden die Einstellungen nach der Vorschau geändert, schlägt der Schreibvorgang mit `412` fehl, und Sie beginnen von vorn. Der Server führt höchstens 5 Schreibvorgänge pro Sekunde aus.

Tools, die löschen, widerrufen oder rotieren, werden auch mit `--allow-write` nicht bereitgestellt. Bestätigen Sie jeden Schreibaufruf in Ihrem MCP-Client; stellen Sie den Client nicht so ein, dass Schreib-Tools automatisch genehmigt werden.

## Konfiguration

| Variable | Erforderlich | Beschreibung |
|---|---|---|
| `KEENAUTH_API_KEY` | ja | Management-API-Schlüssel. Verwenden Sie einen Schlüssel mit nur Lesezugriff; mit `--allow-write` fügen Sie nur `environment-settings:write` hinzu. |
| `KEENAUTH_BASE_URL` | ja | Basis-URL der Management-API Ihrer Umgebung. |

`--tools <pattern>` schränkt die Tool-Liste ein, zum Beispiel `--tools "users_*"`. Es kann nur einschränken; es aktiviert nie ein deaktiviertes Tool, und ohne `--allow-write` kann es kein Schreib-Tool aktivieren.

## Was der Assistent sieht

- Personenbezogene Daten sind maskiert: E-Mail-Adressen erscheinen als `a***@e***.com`, Telefonnummern zeigen nur die letzten zwei Ziffern, und Namen zeigen nur den ersten Buchstaben.
- Die `metadata` der Organisation wird nie zurückgegeben: Sie erscheint als `{"redacted": true}`. Mitgliedschaften, Organisationsrollen, Domains und Richtlinien haben in dieser Version kein Tool.
- Umgebungseinstellungen geben nur die dokumentierten Felder zurück. Ein Feld, das der Server später ergänzt, bleibt verborgen, bis es geprüft wurde.
- Geheimnisse werden nie zurückgegeben. Felder, die wie Geheimnisse oder private Schlüssel aussehen, werden entfernt, und die Antwort listet die entfernten Feldpfade in `redacted_fields` auf.
- Jedes Tool-Ergebnis ist in `untrusted_content` eingeschlossen. Behandeln Sie Namen, Metadaten und Beschreibungen darin als Daten, nicht als Anweisungen.
- Der API-Schlüssel erscheint nie in Tool-Ausgaben, Fehlern oder Logs.

## Audit-Trail

Jede Anfrage, die der MCP-Server sendet, trägt `Idp-Client: keenauth-mcp/<version>` und `Idp-Mcp-Tool: <tool name>`. Wenn ein Aufruf etwas ändert, zeichnet der Audit-Log-Eintrag `metadata.client` = `mcp/<version>` und `metadata.mcp_tool` = den Tool-Namen auf, neben dem üblichen Akteur (dem API-Schlüssel oder M2M-Client). Beide Werte werden vom MCP-Server selbst angegeben, nicht verifiziert: Verwenden Sie sie, um nachzuvollziehen, was ein Assistent getan hat, und den Akteur, um die Verantwortung zuzuordnen.

## Tool-Definitionen sind fixiert

Tool-Namen, Beschreibungen und Eingabeschemata werden zur Build-Zeit aus der API-Beschreibung erzeugt und pro Version festgelegt. Ihre SHA-256-Prüfsumme ist in `tools.digest` gespeichert; jede Änderung an einer Tool-Definition ändert die Prüfsumme und erfordert eine Sicherheitsprüfung.
