mcpField
L
LDAP Assistant MCP

LDAP Assistant MCP

本地服务
github.com云与基础设施112 周前更新

关于 LDAP Assistant MCP

LDAP Assistant MCP 为 389 Directory Server 的在线、本地、离线及归档实例提供只读诊断,面向排查健康状况、复制、性能、日志和 SOS 报告的目录管理员,并默认脱敏隐私信息。

主要功能

  1. 01健康与复制诊断
  2. 02性能与索引分析
  3. 03在线、离线和归档模式
  4. 04日志与 SOS 报告分析
  5. 05默认脱敏敏感信息
  6. 06引导式调查提示词

适用场景

  1. 01排查复制故障
  2. 02检查服务器健康与性能
  3. 03调查已停止的实例
  4. 04汇总 SOS 报告

MCP 相关

向 MCP 客户端提供 42 种只读诊断工具和调查提示词。支持的提供方为 389 Directory Server,且默认在隐私模式下脱敏敏感值。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"droideck-ldap-assistant": {
"command": "uvx",
"args": [
"ldap-assistant-mcp"
],
"env": {
"LDAP_SERVERS_CONFIG": "<LDAP_SERVERS_CONFIG>"
}
}
}
}
启动命令uvx ldap-assistant-mcp
需要配置的环境变量
LDAP_SERVERS_CONFIGAbsolute path to the servers.json file describing the LDAP servers, offline instances, or SOS-report archives to analyze

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypildap-assistant-mcp0.5.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

LDAP Assistant MCP

Version License: GPL v3

Beta — 只读的 389 Directory Server 诊断,适用于评估和内部故障排查。工具架构、输出格式和配置字段在 1.0.0 发布前仍可能变更。

LDAP Assistant MCP 可将你的 AI 助手变成 389 Directory Server 支持工程师。 将它连接到运行中的服务、已停止的实例,或客户案例中的 SOS 报告,然后询问:

  • “我的目录服务出了什么问题?”
  • “在我创建案例之前,先总结一下这份 SOS 报告。”
  • “这些服务之间的复制似乎出了问题——为什么?”

它通过基于 lib389(官方 389 DS 管理库)构建的 42 个只读诊断工具,给出按优先级排列的发现结果(严重性、影响、修复措施)。隐私模式默认开启:在任何内容传给大模型之前,DN、主机名和 IP 地址都会被隐藏。

支持的提供程序:389 Directory Server。(OpenLDAP 提供程序代码目前仅供实验使用,需通过选择加入标志启用,不提供隐私保证,也不在支持协议范围内——参见环境变量。)

安装

前提条件
  • Linux(主要支持)或 macOS。原生不支持 Windows(python-ldap 没有官方 Windows wheel)——请使用 WSL2(参见安装操作手册)

  • Python 3.11+(CI 测试使用 3.13)

  • uv 包管理器

  • MCP 客户端(Claude Desktop、Claude Code、Cursor、Gemini CLI 等)

  • 系统开发库(构建 python-ldap 所需):

    Fedora / RHEL / CentOS:

    sudo dnf install python3-devel openldap-devel cyrus-sasl-devel openssl-devel gcc
    

    Ubuntu / Debian:

    sudo apt install python3-dev libldap2-dev libsasl2-dev libssl-dev gcc
    

    macOS(Homebrew):

    brew install openldap
    export LDFLAGS="-L$(brew --prefix openldap)/lib"
    export CPPFLAGS="-I$(brew --prefix openldap)/include"
    

安装过程中遇到问题?→ 安装故障排查操作手册

从 PyPI 安装(推荐)

无需克隆——MCP 客户端会通过 uvx 运行已发布的软件包。请先跳转到配置服务,然后使用以下客户端配置(Claude Desktop:macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "ldap-assistant-mcp": {
      "command": "uvx",
      "args": ["ldap-assistant-mcp"],
      "env": {
        "LDAP_SERVERS_CONFIG": "/absolute/path/to/servers.json"
      }
    }
  }
}

LDAP_SERVERS_CONFIG 请使用绝对路径——相对路径会相对于 MCP 客户端的工作目录解析,而该目录通常并非你以为的位置。

从源代码安装(开发)
git clone https://github.com/droideck/ldap-assistant-mcp.git
cd ldap-assistant-mcp
uv venv && source .venv/bin/activate
uv pip install -e .[dev]

# Register with your MCP client via FastMCP:
fastmcp install claude-desktop fastmcp.json   # or: fastmcp install claude-code fastmcp.json

然后,在生成的客户端条目中按上文所述设置 LDAP_SERVERS_CONFIG。关于测试容器和架构,请参见开发指南。

配置你的服务

创建一个 servers.json,其中包含你的 LDAP 服务。**注意:**隐私模式下不会隐藏 name 字段——该字段会原样传给 AI Agent,以便它们在多次工具调用中引用服务。请勿在服务名称中填写主机名、IP 地址或其他私人信息。

{
  "servers": [
    {
      "name": "local-ds",
      "ldap_url": "ldap://localhost:389",
      "base_dn": "dc=example,dc=com",
      "bind_dn": "cn=Directory Manager",
      "bind_password": "your-password",
      "provider_type": "389ds",
      "is_local": true,
      "serverid": "localhost"
    },
    {
      "name": "remote-ds",
      "ldap_url": "ldap://ldap.example.com:389",
      "base_dn": "dc=example,dc=com",
      "bind_dn": "cn=Directory Manager",
      "bind_password": "your-password",
      "provider_type": "389ds"
    },
    {
      "name": "stopped-ds",
      "ldap_url": "ldap://localhost:389",
      "base_dn": "dc=example,dc=com",
      "bind_dn": "cn=Directory Manager",
      "bind_password": "unused-in-offline-mode",
      "provider_type": "389ds",
      "is_local": true,
      "serverid": "localhost",
      "is_offline": true
    },
    {
      "name": "sos-report",
      "provider_type": "389ds",
      "is_archive": true,
      "archive_path": "/path/to/sosreport-host-2025/",
      "instance_name": "slapd-instance"
    }
  ]
}

注意:serverid 是实例名称中不带 slapd- 前缀的部分(例如,实例 slapd-localhost 的 serverid 为 localhost)。

四种服务器模式
模式配置可用功能
远程仅 ldap_url通过 LDAP 使用健康状况、复制、性能、配置和条目工具。不支持访问日志、磁盘或证书
本地+ is_local: true、serverid包含上述所有功能,此外还支持日志分析、磁盘监控、证书检查和进程指标
离线+ is_offline: true分析已停止的本地实例,读取 dse.ldif 和日志文件——无需 LDAP 连接。适用于事后分析,以及无法启动的实例
存档is_archive: true、archive_path分析来自任意机器的 SOS 报告或配置/日志摘录(tarball 或目录,自动检测布局)。无需 LDAP,也无需本地实例

需要实时连接的工具会明确说明——错误信息会列出在该服务器模式下可用的工具,让调查得以继续,而不会陷入死胡同。

远程 LDAPS 证书验证: 默认情况下,远程 ldaps:// 服务器会验证服务器证书("tls_verify": true;基于环境变量的配置则使用 LDAP_TLS_VERIFY 环境变量)。若要连接使用自签名或其他不受信任证书的服务器,请在该服务器条目中设置 "tls_verify": false——这会完全停用证书验证,因此仅在可信的实验环境中使用。

编辑客户端配置或 servers.json 后,重启 MCP 客户端,然后验证:询问 “配置了哪些 LDAP 服务器?”

隐私模式

默认情况下,隐私模式已启用——工具输出中的敏感数据(DN、主机名、IP、用户详细信息)会被脱敏。可访问单个条目的工具(get_user_details、ldap_search)会被禁用;列表工具仅返回计数。诊断指标(计数、比率、百分比)仍然可见。

若要在仅限可信环境中启用完整数据访问:

{
  "env": {
    "LDAP_MCP_EXPOSE_SENSITIVE_DATA": "true"
  }
}

重要提示: 仅在使用本地模型、私有云大模型实例,或处理测试/示例数据时启用此功能。连接到生产目录时,请避免在使用公共大模型的情况下启用——你的目录信息可能会被纳入其训练数据或日志。

启用隐私模式时(默认):

  • 主机名、DN、IP 地址和后缀会被匿名化
  • 配置值会被隐藏
  • 敏感工具会被禁用
  • 诊断指标(计数、比率、百分比)仍然可见
  • 服务器名称(servers.json 中的 name 字段)绝不会被脱敏——这是用户选择的标签,在不同工具调用间必须保持稳定。请勿在服务器名称中填写主机名、IP 或其他私人信息。
数据处理
  • 不收集遥测数据。 服务不会收集任何信息,也不会向外发送数据。
  • 所有操作都在本地运行。 目录数据从 LDAP 服务器、本地实例或存档文件中读取,并且只返回给 MCP 客户端——客户端会将工具结果转发给你配置的大模型。隐私模式(默认开启)会在敏感值离开服务进程前将其脱敏。
  • 凭据保存在本地的 servers.json/环境变量中;它们绝不会出现在工具输出中,工具错误信息也会经过清理。

首先要问的问题

你想要提问 / 使用背后的工具
查看所有内容的健康状况概览“我的目录服务有什么问题?”first_look
获取摘要版 SOS 报告“分析 sos-report 存档” 或 archive_investigation 提示词analyze_archive → 存档操作手册
了解哪个工具适合某个目标tool_navigator 提示词针对指定目标的工具映射
按引导排查复制问题diagnose_replication 提示词复制工具调用顺序
按引导排查性能问题performance_investigation 提示词性能工具调用顺序
进行晨间运维检查daily_health_check 提示词健康状况 + 监控巡查

操作手册(症状 → 工具 → 工具无法获知的内容 → 手动验证方法):

按组划分的工具

42 个只读工具——包含参数的完整参考,请参阅 TOOLS.md。

组工具重点
健康状况first_look、run_healthcheck、list_healthchecks、server_health多服务概览;完整的 dsctl healthcheck 等效功能
复制get_replication_status、get_replication_topology、check_replication_lag、list_replication_conflicts、get_agreement_statusRUV/CSN 分析、拓扑映射、冲突条目
性能get_performance_summary、缓存/连接/操作/线程/资源统计瓶颈检测和调优建议
索引list_indexes、analyze_index_configuration、find_unindexed_searches基于访问日志查找未使用索引的搜索
配置get_server_configuration、compare_server_configurations、list_plugins、get_backend_configuration实时和离线(dse.ldif)路径
日志analyze_access_log / analyze_error_log / analyze_audit_log(统计信息,保护隐私),parse_*_log(完整条目,需要敏感数据模式)传统和 JSON 日志格式
存档 / SOSanalyze_archive、validate_configuration、compare_dse_configs清单、离线配置检查、完整 dse.ldif 差异比较
用户和组列出/搜索/检查用户,筛选活跃/锁定用户,查看组隐私模式下仅显示数量
高级ldap_search、run_monitor、list_servers、cn=config 资源通用搜索(仅限敏感数据模式)

环境变量参考

变量默认值用途
LDAP_SERVERS_CONFIG–servers.json 的绝对路径(多服务配置;优先使用)
LDAP_PROVIDERdirsrv服务实现。目前仅支持 dirsrv(389 DS);openldap 需要通过下方标志选择启用
LDAP_MCP_EXPERIMENTAL_OPENLDAPfalse选择启用实验性的 OpenLDAP 提供程序(两个工具,不保证隐私)
LDAP_MCP_EXPOSE_SENSITIVE_DATAfalse禁用隐私模式(参见隐私模式)
LDAP_MCP_DEBUGfalse在工具错误中启用调试日志和回溯信息
LDAP_MCP_TOOL_TIMEOUT30每次工具调用的超时时间(秒)
LDAP_MCP_MAX_TOOL_TIMEOUT120耗时较长的工具(first_look、归档比较等)的超时上限
LDAP_CONNECT_TIMEOUT30LDAP 网络/操作超时时间(秒),防止连接不可达的服务时卡住

单服务回退配置(仅在未设置 LDAP_SERVERS_CONFIG 时使用):

变量默认值用途
LDAP_URL–完整的 LDAP URL(可替代主机名/端口/SSL 变量)
LDAP_HOSTNAME / LDAP_PORT / LDAP_USE_SSLlocalhost / 389 / false连接参数
LDAP_BASE_DN–默认搜索基准
LDAP_BIND_DN / LDAP_BIND_PASSWORDcn=Directory Manager / –绑定凭据(无默认密码)
LDAP_AUTH_METHODsimplesimple 或 anonymous(唯一已实现的绑定方式;LDAPI/SASL EXTERNAL 通过 LDAP_USE_LDAPI 选择,而非在此处设置)
LDAP_IS_LOCAL / LDAP_SERVERIDfalse / –启用本地实例功能(日志、磁盘、证书)
LDAP_USE_LDAPIfalse通过 LDAPI Unix 套接字连接
LDAP_IS_OFFLINEfalse将本地实例视为已停止(离线模式)
LDAP_TLS_VERIFYtrue验证远程 ldaps:// 连接的服务证书(仅在可信实验环境中设为 false)

故障排除

问题原因 / 解决方法
安装期间 python-ldap 构建失败缺少系统头文件——参见安装操作指南
工具报告默认的 localhost 服务,而不是你的配置未设置 LDAP_SERVERS_CONFIG,或无法在 MCP 客户端配置中加载——参见 servers.json 路径解析
list_* 工具仅返回计数;ldap_search/get_user_details 拒绝运行这是隐私模式(默认设置,符合预期)——参见隐私模式
出现“requires a running server with a live LDAP connection”错误目标是离线/归档服务——错误消息会列出可在该服务上运行的工具
本地服务的 LDAPI 连接失败检查 serverid 是否不含 slapd- 前缀,以及实例套接字是否存在

没有可供测试的 LDAP 服务?开发指南会使用 Docker 启动测试容器。

限制

  • Beta 版——工具架构、输出格式和配置字段在 1.0.0 之前可能会发生变化
  • 大模型解读——工具会返回准确的数据,但由大模型进行解读,因此可能出现幻觉。采取行动前,请务必核实建议。
  • 只读——暂不支持写入操作
  • 明文密码——请对配置文件使用严格的文件权限
  • 仅支持 STDIO 传输——暂不支持 HTTP/SSE

文档

文档说明
更新日志版本历史和发行说明
归档 / SOS 操作手册开启工单前总结 SOS 报告
安装操作手册python-ldap 构建、WSL2、uvx、配置路径解析
开发指南开发环境设置、配置、架构
测试指南运行和编写测试
贡献指南如何参与贡献
发行检查清单如何制作和验证发行版本
389 DS 工具389 Directory Server 工具参考
OpenLDAP 工具OpenLDAP 工具参考(实验性,仅限选择启用)

许可证

GPL-3.0-or-later。基于 lib389(官方 389 Directory Server 管理库)和 FastMCP 构建。

参考资料

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。