一个强大的用于管理 Keycloak 的 Model Context Protocol 服务器,提供了一整套工具通过 LLM 接口来管理用户、领域、角色和其他 Keycloak 资源。
<a href="https://glama.ai/mcp/servers/@Octodet/keycloak-mcp"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=3537824397,2936753144&fm=3081&app=3081&f=PNG?w=760&h=400" alt="高级 Keycloak 服务器 MCP 服务器" /> </a>该服务器作为 NPM 包可用:
# 直接使用 npx
npx -y @octodet/keycloak-mcp
# 或全局安装
npm install -g @octodet/keycloak-mcp
| 变量名称 | 描述 | 默认值 |
|---|---|---|
| KEYCLOAK_URL | Keycloak 服务器 URL | http://localhost:8080 |
| KEYCLOAK_ADMIN | 管理员用户名 | admin |
| KEYCLOAK_ADMIN_PASSWORD | 管理员密码 | admin |
| KEYCLOAK_REALM | 默认领域 | master |
在你的 settings.json 中添加以下内容:
{
"mcp.servers": {
"keycloak": {
"command": "npx",
"args": ["-y", "@octodet/keycloak-mcp"],
"env": {
"KEYCLOAK_URL": "http://localhost:8080",
"KEYCLOAK_ADMIN": "admin",
"KEYCLOAK_ADMIN_PASSWORD": "admin"
}
}
}
}
在你的 Claude Desktop 配置文件中配置:
{
"mcpServers": {
"keycloak": {
"command": "npx",
"args": ["-y", "@octodet/keycloak-mcp"],
"env": {
"KEYCLOAK_URL": "http://localhost:8080",
"KEYCLOAK_ADMIN": "admin",
"KEYCLOAK_ADMIN_PASSWORD": "admin"
}
}
}
}
{
"mcpServers": {
"keycloak": {
"command": "node",
"args": ["path/to/build/index.js"],
"env": {
"KEYCLOAK_URL": "http://localhost:8080",
"KEYCLOAK_ADMIN": "admin",
"KEYCLOAK_ADMIN_PASSWORD": "admin"
}
}
}
}
该服务器提供了全面的 MCP 工具集,用于 Keycloak 管理。每个工具都设计用于执行跨领域、用户和角色的具体管理任务。
| 工具 | 类别 | 描述 |
|---|---|---|
create-user | 用户管理 | 在指定领域创建新用户 |
delete-user | 用户管理 | 从领域中删除现有用户 |
list-users | 用户管理 | 列出指定领域的所有用户 |
list-realms | 领域管理 | 列出所有可用领域 |
list-roles | 角色管理 | 列出特定客户端的所有角色 |
update-user-roles | 角色管理 | 为用户添加或移除客户端角色 |
create-user在指定领域创建具有全面用户属性和可选凭据的新用户。
必需参数:
realm (字符串): 目标领域名称username (字符串): 新用户的唯一用户名email (字符串): 有效的电子邮件地址firstName (字符串): 用户名lastName (字符串): 用户姓可选参数:
enabled (布尔值): 启用/禁用用户账户(默认: true)emailVerified (布尔值): 标记电子邮件已验证credentials (数组): 设置密码的凭据对象数组凭据对象结构:
type (字符串): 凭据类型(例如,“password”)value (字符串): 凭据值temporary (布尔值): 是否必须在首次登录时更改密码示例用法:
{
"realm": "my-app-realm",
"username": "john.doe",
"email": "john.doe@company.com",
"firstName": "John",
"lastName": "Doe",
"enabled": true,
"emailVerified": true,
"credentials": [
{
"type": "password",
"value": "TempPassword123!",
"temporary": true
}
]
}
响应: 返回创建的用户ID和确认消息。
delete-user永久地从指定领域中删除用户。此操作无法撤销。
必需参数:
realm (字符串): 目标领域名称userId (字符串): 要删除用户的唯一标识符示例用法:
{
"realm": "my-app-realm",
"userId": "8f5c21e3-7c9d-4b5a-9f3e-8d4f6a2e7b1c"
}
响应: 成功删除的确认消息。
⚠️ 警告: 此操作不可逆。确保您有正确的用户ID后再执行。
list-users检索指定领域中所有用户的列表及其基本信息。
必需参数:
realm (字符串): 目标领域名称示例用法:
{
"realm": "my-app-realm"
}
响应: 返回显示用户名和用户ID的格式化列表,适用于领域中的所有用户。
list-realms检索 Keycloak 实例中的所有可用领域。
参数: 无需任何参数
示例用法:
{}
响应: 返回 Keycloak 安装中所有领域名称的列表。
使用场景:
list-roles列出特定客户端在领域内定义的所有角色。有助于在分配之前理解可用权限和角色。
必需参数:
realm (字符串): 目标领域名称clientId (字符串): 目标客户端的客户端ID或UUID示例用法:
{
"realm": "my-app-realm",
"clientId": "my-application"
}
使用客户端UUID的替代方法:
{
"realm": "my-app-realm",
"clientId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
响应: 返回指定客户端可用的所有角色名称的格式化列表。
💡 提示: 您可以使用客户端的人类可读ID或其UUID标识符。
update-user-roles管理用户的客户端角色分配。允许在一个操作中添加和移除角色。
必需参数:
realm (字符串): 目标领域名称userId (字符串): 用户的唯一标识符clientId (字符串): 客户端ID或UUID可选参数:
rolesToAdd (数组): 要分配给用户的角色名称列表rolesToRemove (数组): 要从用户移除的角色名称列表示例用法 - 添加角色:
{
"realm": "my-app-realm",
"userId": "8f5c21e3-7c9d-4b5a-9f3e-8d4f6a2e7b1c",
"clientId": "my-application",
"rolesToAdd": ["admin", "user-manager", "report-viewer"]
}
示例用法 - 移除角色:
{
"realm": "my-app-realm",
"userId": "8f5c21e3-7c9d-4b5a-9f3e-8d4f6a2e7b1c",
"clientId": "my-application",
"rolesToRemove": ["temporary-access", "beta-tester"]
}
示例用法 - 组合操作:
{
"realm": "my-app-realm",
"userId": "8f5c21e3-7c9d-4b5a-9f3e-8d4f6a2e7b1c",
"clientId": "my-application",
"rolesToAdd": ["senior-user"],
"rolesToRemove": ["junior-user", "trainee"]
}
响应: 详细总结添加、移除的角色以及遇到的任何错误。
🔍 注意事项:
rolesToAdd 或 rolesToRemovelist-users 查找正确的用户ID。clientId 参数接受人类可读的客户端ID和UUID标识符。list-realms 验证领域名称。list-roles 在尝试角色分配前发现可用角色。# 克隆仓库
git clone <repository-url>
# 安装依赖
npm install
# 使用 watch 模式启动开发服务器
npm run watch
要向服务器添加新工具:
src/index.ts 中使用 Zod 定义工具模式ListToolsRequestSchema 处理程序CallToolRequestSchema 切换语句中实现工具处理器MCP Inspector 是测试您的 MCP 服务器的好工具:
npx -y @modelcontextprotocol/inspector npx -y @octodet/keycloak-mcp
与本地 Keycloak 实例一起测试:
# 使用 Docker 启动 Keycloak
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:latest start-dev
# 在另一个终端运行 MCP 服务器
npm run build
node build/index.js
该项目发布到 NPM 下的 @octodet/keycloak-mcp。
该项目使用 GitHub Actions 进行 CI/CD,在创建新版本时自动测试并发布到 NPM。
本项目根据 MIT 许可证授权 - 详情见 LICENSE 文件。
Octodet - 为开发者构建智能工具