使用说明
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
许可证
麻省理工学院