Skip to main content
Glama

О проекте

Active Directory MCP — это сервер с открытым исходным кодом, реализующий Model Context Protocol, который позволяет ИИ-ассистентам (Claude, Gemini CLI, ChatGPT через API и др.) безопасно управлять средами Active Directory.

Ключевые возможности

  • 47 инструментов, покрывающих пользователей, группы, компьютеры, OU, безопасность, аудит и 15 плейбуков для MSP-провайдеров.

  • Три транспорта: stdio (server.py), Streamable HTTP через FastMCP (server_http.py) и Streamable HTTP через FastAPI (server_fastapi.py).

  • Мультитенантность из коробки: каждый экземпляр привязан к своему AD через AD_MCP_CONFIG; одна и та же кодовая база может обслуживать неограниченное число тенантов с одного хоста.

  • Защита операций записи: каждый изменяющий инструмент требует либо строку подтверждения клиента для конкретного тенанта, либо Bearer-токен автоматизации перед обращением к AD.

  • Журнал аудита для каждой операции: каждый вызов фиксирует имя операции, цель, режим (CONFIRMED / AUTOMATION / NO_CONFIRMATION_REQUIRED) и результат.

Соглашение об именовании

Все имена инструментов MCP используют префикс ad_* с описательным суффиксом — например, ad_list_users_with_filters, ad_create_user_account, ad_disable_computer_account_trust. Это позволяет избежать конфликтов имён, когда этот MCP работает вместе с другими серверами (GLPI, Hudu и т. д.), подключёнными к одному ИИ-клиенту.


Related MCP server: Shell MCP

Мультитенантная архитектура

Этот MCP спроектирован так, чтобы работать как один процесс на тенанта, при этом все они используют одну и ту же кодовую базу:

.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

Каждый start.sh экспортирует AD_MCP_CONFIG, указывающий на конфигурацию этого тенанта, и запускает python -m active_directory_mcp.server_http на выделенном порту. Обновите общий .base-code/ один раз, перезапустите все тенанты — тот же код, изолированное состояние.


Быстрый старт

Предварительные требования

  • Python 3.11+

  • LDAP/LDAPS, доступный с хоста

  • Сервисная учётная запись AD с правами, необходимыми для операций, которые вы планируете открыть

1. Установка

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. Настройка

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

Файл примера — единственный шаблон, хранящийся в git. Любой реальный ad-config.json блокируется .gitignore (ad-config/*.json + !ad-config/*.example.json).

3. Запуск

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. Подключение из Claude Code

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

5. Подключение из Gemini CLI

~/.gemini/settings.json:

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

Инструменты

Все инструменты используют префикс ad_*. Инструменты, помеченные как Write, требуют строку подтверждения ИЛИ Bearer-токен автоматизации.

Идентификация тенанта (3)

Инструмент

Операция

ad_get_client_tenant_info

Возврат информации о тенанте для этого экземпляра (вызывать первым)

ad_list_configured_clients

Список всех клиентов, зарегистрированных в реестре клиентов

ad_check_client_configuration

Проверка, настроен ли AD для указанного slug клиента

Управление пользователями (9)

Инструмент

Write

Операция

ad_list_users_with_filters

Список пользователей (опционально с фильтром по OU/критериям)

ad_get_user_details_by_username

Получение атрибутов пользователя по sAMAccountName

ad_get_user_group_memberships

Список групп, в которых состоит пользователь

ad_create_user_account

да

Создание нового пользователя

ad_modify_user_attributes

да

Изменение атрибутов пользователя

ad_delete_user_account_permanently

да

Удаление пользователя

ad_enable_user_account_access

да

Включение учётной записи пользователя

ad_disable_user_account_access

да

Отключение учётной записи пользователя

ad_reset_user_password_forced

да

Сброс пароля (принудительная смена при следующем входе)

Управление группами (8)

Инструмент

Write

Операция

ad_list_groups_with_filters

Список групп

ad_get_group_details_by_name

Получение атрибутов группы

ad_get_group_members_recursive

Список участников, опционально рекурсивно

ad_create_group_security_or_distribution

да

Создание группы безопасности или рассылки

ad_modify_group_attributes

да

Изменение атрибутов группы

ad_delete_group_permanently

да

Удаление группы

ad_add_member_to_group

да

Добавление участника

ad_remove_member_from_group

да

Удаление участника

Управление компьютерами (8)

Инструмент

Write

Операция

ad_list_computers_with_filters

Список компьютеров

ad_get_computer_details_by_name

Получение атрибутов компьютера

ad_get_inactive_computers_by_days

Список компьютеров, неактивных N+ дней

ad_create_computer_account

да

Создание объекта компьютера

ad_modify_computer_attributes

да

Изменение атрибутов компьютера

ad_delete_computer_account_permanently

да

Удаление объекта компьютера

ad_enable_computer_account_trust

да

Включение учётной записи компьютера

ad_disable_computer_account_trust

да

Отключение учётной записи компьютера

ad_reset_computer_password_trust

да

Сброс пароля защищённого канала компьютера

Управление подразделениями (7)

Инструмент

Write

Операция

ad_list_organizational_units_hierarchy

Список OU (опция рекурсии)

ad_get_organizational_unit_details

Получение атрибутов OU

ad_get_organizational_unit_objects

Список объектов внутри OU

ad_create_organizational_unit

да

Создание OU

ad_modify_organizational_unit_attributes

да

Изменение OU

ad_delete_organizational_unit_forced

да

Удаление OU (force=true для удаления непустых)

ad_move_organizational_unit_parent

да

Перемещение OU к новому родителю

Безопасность и аудит (6)

Инструмент

Операция

ad_get_domain_security_policy_info

Информация о домене + политика паролей и блокировок

ad_get_privileged_security_groups

Список привилегированных групп (Domain Admins, Enterprise Admins и т. д.)

ad_get_user_effective_permissions

Отображение эффективных разрешений для пользователя

ad_get_inactive_users_by_days

Пользователи без входа в систему N+ дней

ad_get_password_policy_violations

Учётные записи, нарушающие политику паролей

ad_audit_administrative_accounts

Аудит гигиены привилегированных учётных записей

Промпты для MSP (2 инструмента + 15 промптов)

Инструмент

Операция

ad_list_msp_prompts

Список 15 профессиональных плейбуков MSP (менеджер и аналитик)

ad_execute_msp_prompt

Выполнение именованного плейбука с аргументами

Полный каталог промптов см. в PROMPTS.md (аудит безопасности, онбординг, офбординг, плейбук сброса пароля и т. д.).

Системные (4)

Инструмент

Операция

ad_test_ldap_connection_status

Проверка подключения к LDAP

ad_health_check_mcp_server

Полная проверка работоспособности (сервер + тест поиска LDAP + статистика)

ad_get_mcp_schema_tools_info

Самодокументируемая схема всех зарегистрированных инструментов


Конфигурация

Путь к файлу конфигурации времени выполнения задаётся через переменную окружения AD_MCP_CONFIG. Схема — в ad-config/ad-config.example.json.

Ключевые поля

Поле

Обязательно

Описание

active_directory.server

да

Основной URL LDAP, например ldaps://dc.example.com:636

active_directory.server_pool

нет

Дополнительные URL LDAP для отказоустойчивости

active_directory.bind_dn

да

Полный DN сервисной учетной записи

active_directory.password

да

Пароль сервисной учетной записи (храните файл с правами chmod 600)

active_directory.base_dn

да

Базовый DN, например DC=example,DC=com

organizational_units.*

да

Подразделения по умолчанию для пользователей/групп/компьютеров/сервисных учетных записей

security.enable_tls

нет

Принудительно использовать StartTLS / LDAPS

security.validate_certificate

нет

Проверять сертификат сервера с помощью ca_cert_file

security.require_secure_connection

нет

Отказываться от подключения без шифрования

automation.token

нет

Токен Bearer для автоматических операций записи

client.slug

нет

Идентификатор тенанта, возвращаемый ad_get_client_tenant_info

Разрешения сервисной учетной записи

Предоставьте учетной записи привязки минимальные делегированные права, необходимые для операций, которые вы планируете открыть:

  • Развертывания только для чтения: достаточно «Чтение всех свойств» + «Список содержимого» в корне домена.

  • Запись пользователей/групп: делегируйте «Создание/удаление объектов» + «Запись всех свойств» в целевых подразделениях.

  • Сброс пароля: делегируйте расширенное право «Сброс пароля» в целевых подразделениях.

  • Ввод/вывод компьютеров: делегируйте «Создание/удаление объектов компьютеров» в подразделении компьютеров.

Всегда используйте выделенную сервисную учетную запись, LDAPS в производственной среде и регулярно меняйте пароль.


Безопасность

Модель защиты записи

Каждый изменяющий инструмент (ad_create_*, ad_modify_*, ad_delete_*, ad_enable_*, ad_disable_*, ad_reset_*, ad_add_*, ad_remove_*, ad_move_*) вызывает check_write_permission() перед обращением к LDAP. Он разрешает запись, если выполняется одно из условий:

  1. automation_token совпадает с automation.token в конфигурации — предназначен для CI / запланированных заданий.

  2. client_confirmation совпадает с идентификатором тенанта — ИИ-ассистент должен сначала вызвать ad_get_client_tenant_info, прочитать идентификатор пользователю и передать эту точную строку.

  3. У тенанта установлено require_confirmation_for_writes: false (явный отказ, не рекомендуется).

Если ни одно из вышеперечисленных условий не выполнено, вызов завершается сообщением permitted: false, и запись в LDAP не выполняется.

Журналирование аудита

Все операции записывают структурированную строку журнала, включающую: временную метку, имя инструмента, цель, режим подтверждения (AUTOMATION / CONFIRMED / WRONG_CONFIRMATION / NO_CONFIRMATION_REQUIRED) и успех/неудачу. Журналы сохраняются туда, куда указывает logging.file.

Гигиена секретов

  • Реальные файлы ad-config.json игнорируются git. Отслеживаются только *.example.json.

  • Никогда не вставляйте конфигурацию с реальным password или automation.token в чат, который логируется или транскрибируется третьей стороной.

  • Меняйте automation.token при каждой его регенерации; относитесь к нему как к привилегированному удостоверению.


Тестирование

# Unit + integration tests
pytest tests/ -v

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

# Lint
ruff check .

Встроенный docker-compose-ad.yml поднимает контейнер Samba AD на 192.168.1.100 и контейнер MCP, чтобы интеграционные тесты могли выполняться с реальным LDAP-бэкендом, не затрагивая производственную среду.


Устранение неполадок

Симптом

Вероятная причина

Исправление

LDAP bind failed

неверный bind_dn / password

Проверьте с помощью ldapsearch -H <server> -D '<bind_dn>' -W

Insufficient permissions

у сервисной учетной записи отсутствуют делегированные права

Повторно делегируйте права в целевом подразделении

Certificate verification failed

самоподписанный сертификат без доверия

Укажите ca_cert_file или validate_certificate: false (только для тестирования)

permitted: false при каждой записи

Отсутствует подтверждение/токен

Сначала вызовите ad_get_client_tenant_info или передайте automation_token

Health degraded

сокет открыт, но поиск LDAP не удался

Проверьте блокировку сервисной учетной записи / репликацию / сетевые ACL


Вклад в проект

  1. Сделайте форк репозитория.

  2. Создайте ветку функции: git checkout -b feat/your-feature.

  3. Запустите тесты: pytest.

  4. Откройте PR с понятным описанием и ссылкой на соответствующий issue.

Коммиты следуют Conventional Commits.


Лицензия

MIT — см. LICENSE.

Благодарности

Поддержка

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