Skip to main content
Glama

Ü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_CONFIG an 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.sh

Jedes 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.toml

2. 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.json

Die Beispieldatei ist die einzige Vorlage, die in Git gepflegt wird. Jede echte ad-config.json wird durch .gitignore blockiert (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-mcp

4. 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

ad_get_client_tenant_info

Mandanteninformationen für diese Instanz zurückgeben (zuerst aufrufen)

ad_list_configured_clients

Alle in der Client-Registry registrierten Clients auflisten

ad_check_client_configuration

Prüfen, ob für einen bestimmten Client-Slug ein AD konfiguriert ist

Benutzerverwaltung (9)

Tool

Write

Operation

ad_list_users_with_filters

—

Benutzer auflisten (optional nach OU/Kriterien gefiltert)

ad_get_user_details_by_username

—

Benutzerattribute per sAMAccountName abrufen

ad_get_user_group_memberships

—

Gruppen auflisten, in denen ein Benutzer Mitglied ist

ad_create_user_account

ja

Neuen Benutzer erstellen

ad_modify_user_attributes

ja

Benutzerattribute ändern

ad_delete_user_account_permanently

ja

Benutzer löschen

ad_enable_user_account_access

ja

Benutzerkonto aktivieren

ad_disable_user_account_access

ja

Benutzerkonto deaktivieren

ad_reset_user_password_forced

ja

Passwort zurücksetzen (Änderung bei nächster Anmeldung erzwingen)

Gruppenverwaltung (8)

Tool

Write

Operation

ad_list_groups_with_filters

—

Gruppen auflisten

ad_get_group_details_by_name

—

Gruppenattribute abrufen

ad_get_group_members_recursive

—

Mitglieder auflisten, optional rekursiv

ad_create_group_security_or_distribution

ja

Sicherheits- oder Verteilergruppe erstellen

ad_modify_group_attributes

ja

Gruppenattribute ändern

ad_delete_group_permanently

ja

Gruppe löschen

ad_add_member_to_group

ja

Mitglied hinzufügen

ad_remove_member_from_group

ja

Mitglied entfernen

Computerverwaltung (8)

Tool

Write

Operation

ad_list_computers_with_filters

—

Computer auflisten

ad_get_computer_details_by_name

—

Computerattribute abrufen

ad_get_inactive_computers_by_days

—

Computer auflisten, die N+ Tage inaktiv sind

ad_create_computer_account

ja

Computerobjekt erstellen

ad_modify_computer_attributes

ja

Computerattribute ändern

ad_delete_computer_account_permanently

ja

Computerobjekt löschen

ad_enable_computer_account_trust

ja

Computerkonto aktivieren

ad_disable_computer_account_trust

ja

Computerkonto deaktivieren

ad_reset_computer_password_trust

ja

Passwort des sicheren Kanals des Computers zurücksetzen

Verwaltung von Organisationseinheiten (7)

Tool

Write

Operation

ad_list_organizational_units_hierarchy

—

OUs auflisten (rekursive Option)

ad_get_organizational_unit_details

—

OU-Attribute abrufen

ad_get_organizational_unit_objects

—

Objekte innerhalb einer OU auflisten

ad_create_organizational_unit

ja

OU erstellen

ad_modify_organizational_unit_attributes

ja

OU ändern

ad_delete_organizational_unit_forced

ja

OU löschen (force=true zum Löschen nicht-leerer OUs)

ad_move_organizational_unit_parent

ja

OU zu einem neuen übergeordneten Element verschieben

Sicherheit & Audit (6)

Tool

Operation

ad_get_domain_security_policy_info

Domäneninformationen + Kennwort-/Sperrrichtlinie

ad_get_privileged_security_groups

Privilegierte Gruppen auflisten (Domain Admins, Enterprise Admins usw.)

ad_get_user_effective_permissions

Effektive Berechtigungen für einen Benutzer anzeigen

ad_get_inactive_users_by_days

Benutzer ohne Anmeldung seit N+ Tagen

ad_get_password_policy_violations

Konten, die gegen die Kennwortrichtlinie verstoßen

ad_audit_administrative_accounts

Hygiene privilegierter Konten prüfen

MSP-Prompts (2 Tools + 15 Prompts)

Tool

Operation

ad_list_msp_prompts

Die 15 professionellen MSP-Playbooks auflisten (Manager & Analyst)

ad_execute_msp_prompt

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

ad_test_ldap_connection_status

LDAP-Konnektivitätstest

ad_health_check_mcp_server

Vollständiger Health-Check (Server + LDAP-Suchtests + Statistiken)

ad_get_mcp_schema_tools_info

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

active_directory.server

ja

Primäre LDAP-URL, z. B. ldaps://dc.example.com:636

active_directory.server_pool

nein

Zusätzliche LDAP-URLs für Failover

active_directory.bind_dn

ja

Vollständiger DN des Dienstkontos

active_directory.password

ja

Passwort des Dienstkontos (Datei bei chmod 600 aufbewahren)

active_directory.base_dn

ja

Basis-DN, z. B. DC=example,DC=com

organizational_units.*

ja

Standard-OUs für Benutzer/Gruppen/Computer/Dienstkonten

security.enable_tls

nein

StartTLS / LDAPS erzwingen

security.validate_certificate

nein

Serverzertifikat gegen ca_cert_file verifizieren

security.require_secure_connection

nein

Bind über Klartext verweigern

automation.token

nein

Bearer-Token für unbeaufsichtigte Schreiboperationen

client.slug

nein

Mandantenkennung, die von ad_get_client_tenant_info gemeldet wird

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:

  1. automation_token stimmt mit automation.token in der Konfiguration überein – für CI / geplante Jobs vorgesehen.

  2. client_confirmation stimmt mit dem Mandanten-Slug überein – der KI-Assistent muss zuerst ad_get_client_tenant_info aufrufen, den Slug dem Benutzer vorlesen und genau diese Zeichenfolge übergeben.

  3. 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.json wird verfolgt.

  • Fügen Sie niemals eine Konfiguration mit einem echten password oder automation.token in einen Chat ein, der von Dritten protokolliert oder transkribiert wird.

  • Rotieren Sie automation.token bei 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

LDAP bind failed

falsches bind_dn / password

Überprüfen mit ldapsearch -H <server> -D '<bind_dn>' -W

Insufficient permissions

Dienstkonto fehlen delegierte Rechte

Erneut auf der Ziel-OU delegieren

Certificate verification failed

selbstsigniertes Zertifikat ohne Vertrauen

ca_cert_file setzen oder validate_certificate: false (nur Test)

permitted: false bei jedem Schreibvorgang

Fehlende Bestätigung/Token

Zuerst ad_get_client_tenant_info aufrufen oder automation_token übergeben

Health degraded

Socket offen, aber LDAP-Suche fehlgeschlagen

Dienstkonto-Sperrung / Replikation / Netzwerk-ACLs prüfen


Mitwirken

  1. Forken Sie das Repository.

  2. Erstellen Sie einen Feature-Branch: git checkout -b feat/your-feature.

  3. Führen Sie Tests aus: pytest.

  4. Öffnen Sie einen PR mit einer klaren Beschreibung und einem Link zum relevanten Issue.

Commits folgen Conventional Commits.


Lizenz

MIT – siehe LICENSE.

Danksagungen

Support

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    A comprehensive MCP server for managing Active Directory environments through LDAP, enabling user, group, computer, and OU management, as well as security auditing and policy compliance checks.
    45
    51
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    7
    12 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server that enables AI-powered assessment of Active Directory on-premises environments by exposing AD data as queryable tools for LLMs like Claude.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    19 npm
    9
    MIT