Synit AD MCP
Einführung
Einstieg in Synit AD MCP: sichere read-only AD-Abfragen, Schema-Kontext, Service-Desk-Use-Cases und optionale Drafts für ADProxy-Pläne.
Einführung
Synit AD MCP stellt Kontext aus Enterprise Active Directory (AD) für AI-Agenten, Service-Desk-Tools und Automationen bereit. Die Schnittstelle ist bewusst read-only. Sie kann Active Directory lesen, Schema verstehen und optional Request-Entwürfe vorbereiten, aber keine Active-Directory-Änderungen ausführen.
Schreibende Änderungen bleiben im ADProxy HTTP-Kontrollpfad mit Plan, Review, Apply, Verifikation und Audit.
Wofür AD MCP eingesetzt wird
- Benutzer oder Gruppen strukturiert suchen.
- Gruppenmitgliedschaften analysieren.
- Einzelne Active-Directory-Objekte lesen.
- Active-Directory-Schema und Attribute verstehen.
- Objektidentitäten für spätere ADProxy-Pläne auflösen.
- Optional Request-Entwürfe für den HTTP-Plan-Endpunkt vorbereiten.
Verfügbarkeit und sicherer Start
Synit AD MCP ist als separate Container-Laufzeit geplant. Eine freie Container-Variante ist für Evaluation, Laborumgebungen und kleine Piloten vorgesehen. Die konkrete Registry-URL, Funktionsgrenzen und Lizenzbedingungen werden in den Lizenzhinweisen ergänzt, sobald der öffentliche Lieferweg final ist.
MCP bleibt im Standardpfad read-only. Ohne Testlauf in einer passenden Test- oder Pilotumgebung gibt synit.io keine Zusicherung, dass Query-Policy, Redaction oder Agenten-Integration für eine konkrete Active-Directory-Umgebung geeignet sind.
Warum die Schnittstelle read-only bleibt
- Active Directory ist ein kritischer Identitätskern.
- Agenten können hilfreich sein, wenn sie Kontext sammeln und Vorschläge vorbereiten.
- Sie sollten aber nicht direkt schreiben.
AD MCP trennt deshalb:
- Recherche: über MCP, read-only und redigiert.
- Änderung: über ADProxy HTTP, geprüft und auditierbar.
Geeignete erste Anwendungsfälle
Service-Desk-Recherche
Ein Tool fragt Benutzerstatus, Gruppenmitgliedschaften oder Objektinformationen ab, damit Tickets schneller eingeordnet werden können.
IAM-Vorbereitung
Ein Agent sammelt Active-Directory-Kontext für ein Onboarding, Offboarding oder eine Gruppenänderung, bevor ein ADProxy-Plan erstellt wird.
Schema Discovery
Integrationen prüfen, welche Objektklassen, Attribute und Operationen gültig sind.
Request-Draft für ADProxy
Wenn aktiviert, kann MCP einen strukturierten Body für POST /api/v1/mutations/plan vorbereiten. Dieser Body muss außerhalb von MCP an ADProxy HTTP übergeben und dort geprüft werden.
Use-Case: Agenten-Dialog im Service Desk
Das folgende Beispiel ist fiktiv und nutzt .example.test Werte. Es zeigt, wie ein AI-Agent mit read-only MCP-Zugriff Active-Directory-Kontext sammelt, Folgefragen beantwortet und am Ende einen ADProxy-Entwurf vorbereitet. MCP schreibt dabei nicht in Active Directory.
Service Desk:
Prüfe bitte den Benutzer jane.doe@example.test. Ich brauche Name, Account-Status und die wichtigsten Gruppen.
AI-Agent:
Ich suche den Benutzer über die Mailadresse und lese danach das Objekt sowie die Gruppenmitgliedschaften.
Verwendete MCP-Werkzeuge:
search_user_by_mailget_objectget_group_membership
Ergebnis:
- Benutzer: Jane Doe
sAMAccountName:jdoe- DN:
CN=Jane Doe,OU=Users,DC=example,DC=test - Mail:
jane.doe@example.test - Account wirkt aktiv, soweit die freigegebenen Attribute das zeigen.
- Sichtbare Gruppen:
CN=Engineering Users,OU=Groups,DC=example,DC=testCN=VPN Users,OU=Groups,DC=example,DC=testCN=Project Atlas,OU=Groups,DC=example,DC=test
Redigierte oder gesperrte Attribute wurden nicht ausgegeben.
Service Desk:
Wann war der letzte bekannte Logon? Und ist sie in einer Admin-Gruppe?
AI-Agent:
Ich lese die freigegebenen Logon-Attribute und prüfe die Gruppen rekursiv.
Verwendete MCP-Werkzeuge:
get_objectget_group_membership- optional
list_group_membersfür konkrete Gruppen
Ergebnis:
lastLogonTimestamp:2026-07-01T07:42:18ZlastLogon: nicht freigegeben oder nicht sichtbar im aktuellen Attributsatz- Keine sichtbare Mitgliedschaft in
Domain Admins,Enterprise Adminsoder einer freigegebenen Admin-Gruppe. - Hinweis:
lastLogonTimestampist repliziert und kann verzögert sein. Für forensische Prüfungen sollte ein AD-Admin die Domain-Controller-spezifischen Werte prüfen.
Service Desk:
Der Benutzer soll aus VPN Users entfernt werden. Kannst du das vorbereiten?
AI-Agent:
Ich kann keinen Schreibvorgang ausführen. Ich kann aber einen ADProxy Mutation-Draft vorbereiten, der außerhalb von MCP geprüft und manuell an den ADProxy Plan-Endpunkt übergeben wird.
Verwendete MCP-Werkzeuge:
lookup_objectdraft_mutation_request
Entwurf:
{
"method": "POST",
"path": "/api/v1/mutations/plan",
"executes": false,
"plan_created": false,
"requires_user_submission": true,
"body": {
"source": "mcp-draft",
"response_detail": "standard",
"operations": [
{
"id": "remove_vpn_membership",
"operation_type": "remove_group_member",
"target": {
"dn": "CN=VPN Users,OU=Groups,DC=example,DC=test"
},
"object_class": "group",
"member_dn": "CN=Jane Doe,OU=Users,DC=example,DC=test"
}
]
},
"next_step": "Submit body to ADProxy POST /api/v1/mutations/plan outside MCP, review the plan, then apply only through the approved ADProxy HTTP flow."
}
Service Desk:
Warum nicht direkt anwenden?
AI-Agent:
MCP ist read-only. Der Entwurf ist nur Vorbereitung. Ein Mensch oder eine freigegebene Automation muss den Body an ADProxy HTTP übergeben, den Plan prüfen und danach bewusst Apply auslösen. So bleiben Review, Verifikation, Journal und Audit im ADProxy-Kontrollpfad.
Schnellstart für einen read-only Pilot
Dieser Ablauf startet MCP read-only für eine erste kontrollierte Abfrage. Schreibende Vorgänge bleiben außerhalb von MCP.
1. Werte vorbereiten
- AD-Domain, zum Beispiel
example.test - Domain Controller, zum Beispiel
dc1.example.test - read-only Servicekonto
- Pilot-OU, zum Beispiel
OU=Users,DC=example,DC=test - MCP Bearer Token
2. Minimale Konfiguration anlegen
directory {
domain = "example.test"
bind_url = "ldaps://dc1.example.test"
bind_dn = "CN=svc-adproxy-read,OU=Service Accounts,DC=example,DC=test"
bind_password_ref = "env:AD_MCP_BIND_PASSWORD"
hosts = ["dc1.example.test"]
timeout = "30s"
}
query_policy {
allowed_base_dns = ["OU=Users,DC=example,DC=test"]
allowed_attrs = ["cn", "mail", "sAMAccountName", "memberOf"]
denied_attrs = ["unicodePwd", "ntSecurityDescriptor"]
allow_raw_filters = false
}
mcp {
enabled = true
transport = "streamable-http"
listen_addr = "0.0.0.0:8768"
auth_token = "<mcp-bearer-token>"
rate_limit_rps = 10
rate_limit_burst = 20
}
3. Starten
export AD_MCP_BIND_PASSWORD='<ad-read-password>'
docker run --rm \
-p 8768:8768 \
-e AD_MCP_BIND_PASSWORD \
-v "$(pwd)/admcp.hcl:/etc/adproxy/admcp.hcl:ro" \
--name synit-ad-mcp \
<container-image> \
adproxy-mcp -config /etc/adproxy/admcp.hcl
4. Session initialisieren
curl -sS -i -X POST http://127.0.0.1:8768/mcp \
-H "Authorization: Bearer <mcp-bearer-token>" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": {},
"clientInfo": {
"name": "pilot-client",
"version": "1.0"
}
}
}'
Merken Sie sich den Header Mcp-Session-Id.
5. Session bereit melden
curl -sS -X POST http://127.0.0.1:8768/mcp \
-H "Authorization: Bearer <mcp-bearer-token>" \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: <session-id>" \
-d '{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}'
6. Erstes Tool aufrufen
curl -sS -X POST http://127.0.0.1:8768/mcp \
-H "Authorization: Bearer <mcp-bearer-token>" \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: <session-id>" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "search_user_by_sam",
"arguments": {
"sam_account_name": "jdoe"
}
}
}'
Wenn dieser Call funktioniert, prüfen Sie Audit, Redaction und Query-Policy, bevor Sie weitere Tools oder Agenten anbinden.