Skip to main content
Glama

Acerca de

Active Directory MCP es un servidor de Model Context Protocol de código abierto que permite a los asistentes de IA (Claude, Gemini CLI, ChatGPT vía API, etc.) gestionar entornos de Active Directory de forma segura.

Características principales

  • 47 herramientas que cubren usuarios, grupos, equipos, UO, seguridad, auditoría y 15 playbooks de prompts para MSP.

  • Tres transportes: stdio (server.py), HTTP Streamable vía FastMCP (server_http.py) y HTTP Streamable vía FastAPI (server_fastapi.py).

  • Multiinquilino por diseño: cada instancia se vincula a su propio AD mediante AD_MCP_CONFIG; el mismo código base puede atender a un número ilimitado de inquilinos desde un único host.

  • Protecciones para operaciones de escritura: cada herramienta de mutación requiere una cadena de confirmación del cliente por inquilino o un token Bearer de automatización antes de tocar AD.

  • Registro de auditoría en cada operación: cada llamada registra el nombre de la operación, el objetivo, el modo (CONFIRMED / AUTOMATION / NO_CONFIRMATION_REQUIRED) y el resultado.

Convención de nombres

Todos los nombres de herramientas MCP usan el prefijo ad_* con un sufijo descriptivo — p. ej. ad_list_users_with_filters, ad_create_user_account, ad_disable_computer_account_trust. Esto evita colisiones cuando este MCP se ejecuta junto a otros servidores (GLPI, Hudu, etc.) conectados al mismo cliente de IA.


Related MCP server: Shell MCP

Arquitectura multiinquilino

Este MCP está diseñado para ejecutarse como un proceso por inquilino, compartiendo todos el mismo código:

.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

Cada start.sh exporta AD_MCP_CONFIG apuntando a la configuración de ese inquilino y ejecuta python -m active_directory_mcp.server_http en un puerto dedicado. Actualiza el .base-code/ compartido una vez, reinicia todos los inquilinos — mismo código, estado aislado.


Inicio rápido

Requisitos previos

  • Python 3.11+

  • LDAP/LDAPS accesible desde el host

  • Una cuenta de servicio de AD con los permisos requeridos por las operaciones que planeas exponer

1. Instalación

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. Configuración

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

El archivo de ejemplo es la única plantilla mantenida en git. Cualquier ad-config.json real está bloqueado por .gitignore (ad-config/*.json + !ad-config/*.example.json).

3. Ejecución

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. Conexión desde Claude Code

claude mcp add --transport http ad http://localhost:8813/activedirectory-mcp \
  --headers "Authorization: Bearer YOUR_AUTOMATION_TOKEN"

5. Conexión desde Gemini CLI

~/.gemini/settings.json:

{
  "mcpServers": {
    "ad": {
      "httpUrl": "http://localhost:8813/activedirectory-mcp",
      "headers": { "Authorization": "Bearer YOUR_AUTOMATION_TOKEN" },
      "timeout": 30000
    }
  }
}

Herramientas

Todas las herramientas usan el prefijo ad_*. Las herramientas marcadas como Escritura requieren una cadena de confirmación O un token Bearer de automatización.

Identificación de inquilino (3)

Herramienta

Operación

ad_get_client_tenant_info

Devuelve la información del inquilino para esta instancia (llamar primero)

ad_list_configured_clients

Lista todos los clientes registrados en el registro de clientes

ad_check_client_configuration

Comprueba si un slug de cliente determinado tiene un AD configurado

Gestión de usuarios (9)

Herramienta

Escritura

Operación

ad_list_users_with_filters

Lista usuarios (opcionalmente filtrados por UO/criterios)

ad_get_user_details_by_username

Obtiene atributos de usuario por sAMAccountName

ad_get_user_group_memberships

Lista los grupos de los que un usuario es miembro

ad_create_user_account

Crea un nuevo usuario

ad_modify_user_attributes

Modifica atributos de usuario

ad_delete_user_account_permanently

Elimina un usuario

ad_enable_user_account_access

Habilita la cuenta de usuario

ad_disable_user_account_access

Deshabilita la cuenta de usuario

ad_reset_user_password_forced

Restablece la contraseña (cambio forzado en el próximo inicio de sesión)

Gestión de grupos (8)

Herramienta

Escritura

Operación

ad_list_groups_with_filters

Lista grupos

ad_get_group_details_by_name

Obtiene atributos de grupo

ad_get_group_members_recursive

Lista miembros, opcionalmente recursivo

ad_create_group_security_or_distribution

Crea grupo de seguridad o distribución

ad_modify_group_attributes

Modifica atributos de grupo

ad_delete_group_permanently

Elimina un grupo

ad_add_member_to_group

Añade miembro

ad_remove_member_from_group

Elimina miembro

Gestión de equipos (8)

Herramienta

Escritura

Operación

ad_list_computers_with_filters

Lista equipos

ad_get_computer_details_by_name

Obtiene atributos de equipo

ad_get_inactive_computers_by_days

Lista equipos inactivos durante N+ días

ad_create_computer_account

Crea objeto de equipo

ad_modify_computer_attributes

Modifica atributos de equipo

ad_delete_computer_account_permanently

Elimina objeto de equipo

ad_enable_computer_account_trust

Habilita la cuenta de equipo

ad_disable_computer_account_trust

Deshabilita la cuenta de equipo

ad_reset_computer_password_trust

Restablece la contraseña del canal seguro del equipo

Gestión de unidades organizativas (7)

Herramienta

Escritura

Operación

ad_list_organizational_units_hierarchy

Lista UO (opción recursiva)

ad_get_organizational_unit_details

Obtiene atributos de UO

ad_get_organizational_unit_objects

Lista objetos dentro de una UO

ad_create_organizational_unit

Crea UO

ad_modify_organizational_unit_attributes

Modifica UO

ad_delete_organizational_unit_forced

Elimina UO (force=true para eliminar no vacía)

ad_move_organizational_unit_parent

Mueve UO a un nuevo padre

Seguridad y auditoría (6)

Herramienta

Operación

ad_get_domain_security_policy_info

Información del dominio + política de contraseñas/bloqueo

ad_get_privileged_security_groups

Lista grupos privilegiados (Domain Admins, Enterprise Admins, etc.)

ad_get_user_effective_permissions

Muestra permisos efectivos para un usuario

ad_get_inactive_users_by_days

Usuarios sin inicio de sesión durante N+ días

ad_get_password_policy_violations

Cuentas que violan la política de contraseñas

ad_audit_administrative_accounts

Audita la higiene de cuentas privilegiadas

Prompts MSP (2 herramientas + 15 prompts)

Herramienta

Operación

ad_list_msp_prompts

Lista los 15 playbooks profesionales de MSP (gestor y analista)

ad_execute_msp_prompt

Ejecuta un playbook nombrado con argumentos

Consulta PROMPTS.md para el catálogo completo de prompts (auditoría de seguridad, incorporación, baja, playbook de restablecimiento de contraseña, etc.).

Sistema (4)

Herramienta

Operación

ad_test_ldap_connection_status

Sonda de conectividad LDAP

ad_health_check_mcp_server

Comprobación de salud completa (servidor + prueba de búsqueda LDAP + estadísticas)

ad_get_mcp_schema_tools_info

Esquema autodescriptivo de todas las herramientas registradas


Configuración

La ruta del archivo de configuración en tiempo de ejecución se proporciona mediante la variable de entorno AD_MCP_CONFIG. Esquema en ad-config/ad-config.example.json.

Campos clave

Campo

Requerido

Descripción

active_directory.server

URL LDAP principal, p. ej. ldaps://dc.example.com:636

active_directory.server_pool

no

URLs LDAP adicionales para conmutación por error

active_directory.bind_dn

DN completo de la cuenta de servicio

active_directory.password

Contraseña de la cuenta de servicio (mantener archivo en chmod 600)

active_directory.base_dn

DN base, p. ej. DC=example,DC=com

organizational_units.*

UO predeterminadas para usuarios/grupos/equipos/cuentas de servicio

security.enable_tls

no

Forzar StartTLS / LDAPS

security.validate_certificate

no

Verificar el certificado del servidor contra ca_cert_file

security.require_secure_connection

no

Rechazar enlace sobre texto plano

automation.token

no

Token Bearer para operaciones de escritura desatendidas

client.slug

no

Identificador de inquilino reportado por ad_get_client_tenant_info

Permisos de la cuenta de servicio

Conceda a la cuenta de enlace los derechos delegados mínimos requeridos por las operaciones que desee exponer:

  • Implementaciones de solo lectura: "Leer todas las propiedades" + "Listar contenido" en la raíz del dominio es suficiente.

  • Escritura de usuarios/grupos: delegue "Crear/Eliminar objetos" + "Escribir todas las propiedades" en las UO objetivo.

  • Restablecimiento de contraseña: delegue el derecho extendido "Restablecer contraseña" en las UO objetivo.

  • Unión/salida de equipos: delegue "Crear/Eliminar objetos de equipo" en la UO de equipos.

Utilice siempre una cuenta de servicio dedicada, LDAPS en producción y rote la contraseña regularmente.


Seguridad

Modelo de protección de escritura

Cada herramienta de mutación (ad_create_*, ad_modify_*, ad_delete_*, ad_enable_*, ad_disable_*, ad_reset_*, ad_add_*, ad_remove_*, ad_move_*) llama a check_write_permission() antes de llegar a LDAP. Acepta la escritura si una de:

  1. automation_token coincide con automation.token en la configuración — destinado a CI / trabajos programados.

  2. client_confirmation coincide con el slug del inquilino — el asistente de IA debe llamar primero a ad_get_client_tenant_info, leer el slug de vuelta al usuario y pasar esa cadena exacta.

  3. El inquilino tiene require_confirmation_for_writes: false (opt-out explícito, no recomendado).

Si ninguna de las anteriores se cumple, la llamada se cortocircuita con un mensaje permitted: false y la escritura LDAP nunca se intenta.

Registro de auditoría

Todas las operaciones escriben una línea de registro estructurada que incluye: marca de tiempo, nombre de la herramienta, objetivo, modo de confirmación (AUTOMATION / CONFIRMED / WRONG_CONFIRMATION / NO_CONFIRMATION_REQUIRED) y éxito/fracaso. Los registros van donde apunte logging.file.

Higiene de secretos

  • Los archivos ad-config.json reales están ignorados por git. Solo se rastrea *.example.json.

  • Nunca pegue una configuración que contenga una password o automation.token reales en un chat que sea registrado o transcrito por un tercero.

  • Rote automation.token cada vez que lo regenere; trátelo como una credencial privilegiada.


Pruebas

# Unit + integration tests
pytest tests/ -v

# Coverage
pytest --cov=src --cov-report=term-missing

# Lint
ruff check .

Un docker-compose-ad.yml incluido levanta un contenedor Samba AD en 192.168.1.100 más un contenedor MCP para que las pruebas de integración puedan ejecutarse contra un backend LDAP real sin tocar producción.


Solución de problemas

Síntoma

Causa probable

Solución

LDAP bind failed

bind_dn / password incorrectos

Verifique con ldapsearch -H <servidor> -D '<bind_dn>' -W

Insufficient permissions

la cuenta de servicio carece de derechos delegados

Re-delegue en la UO objetivo

Certificate verification failed

certificado autofirmado sin confianza

Establezca ca_cert_file o validate_certificate: false (solo prueba)

permitted: false en cada escritura

Falta confirmación/token

Llame primero a ad_get_client_tenant_info, o pase automation_token

Health degraded

socket abierto pero la búsqueda LDAP falló

Compruebe bloqueo de cuenta de servicio / replicación / ACL de red


Contribuciones

  1. Haga un fork del repositorio.

  2. Cree una rama de características: git checkout -b feat/your-feature.

  3. Ejecute las pruebas: pytest.

  4. Abra un PR con una descripción clara y un enlace al problema relevante.

Los commits siguen Conventional Commits.


Licencia

MIT — consulte LICENSE.

Agradecimientos

Soporte

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
  • 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
    32
    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.
    32
    8
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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