LDAP目录服务

通过模型上下文协议(MCP)暴露LDAP目录,使MCP客户端能够使用标准工具/资源工作流运行常见的目录搜索和CRUD操作。

  • by trxo
  • Go
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 trxo/ldap-mcp

使用说明

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 当依赖关系发生变化时。