Octodet Keycloak MCP 服务器是一款强大的用于 Keycloak 管理的模型上下文协议(MCP)服务器。它提供了一套全面的工具,可通过大语言模型(LLM)接口管理用户、领域、角色和其他 Keycloak 资源。
Octodet Keycloak MCP 服务器为 Keycloak 管理提供了便捷的途径,通过一系列工具可以轻松管理用户、领域和角色等资源。以下是使用前的安装和配置步骤。
该服务器以 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
或rolesToRemove
中的至少一个。- 不存在的角色将被跳过并发出警告。
- 操作按角色列表是原子性的(每种操作类型要么全部执行,要么全部不执行)。
list-users
查找正确的用户 ID。clientId
参数接受可读的客户端 ID 和 UUID 标识符。list-realms
验证领域名称。list-roles
发现可用的角色。# 克隆仓库
git clone
# 安装依赖
npm install
# 以监视模式启动开发服务器
npm run watch
要向服务器添加新工具,请按以下步骤操作:
src/index.ts
中定义工具模式。ListToolsRequestSchema
处理程序中。CallToolRequestSchema
开关语句中实现工具处理程序。MCP 检查器是测试 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 - 为开发者构建智能工具