Skills MCP AD
Überblick
Active Directory MCP ist ein Open-Source-Model Context Protocol-Server, der es KI-Assistenten (Claude, Gemini CLI, ChatGPT über API usw.) ermöglicht, Active-Directory-Umgebungen sicher zu verwalten.
Hauptfunktionen
47 Tools für Benutzer, Gruppen, Computer, OUs, Sicherheit, Audit und 15 MSP-Prompt-Playbooks.
Drei Transports: stdio (
server.py), Streamable HTTP über FastMCP (server_http.py) und Streamable HTTP über FastAPI (server_fastapi.py).Von Natur aus Multi-Tenant-fähig: Jede Instanz bindet sich über
AD_MCP_CONFIGan ihr eigenes AD; dieselbe Codebasis kann unbegrenzt viele Mandanten von einem Host aus bedienen.Schutzmechanismen für Schreiboperationen: Jedes ändernde Tool erfordert entweder eine mandantenspezifische Client-Bestätigungszeichenfolge oder ein Automatisierungs-Bearer-Token, bevor es AD verändert.
Audit-Protokoll für jeden Vorgang: Jeder Aufruf protokolliert Operationsname, Ziel, Modus (CONFIRMED / AUTOMATION / NO_CONFIRMATION_REQUIRED) und Ergebnis.
Namenskonvention
Alle MCP-Toolnamen verwenden das Präfix ad_* mit einem beschreibenden Suffix — z. B. ad_list_users_with_filters, ad_create_user_account, ad_disable_computer_account_trust. Dies vermeidet Kollisionen, wenn dieses MCP neben anderen Servern (GLPI, Hudu usw.) läuft, die mit demselben KI-Client verbunden sind.
Related MCP server: Shell MCP
Multi-Tenant-Architektur
Dieses MCP ist dafür ausgelegt, als ein Prozess pro Mandant zu laufen, wobei alle dieselbe Codebasis verwenden:
.base-code/ <- this repository (shared source of truth)
src/active_directory_mcp/
ad-config/
ad-config.example.json <- template only (real configs are .gitignored)
<deployment>/ <- one directory per tenant, OUTSIDE this repo
tenant-a/
ad-config/ad-config.json <- real credentials (NEVER committed)
start.sh <- exports AD_MCP_CONFIG and launches the server
tenant-b/
ad-config/ad-config.json
start.shJedes start.sh exportiert AD_MCP_CONFIG, das auf die Konfiguration des jeweiligen Mandanten verweist, und führt python -m active_directory_mcp.server_http auf einem dedizierten Port aus. Aktualisieren Sie das gemeinsame .base-code/ einmal, starten Sie alle Mandanten neu — gleicher Code, isolierter Zustand.
Schnellstart
Voraussetzungen
Python 3.11+
LDAP/LDAPS vom Host aus erreichbar
Ein AD-Dienstkonto mit den Berechtigungen, die für die Operationen erforderlich sind, die Sie freigeben möchten
1. Installation
git clone https://github.com/DevSkillsIT/Skills-MCP-Active-Directory.git
cd Skills-MCP-Active-Directory
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# .venv\Scripts\activate # Windows
pip install -e . # installs from pyproject.toml2. Konfiguration
mkdir -p /etc/ad-mcp
cp ad-config/ad-config.example.json /etc/ad-mcp/ad-config.json
$EDITOR /etc/ad-mcp/ad-config.json # set server, bind_dn, password, base_dn, OUs
chmod 600 /etc/ad-mcp/ad-config.jsonDie Beispieldatei ist die einzige Vorlage, die in Git gepflegt wird. Jede echte
ad-config.jsonwird durch.gitignoreblockiert (ad-config/*.json+!ad-config/*.example.json).
3. Ausführen
export AD_MCP_CONFIG=/etc/ad-mcp/ad-config.json
# stdio transport (for direct Claude Desktop / mcp-cli use):
python -m active_directory_mcp.server
# HTTP transport (for Claude Code, Gemini CLI, n8n, etc.):
python -m active_directory_mcp.server_http --host 0.0.0.0 --port 8813 --path /activedirectory-mcp4. Verbindung mit Claude Code
claude mcp add --transport http ad http://localhost:8813/activedirectory-mcp \
--headers "Authorization: Bearer YOUR_AUTOMATION_TOKEN"5. Verbindung mit Gemini CLI
~/.gemini/settings.json:
{
"mcpServers": {
"ad": {
"httpUrl": "http://localhost:8813/activedirectory-mcp",
"headers": { "Authorization": "Bearer YOUR_AUTOMATION_TOKEN" },
"timeout": 30000
}
}
}Tools
Alle Tools verwenden das Präfix ad_*. Als Write markierte Tools erfordern eine Bestätigungszeichenfolge ODER ein Automatisierungs-Bearer-Token.
Mandantenidentifikation (3)
Tool | Operation |
| Mandanteninformationen für diese Instanz zurückgeben (zuerst aufrufen) |
| Alle in der Client-Registry registrierten Clients auflisten |
| Prüfen, ob für einen bestimmten Client-Slug ein AD konfiguriert ist |
Benutzerverwaltung (9)
Tool | Write | Operation |
| — | Benutzer auflisten (optional nach OU/Kriterien gefiltert) |
| — | Benutzerattribute per sAMAccountName abrufen |
| — | Gruppen auflisten, in denen ein Benutzer Mitglied ist |
| ja | Neuen Benutzer erstellen |
| ja | Benutzerattribute ändern |
| ja | Benutzer löschen |
| ja | Benutzerkonto aktivieren |
| ja | Benutzerkonto deaktivieren |
| ja | Passwort zurücksetzen (Änderung bei nächster Anmeldung erzwingen) |
Gruppenverwaltung (8)
Tool | Write | Operation |
| — | Gruppen auflisten |
| — | Gruppenattribute abrufen |
| — | Mitglieder auflisten, optional rekursiv |
| ja | Sicherheits- oder Verteilergruppe erstellen |
| ja | Gruppenattribute ändern |
| ja | Gruppe löschen |
| ja | Mitglied hinzufügen |
| ja | Mitglied entfernen |
Computerverwaltung (8)
Tool | Write | Operation |
| — | Computer auflisten |
| — | Computerattribute abrufen |
| — | Computer auflisten, die N+ Tage inaktiv sind |
| ja | Computerobjekt erstellen |
| ja | Computerattribute ändern |
| ja | Computerobjekt löschen |
| ja | Computerkonto aktivieren |
| ja | Computerkonto deaktivieren |
| ja | Passwort des sicheren Kanals des Computers zurücksetzen |
Verwaltung von Organisationseinheiten (7)
Tool | Write | Operation |
| — | OUs auflisten (rekursive Option) |
| — | OU-Attribute abrufen |
| — | Objekte innerhalb einer OU auflisten |
| ja | OU erstellen |
| ja | OU ändern |
| ja | OU löschen (force=true zum Löschen nicht-leerer OUs) |
| ja | OU zu einem neuen übergeordneten Element verschieben |
Sicherheit & Audit (6)
Tool | Operation |
| Domäneninformationen + Kennwort-/Sperrrichtlinie |
| Privilegierte Gruppen auflisten (Domain Admins, Enterprise Admins usw.) |
| Effektive Berechtigungen für einen Benutzer anzeigen |
| Benutzer ohne Anmeldung seit N+ Tagen |
| Konten, die gegen die Kennwortrichtlinie verstoßen |
| Hygiene privilegierter Konten prüfen |
MSP-Prompts (2 Tools + 15 Prompts)
Tool | Operation |
| Die 15 professionellen MSP-Playbooks auflisten (Manager & Analyst) |
| Ein benanntes Playbook mit Argumenten ausführen |
Die vollständige Prompt-Übersicht finden Sie in PROMPTS.md (Sicherheitsaudit, Onboarding, Offboarding, Passwort-Reset-Playbook usw.).
System (4)
Tool | Operation |
| LDAP-Konnektivitätstest |
| Vollständiger Health-Check (Server + LDAP-Suchtests + Statistiken) |
| Selbstbeschreibendes Schema aller registrierten Tools |
Konfiguration
Der Pfad zur Laufzeitkonfigurationsdatei wird über die Umgebungsvariable AD_MCP_CONFIG bereitgestellt. Schema in ad-config/ad-config.example.json.
Wichtige Felder
Feld | Erforderlich | Beschreibung |
| ja | Primäre LDAP-URL, z. B. |
| nein | Zusätzliche LDAP-URLs für Failover |
| ja | Vollständiger DN des Dienstkontos |
| ja | Passwort des Dienstkontos (Datei bei |
| ja | Basis-DN, z. B. |
| ja | Standard-OUs für Benutzer/Gruppen/Computer/Dienstkonten |
| nein | StartTLS / LDAPS erzwingen |
| nein | Serverzertifikat gegen |
| nein | Bind über Klartext verweigern |
| nein | Bearer-Token für unbeaufsichtigte Schreiboperationen |
| nein | Mandantenkennung, die von |
Berechtigungen für Dienstkonten
Gewähren Sie dem Bind-Konto die minimalen delegierten Rechte, die für die von Ihnen beabsichtigten Operationen erforderlich sind:
Nur-Lese-Bereitstellungen: „Alle Eigenschaften lesen" + „Inhalte auflisten" auf der Domänenwurzel reicht aus.
Benutzer/Gruppen-Schreiben: Delegieren Sie „Objekte erstellen/löschen" + „Alle Eigenschaften schreiben" auf den Ziel-OUs.
Passwort zurücksetzen: Delegieren Sie das erweiterte Recht „Passwort zurücksetzen" auf den Ziel-OUs.
Computer beitreten/verlassen: Delegieren Sie „Computerobjekte erstellen/löschen" auf der Computer-OU.
Verwenden Sie immer ein dediziertes Dienstkonto, LDAPS in der Produktion und rotieren Sie das Passwort regelmäßig.
Sicherheit
Schreibschutzmodell
Jedes mutierende Tool (ad_create_*, ad_modify_*, ad_delete_*, ad_enable_*, ad_disable_*, ad_reset_*, ad_add_*, ad_remove_*, ad_move_*) ruft check_write_permission() auf, bevor es LDAP erreicht. Es akzeptiert den Schreibvorgang, wenn eines der folgenden zutrifft:
automation_tokenstimmt mitautomation.tokenin der Konfiguration überein – für CI / geplante Jobs vorgesehen.client_confirmationstimmt mit dem Mandanten-Slug überein – der KI-Assistent muss zuerstad_get_client_tenant_infoaufrufen, den Slug dem Benutzer vorlesen und genau diese Zeichenfolge übergeben.Der Mandant hat
require_confirmation_for_writes: false(expliziter Opt-out, nicht empfohlen).
Wenn keine der oben genannten Bedingungen erfüllt ist, wird der Aufruf mit einer permitted: false-Meldung abgebrochen und der LDAP-Schreibvorgang wird nie versucht.
Audit-Protokollierung
Alle Operationen schreiben eine strukturierte Protokollzeile mit: Zeitstempel, Tool-Name, Ziel, Bestätigungsmodus (AUTOMATION / CONFIRMED / WRONG_CONFIRMATION / NO_CONFIRMATION_REQUIRED) und Erfolg/Fehler. Die Protokolle gehen dorthin, wo logging.file zeigt.
Geheimnis-Hygiene
Echte
ad-config.json-Dateien sind git-ignoriert. Nur*.example.jsonwird verfolgt.Fügen Sie niemals eine Konfiguration mit einem echten
passwordoderautomation.tokenin einen Chat ein, der von Dritten protokolliert oder transkribiert wird.Rotieren Sie
automation.tokenbei jeder Neugenerierung; behandeln Sie es als privilegierte Anmeldeinformation.
Testen
# Unit + integration tests
pytest tests/ -v
# Coverage
pytest --cov=src --cov-report=term-missing
# Lint
ruff check .Ein gebündeltes docker-compose-ad.yml startet einen Samba-AD-Container unter 192.168.1.100 sowie einen MCP-Container, sodass die Integrationstests gegen ein echtes LDAP-Backend laufen können, ohne die Produktion zu berühren.
Fehlerbehebung
Symptom | Wahrscheinliche Ursache | Behebung |
| falsches | Überprüfen mit |
| Dienstkonto fehlen delegierte Rechte | Erneut auf der Ziel-OU delegieren |
| selbstsigniertes Zertifikat ohne Vertrauen |
|
| Fehlende Bestätigung/Token | Zuerst |
| Socket offen, aber LDAP-Suche fehlgeschlagen | Dienstkonto-Sperrung / Replikation / Netzwerk-ACLs prüfen |
Mitwirken
Forken Sie das Repository.
Erstellen Sie einen Feature-Branch:
git checkout -b feat/your-feature.Führen Sie Tests aus:
pytest.Öffnen Sie einen PR mit einer klaren Beschreibung und einem Link zum relevanten Issue.
Commits folgen Conventional Commits.
Lizenz
MIT – siehe LICENSE.
Danksagungen
Basierend auf dem Upstream-Projekt
alpadalar/ActiveDirectoryMCPvon Alperen Adalar.
Support
Fehlerberichte: GitHub Issues
Diskussionen: GitHub Discussions
This server cannot be installed
Maintenance
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
- -licenseNot gradedqualityNot gradedmaintenanceA comprehensive production-ready MCP server with AI integration, plugin management, and web-based administration. Features multi-database support, RAG capabilities, SSH/SFTP access, and a built-in plugin hub for managing the MCP ecosystem.
- AlicenseAqualityDmaintenanceA production-ready MCP server that enables AI assistants to execute shell commands, manage files, monitor system resources, and automate complex workflows with advanced features like stock tracking and web automation.732MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI-powered assessment of Active Directory on-premises environments by exposing AD data as queryable tools for LLMs like Claude.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to manage, monitor, and diagnose Windows systems through 42 tools across 8 modules, including services, event viewer, task scheduler, processes, network, diagnostics, observability, and safety features.328MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/DevSkillsIT/Skills-MCP-Active-Directory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server