Skills MCP AD
关于
Active Directory MCP 是一个开源的 Model Context Protocol 服务器,让 AI 助手(Claude、Gemini CLI、通过 API 的 ChatGPT 等)能够安全地管理 Active Directory 环境。
主要特性
47 个工具,涵盖用户、组、计算机、OU、安全、审计以及 15 个 MSP 提示词剧本。
三种传输方式:stdio(
server.py)、通过 FastMCP 的 Streamable HTTP(server_http.py)以及通过 FastAPI 的 Streamable HTTP(server_fastapi.py)。天然多租户:每个实例通过
AD_MCP_CONFIG绑定到自己的 AD;同一套代码库可从一台主机服务无限数量的租户。写操作护栏:每个变更工具在触碰 AD 之前,都需要租户级别的客户端确认字符串或自动化 Bearer 令牌。
每次操作均有审计日志:每次调用都会记录操作名称、目标、模式(CONFIRMED / AUTOMATION / NO_CONFIRMATION_REQUIRED)和结果。
命名约定
所有 MCP 工具名称使用 ad_* 前缀并带有描述性后缀——例如 ad_list_users_with_filters、ad_create_user_account、ad_disable_computer_account_trust。这可以避免当此 MCP 与连接到同一 AI 客户端的其他服务器(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.toml2. 配置
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-mcp4. 从 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_* 前缀。标记为写入的工具需要确认字符串或自动化 Bearer 令牌。
租户识别(3)
工具 | 操作 |
| 返回此实例的租户信息(首先调用) |
| 列出客户端注册表中注册的所有客户端 |
| 检查给定客户端 slug 是否已配置 AD |
用户管理(9)
工具 | 写入 | 操作 |
| — | 列出用户(可选按 OU/条件过滤) |
| — | 按 sAMAccountName 获取用户属性 |
| — | 列出用户所属的组 |
| 是 | 创建新用户 |
| 是 | 修改用户属性 |
| 是 | 删除用户 |
| 是 | 启用用户账户 |
| 是 | 禁用用户账户 |
| 是 | 重置密码(强制下次登录时更改) |
组管理(8)
工具 | 写入 | 操作 |
| — | 列出组 |
| — | 获取组属性 |
| — | 列出成员,可选递归 |
| 是 | 创建安全组或通讯组 |
| 是 | 修改组属性 |
| 是 | 删除组 |
| 是 | 添加成员 |
| 是 | 移除成员 |
计算机管理(8)
工具 | 写入 | 操作 |
| — | 列出计算机 |
| — | 获取计算机属性 |
| — | 列出空闲 N+ 天的计算机 |
| 是 | 创建计算机对象 |
| 是 | 修改计算机属性 |
| 是 | 删除计算机对象 |
| 是 | 启用计算机账户 |
| 是 | 禁用计算机账户 |
| 是 | 重置计算机安全通道密码 |
组织单位管理(7)
工具 | 写入 | 操作 |
| — | 列出 OU(可选递归) |
| — | 获取 OU 属性 |
| — | 列出 OU 内的对象 |
| 是 | 创建 OU |
| 是 | 修改 OU |
| 是 | 删除 OU(force=true 可删除非空 OU) |
| 是 | 将 OU 移动到新的父级 |
安全与审计(6)
工具 | 操作 |
| 域信息 + 密码/锁定策略 |
| 列出特权组(Domain Admins、Enterprise Admins 等) |
| 显示用户的有效权限 |
| 超过 N 天未登录的用户 |
| 违反密码策略的账户 |
| 审计特权账户卫生状况 |
MSP 提示词(2 个工具 + 15 个提示词)
工具 | 操作 |
| 列出 15 个专业 MSP 剧本(经理和分析师) |
| 使用参数执行指定的剧本 |
有关完整提示词目录(安全审计、入职、离职、密码重置剧本等),请参阅 PROMPTS.md。
系统(4)
工具 | 操作 |
| LDAP 连接探测 |
| 完整健康检查(服务器 + LDAP 搜索测试 + 统计) |
| 所有已注册工具的自描述模式 |
配置
运行时配置文件路径通过 AD_MCP_CONFIG 环境变量提供。模式见 ad-config/ad-config.example.json。
关键字段
字段 | 必填 | 描述 |
| 是 | 主 LDAP URL,例如 |
| 否 | 用于故障转移的附加 LDAP URL |
| 是 | 服务账户的完整 DN |
| 是 | 服务账户密码(将文件权限保持为 |
| 是 | 基础 DN,例如 |
| 是 | 用户/组/计算机/服务账户的默认 OU |
| 否 | 强制使用 StartTLS / LDAPS |
| 否 | 根据 |
| 否 | 拒绝通过明文进行绑定 |
| 否 | 用于无人值守写入操作的 Bearer 令牌 |
| 否 | 由 |
服务账户权限
为绑定账户授予您打算公开的操作所需的最低委派权限:
只读部署:在域根上授予“读取所有属性”+“列出内容”即可。
用户/组写入:在目标 OU 上委派“创建/删除对象”+“写入所有属性”。
密码重置:在目标 OU 上委派“重置密码”扩展权限。
计算机加入/退出域:在计算机 OU 上委派“创建/删除计算机对象”。
始终使用专用服务账户,在生产环境中使用 LDAPS,并定期轮换密码。
安全
写入保护模型
每个变更工具(ad_create_*、ad_modify_*、ad_delete_*、ad_enable_*、ad_disable_*、ad_reset_*、ad_add_*、ad_remove_*、ad_move_*)在到达 LDAP 之前都会调用 check_write_permission()。只要满足以下任一条件,它就会接受写入:
automation_token与配置中的automation.token匹配——适用于 CI / 计划任务。client_confirmation与租户 slug 匹配——AI 助手必须首先调用ad_get_client_tenant_info,将 slug 读回给用户,并传递该确切字符串。租户设置了
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 会在 192.168.1.100 启动一个 Samba AD 容器,外加一个 MCP 容器,以便集成测试可以针对真实的 LDAP 后端运行,而不会触及生产环境。
故障排查
症状 | 可能原因 | 修复 |
|
| 使用 |
| 服务账户缺少委派权限 | 在目标 OU 上重新委派 |
| 自签名证书未受信任 | 设置 |
每次写入都返回 | 缺少确认/令牌 | 首先调用 |
| 套接字已打开但 LDAP 搜索失败 | 检查服务账户锁定 / 复制 / 网络 ACL |
贡献
Fork 该仓库。
创建功能分支:
git checkout -b feat/your-feature。运行测试:
pytest。提交 PR,附上清晰的描述和相关 issue 的链接。
提交遵循 Conventional Commits。
许可证
MIT — 参见 LICENSE。
致谢
基于上游
alpadalar/ActiveDirectoryMCP项目,作者为 Alperen Adalar。
支持
错误报告:GitHub Issues
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