MCP server for 389 Directory Server health diagnostics, log analysis, and SOS-report investigation
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Beta β read-only 389 Directory Server diagnostics, suitable for evaluation and internal troubleshooting. Tool schemas, output formats, and configuration fields may still change before 1.0.0.
LDAP Assistant MCP turns your AI assistant into a 389 Directory Server support engineer. Point it at live servers, stopped instances, or an SOS report from a customer case, and ask:
It answers with prioritized findings (severity, impact, remediation) from 42 read-only diagnostic tools built on lib389, the official 389 DS administration library. Privacy mode is on by default: DNs, hostnames, and IPs are redacted before anything reaches the LLM.
Supported provider: 389 Directory Server. (OpenLDAP provider code exists experimentally behind an opt-in flag, with no privacy guarantees, and is not part of the support contract β see Environment Variables.)
Linux (primary) or macOS. Windows is not supported natively (python-ldap has no official Windows wheels) β use WSL2 (see the install playbook)
Python 3.11+ (3.13 is what CI tests against)
uv package manager
MCP client (Claude Desktop, Claude Code, Cursor, Gemini CLI, etc.)
System development libraries (needed to build python-ldap):
Fedora / RHEL / CentOS:
Ubuntu / Debian:
macOS (Homebrew):
Anything failing during install? β Installation troubleshooting playbook
No clone needed β your MCP client runs the published package via uvx. Skip ahead to Configure your servers, then use this client configuration (Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Use an absolute path for LDAP_SERVERS_CONFIG β relative paths resolve against the MCP client's working directory, which is usually not where you think.
Then set LDAP_SERVERS_CONFIG in the generated client entry as above. See the Development Guide for test containers and architecture.
Create a servers.json with your LDAP server(s). Note: the name field is never redacted in privacy mode β it is passed as-is to AI agents so they can reference servers across tool calls. Do not put hostnames, IPs, or other private information in server names.
Note: serverid is the instance name without the slapd- prefix (e.g. localhost for the instance slapd-localhost).
| Mode | Config | What you get |
|---|---|---|
| Remote | ldap_url only | Health, replication, performance, config, and entry tools over LDAP. No log/disk/cert access |
| Local | + is_local: true, serverid | Everything above plus log analysis, disk monitoring, certificate checks, process metrics |
| Offline | + is_offline: true | A stopped local instance, analyzed via dse.ldif and log files β no LDAP connection. For post-mortems and instances that won't start |
| Archive | is_archive: true, archive_path | An SOS report or config/log extract from any machine (tarball or directory, auto-detected layout). No LDAP, no local instance required |
Tools that need a live connection tell you so β the error names the tools that do work in that server's mode, so the investigation continues instead of dead-ending.
Remote LDAPS certificate verification: remote ldaps:// servers verify the server certificate by default ("tls_verify": true, or the LDAP_TLS_VERIFY environment variable for env-based config). To connect to a server with a self-signed or otherwise untrusted certificate, set "tls_verify": false on that server entry β this disables certificate verification entirely, so use it only for trusted lab environments. Local instances (is_local: true) instead use the instance's own NSS certificate directory.
After editing the client config or servers.json, restart your MCP client, then verify: ask "Which LDAP servers are configured?"
By default, privacy mode is enabled β sensitive data (DNs, hostnames, IPs, user details) is redacted from tool outputs. Tools that expose individual entries (get_user_details, ldap_search) are disabled; list tools return counts only. Diagnostic metrics (counts, ratios, percentages) remain visible.
To enable full data access in trusted environments only:
Important: Only enable this with local models, private cloud LLM instances, or when working with test/sample data. Avoid enabling with public LLMs when connected to production directories β your directory information could be included in their training data or logs.
When privacy mode is enabled (default):
name field in servers.json) are never redacted β they are user-chosen labels that must remain stable across tool calls. Do not put hostnames, IPs, or other private information in server names.servers.json / environment variables; they are never included in tool output and tool errors are sanitized.| You want | Ask / use | Behind it |
|---|---|---|
| A health overview of everything | "What's wrong with my directory servers?" | first_look |
| An SOS report summarized | "Analyze the sos-report archive" or the archive_investigation prompt | analyze_archive β archive playbook |
| To know which tool fits a goal | the tool_navigator prompt | tool map for a stated goal |
| Guided replication triage | the diagnose_replication prompt | replication tool sequence |
| Guided performance triage | the performance_investigation prompt | performance tool sequence |
| A morning ops review | the daily_health_check prompt | health + monitoring sweep |
Playbooks (symptom β tools β what they can't know β how to verify by hand):
42 read-only tools β full reference with parameters in TOOLS.md.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/ldap-assistant-mcp)<a href="https://allmcps.com/mcp/ldap-assistant-mcp"><img src="https://allmcps.com/api/badge/ldap-assistant-mcp?style=directory" alt="LDAP Assistant MCP on AllMCPs" /></a>