返回市场
LDAP-MCP服务器

LDAP-MCP服务器

作者:trxo7 星标更新:2025-10-30

项目介绍

LDAP MCP 服务器

LDAP MCP 服务器通过模型上下文协议(MCP)公开一个LDAP目录,使MCP客户端能够使用标准工具/资源工作流程执行常见的目录搜索和CRUD操作。

特性

  • 通过MCP工具搜索、检索、添加、修改和删除LDAP条目。
  • 可选的只读模式,限制MCP客户端只能执行安全操作。
  • 支持StartTLS升级、LDAPS端点以及可配置的TLS验证。
  • 内置用于目录根DSE和任意DN条目的MCP资源。
  • 平稳关闭处理和自动LDAP重连逻辑。

要求

  • Go 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:389ldaps://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: 返回目录根DSE作为JSON。
  • ldap://entry/{dn}: 提供DN时获取特定条目。

开发笔记

  • LDAP客户端包装器(internal/ldapclient)管理连接复用、StartTLS协商以及传输错误时的自动重连。
  • MCP工具处理器(internal/tools)在调用LDAP操作之前验证输入;例如,page_size参数被限制在用于分页结果控制的uint32范围内。
  • 使用gofmt格式化Go源代码,并在依赖项更改时通过go mod tidy保持模块依赖项整洁。