这是一个用于 Keycloak 的模型上下文协议(MCP)服务器实现,提供了一个标准化接口来管理 Keycloak 用户和领域。
该项目实现了一个与 Keycloak 集成的 MCP 服务器,允许您通过一个标准化协议来管理 Keycloak 用户和领域。它使用官方的 Keycloak 管理客户端与 Keycloak 的 API 进行交互。
https://github.com/user-attachments/assets/4b02a049-b8d6-4cc5-a7b4-564a0e758dd8
在指定的领域中创建一个新的用户。
输入参数:
realm: 领域名username: 新用户的用户名email: 用户的电子邮件地址firstName: 用户的名字lastName: 用户的姓氏从指定的领域中删除一个用户。
输入参数:
realm: 领域名userId: 要删除的用户的ID列出所有可用的领域。
列出指定领域的所有用户。
输入参数:
realm: 领域名列出指定领域的所有客户端。
输入参数:
realm: 领域名列出指定领域的所有组。
输入参数:
realm: 领域名列出特定客户端在领域中的所有角色。
输入参数:
realm: 领域名clientUniqueId: 客户端的唯一ID将客户端角色分配给特定用户。
输入参数:
realm: 领域名userId: 用户的IDclientUniqueId: 客户端的唯一IDroleName: 要分配的角色名称将用户添加到特定组。
输入参数:
realm: 领域名userId: 用户的IDgroupId: 组的ID要通过 Smithery 自动安装 keycloak-mcp 到 Claude Desktop:
$ npx -y @smithery/cli install @HaithamOumerzoug/keycloak-mcp --client claude
--keycloak-url <Keycloak 实例 URL>--keycloak-admin <管理员用户名>--keycloak-admin-password <管理员密码>该服务器作为 NPM 包提供:
# 直接使用 npx
$ npx -y keycloak-mcp --keycloak-url <Keycloak 实例 URL> --keycloak-admin <管理员用户名> --keycloak-admin-password <管理员密码>
# 或全局安装
$ npm install -g keycloak-mcp@latest
$ keycloak-mcp --keycloak-url <Keycloak 实例 URL> --keycloak-admin <管理员用户名> --keycloak-admin-password <管理员密码>
在您的 Cursor IDE、Cline 或 Claude Desktop MCP 配置文件中配置服务器:
{
"mcpServers": {
"keycloak": {
"command": "npx",
"args": ["-y", "keycloak-mcp"],
"env": {
"KEYCLOAK_URL": "http://localhost:8080",
"KEYCLOAK_ADMIN": "admin",
"KEYCLOAK_ADMIN_PASSWORD": "admin"
}
}
}
}
{
"mcpServers": {
"keycloak": {
"command": "node",
"args": ["path/to/dist/server.js"],
"env": {
"KEYCLOAK_URL": "http://localhost:8080",
"KEYCLOAK_ADMIN": "admin",
"KEYCLOAK_ADMIN_PASSWORD": "admin"
}
}
}
}
要设置开发环境:
npm install
cp .env.template .env
# 编辑 .env 文件并设置所有变量的适当值
npm run dev
npm run build - 构建项目并生成 CLI 可执行文件npm run prepare - 运行构建脚本(在包安装期间使用)npm run dev - 监视更改并自动重新构建npm start - 启动服务器(用于生产)@keycloak/keycloak-admin-client - 官方 Keycloak 管理客户端@modelcontextprotocol/sdk - MCP SDK 用于标准化协议实现zod - TypeScript 优先的模式验证chalk - 终端字符串样式化yargs - 解析命令行参数typescript - 支持 TypeScript@types/node - TypeScript 对于 Node.js 的定义shx - 跨平台的 shell 命令ts-node - TypeScript 执行和 Node.js 的 REPLrimraf - 一个跨平台的删除目录工具@types/yargs - TypeScript 对于 yargs 的定义MIT