LDAP目录服务

用于只读LDAP目录操作的MCP服务器,支持搜索、比较和获取条目等功能。

  • by major
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 major/ldap-mcp

使用说明

ldap mcp

用于只读LDAP目录操作的MCP服务器。

安装

uv add ldap-mcp
# or
pip install ldap-mcp

配置

运行前设置环境变量:

export LDAP_URI="ldaps://ldap.example.com:636"
export LDAP_BASE_DN="dc=example,dc=com"
export LDAP_BIND_DN="cn=readonly,dc=example,dc=com"
export LDAP_BIND_PASSWORD="secret"

# Optional: only return employee accounts in all searches
export LDAP_DEFAULT_FILTER="(employeeType=employee)"

所有环境变量

变量 必填 默认 描述
LDAP_URI 是 - 服务器URI(ldap://或ldaps://)
LDAP_BASE_DN 是 - 默认搜索库DN
LDAP_BIND_DN 否 - 绑定DN(空=匿名)
LDAP_BIND_PASSWORD 否 - 绑定密码
LDAP_DEFAULT_FILTER 否 - 对所有搜索进行AND筛选
LDAP_AUTH_METHOD 没有 simple simple 或 anonymous
LDAP_USE_STARTTLS 没有 false 升级到端口389上的TLS
LDAP_TLS_VERIFY 没有 true 验证TLS证书
LDAP_CA_CERT 否 - CA证书路径
LDAP_TIMEOUT 没有 30 连接超时(秒)

用法

运行服务器:

uvx ldap-mcp                    # stdio transport (default)
uvx ldap-mcp --transport sse    # SSE transport

或者,如果安装在项目中:

uv run ldap-mcp
Claude Desktop

增添 claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/,Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "ldap": {
      "command": "uvx",
      "args": ["ldap-mcp"],
      "env": {
        "LDAP_URI": "ldaps://ldap.example.com:636",
        "LDAP_BASE_DN": "dc=example,dc=com",
        "LDAP_BIND_DN": "cn=readonly,dc=example,dc=com",
        "LDAP_BIND_PASSWORD": "secret"
      }
    }
  }
}
Claude Code

通过CLI添加:

claude mcp add --transport stdio \
  --env LDAP_URI=ldaps://ldap.example.com:636 \
  --env LDAP_BASE_DN=dc=example,dc=com \
  --env LDAP_BIND_DN=cn=readonly,dc=example,dc=com \
  --env LDAP_BIND_PASSWORD=secret \
  ldap -- uvx ldap-mcp

或添加到 .mcp.json 在项目根目录中:

{
  "mcpServers": {
    "ldap": {
      "type": "stdio",
      "command": "uvx",
      "args": ["ldap-mcp"],
      "env": {
        "LDAP_URI": "ldaps://ldap.example.com:636",
        "LDAP_BASE_DN": "dc=example,dc=com",
        "LDAP_BIND_DN": "${LDAP_BIND_DN}",
        "LDAP_BIND_PASSWORD": "${LDAP_BIND_PASSWORD}"
      }
    }
  }
}
OpenCode

增添 ~/.config/opencode/config.json (或 opencode.json 在项目根目录中):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ldap": {
      "type": "local",
      "command": ["uvx", "ldap-mcp"],
      "environment": {
        "LDAP_URI": "ldaps://ldap.example.com:636",
        "LDAP_BASE_DN": "dc=example,dc=com",
        "LDAP_BIND_DN": "{env:LDAP_BIND_DN}",
        "LDAP_BIND_PASSWORD": "{env:LDAP_BIND_PASSWORD}"
      }
    }
  }
}

工具

ldap_search

使用筛选器搜索LDAP目录。

filter: "(objectClass=person)"
base_dn: "ou=users,dc=example,dc=com"  # optional
scope: "subtree"  # base, one, or subtree
attributes: ["cn", "mail", "uid"]  # optional
size_limit: 100

ldap_get_tentry

按DN获取一个包含所有属性的条目。

dn: "cn=jdoe,ou=users,dc=example,dc=com"
attributes: ["*"]  # optional, defaults to all
include_operational: true  # include createTimestamp, etc.

ldap_get_schema

浏览LDAP架构定义。

schema_type: "all"  # object_classes, attribute_types, or all
name_filter: "person"  # optional substring filter

ldap_比较

比较属性值而不检索条目。

dn: "cn=jdoe,ou=users,dc=example,dc=com"
attribute: "memberOf"
value: "cn=admins,ou=groups,dc=example,dc=com"

提示

user_lookup

通过姓名、电子邮件或uid查找用户的指导性工作流程。

group_members

使用可选的名称解析列出LDAP组的成员。

团体会员资格

查找用户所属的所有组。

搜索指南

LDAP过滤器语法参考示例。

发展

# Install dev dependencies
uv sync --group dev

# Run checks
make check    # lint + format + typecheck + test

# Run tests only
make test

# Auto-fix issues
make fix

许可证

麻省理工学院