LDAP MCP服务器
LDAP MCP服务器通过模型上下文协议(MCP)公开LDAP目录,使MCP客户端能够使用标准工具/资源工作流运行常见的目录搜索和CRUD操作。
特性
- 通过MCP工具搜索、检索、添加、修改和删除LDAP条目。
- 可选的只读模式,将MCP客户端限制为安全操作。
- 支持StartTLS升级、LDAPS端点和可配置的TLS验证。
- 目录根DSE的内置MCP资源和DN的任意条目。
- 优雅的关机处理和自动LDAP重新连接逻辑。
需求
- 转到1.24或更高版本
- 访问LDAP服务器(OpenLDAP、Active Directory等)
- 能够说出SSE传输的MCP客户端(例如Claude Desktop)
建造和测试
cd /opt/code/github/ldap-mcp
go test ./...存储库目前没有单元测试,因此成功运行可以确认项目已编译,所有依赖关系均已解决。
运行服务器
cd /opt/code/github/ldap-mcp
go run ./cmd/server \
-url ldap://localhost:389 \
-bind-dn "cn=admin,dc=example,dc=com" \
-bind-password secret关键标志:
-addr:MCP侦听地址(默认:8080,可通过MCP_PORT).-url:LDAP服务器URL,例如ldap://host:389或ldaps://host:636.-bind-dn/-bind-password:绑定到目录的凭据。您还可以通过以下方式提供密码LDAP_BIND_PASSWORD环境变量。-starttls:将普通LDAP连接升级为TLS。仅在使用时有效ldap://URL。-insecure:跳过TLS证书验证(适用于使用自签名证书进行测试)。-read-write:启用添加/修改/删除工具。如果省略,服务器将以只读模式运行。-timeout:与LDAP服务器通信时,每个请求超时(默认30秒)。
使用 -help 打印标志和环境变量的完整列表。
MCP表面
工具
search_entries:使用分页、范围选择、别名取消引用和大小限制执行LDAP搜索。get_entry:按可分辨名称获取单个条目。add_entry:创建新条目(需要-read-write).modify_entry:应用属性修改(需要-read-write).delete_entry:删除条目(需要-read-write).
资源
ldap://root-dse:以JSON格式返回目录根DSE。ldap://entry/{dn}:当提供DN时,获取特定条目。
开发说明
- LDAP客户端包装器(
internal/ldapclient)管理连接重用、StartTLS协商和传输错误时的自动重新连接。 - MCP工具处理程序(
internal/tools)在调用LDAP操作之前验证输入;例如page_size争论被限制在uint32分页结果控件使用的范围。 - 使用格式化Go源代码
gofmt并通过以下方式保持模块依赖关系整洁go mod tidy当依赖关系发生变化时。

