mcpField
M
mcp-keycloak

mcp-keycloak

本地服务
github.com/dockndevai安全13 天前更新

关于 mcp-keycloak

mcp-keycloak 是用于 Keycloak 的 MCP 服务,供 MCP 客户端检查和管理 realm、用户、客户端、角色及组。它默认只读,并以 realm 范围、保护规则和删除门槛限制变更。

主要功能

  1. 01检查 realm、用户、客户端和组
  2. 02创建、更新用户及重置密码
  3. 03按权限级别开放操作工具
  4. 04设置 realm 白名单和保护规则
  5. 05删除门槛、试运行和审计日志

适用场景

  1. 01盘点 Keycloak realm 与用户
  2. 02更新用户信息或重置密码
  3. 03检查客户端、角色和组
  4. 04在受限范围内管理身份资源

MCP 相关

该服务向 MCP 客户端提供 Keycloak 查询和管理工具。工具按只读、读写和管理员模式注册,破坏性操作可通过 MCP elicitation 请求人工确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dockndevai-mcp-keycloak": {
"command": "npx",
"args": [
"-y",
"@dockndevai/mcp-keycloak"
],
"env": {
"KEYCLOAK_URL": "<KEYCLOAK_URL>",
"KEYCLOAK_CLIENT_ID": "<KEYCLOAK_CLIENT_ID>",
"KEYCLOAK_CLIENT_SECRET": "<KEYCLOAK_CLIENT_SECRET>",
"KEYCLOAK_MODE": "<KEYCLOAK_MODE>"
}
}
}
}
启动命令npx -y @dockndevai/mcp-keycloak
需要配置的环境变量
KEYCLOAK_URL密钥Base URL of the Keycloak server (no trailing slash).
KEYCLOAK_CLIENT_ID密钥Client id used to authenticate (default admin-cli).
KEYCLOAK_CLIENT_SECRET密钥Service-account client secret (or use KEYCLOAK_USERNAME/PASSWORD).
KEYCLOAK_MODE密钥Access mode: read-only | read-write | admin.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@dockndevai/mcp-keycloak0.3.3

工具

8

收录的工具列表 · 更新于 3 天前

此工具无需参数。

详细介绍

mcp-keycloak

CI License: MIT npm

一个用于 Keycloak 的 Model Context Protocol 服务。它允许支持 MCP 的客户端(Claude Desktop、Claude Code 等)检查和管理 Keycloak realm、用户、客户端、角色和组——安全性完全由标志控制。

设计目标是默认安全:以只读模式启动,将范围限定在允许列表中的 realm,保护敏感 realm 免遭修改,并通过明确选择加入来控制破坏性操作。

功能

  • 多 realm — 每个工具都接受 realm 参数;可使用允许列表限定范围。
  • 访问模式 — read-only → read-write → admin,分层设置,确保任何模式都不会暴露高于其级别的工具。
  • 安全标志 — realm 允许列表、受保护的 realm、删除控制、试运行和 JSON 审计日志(见下文)。
  • 两种身份验证策略 — 机密客户端服务账号(推荐)或管理员用户名/密码。
  • 无沉重依赖 — 轻量、基于 fetch 的 Admin REST 客户端,以及 MCP SDK 和 zod。

安全模型

关注点标志默认值效果
服务可以执行哪些操作?KEYCLOAK_MODEread-onlyread-only 仅开放读取工具;read-write 增加修改操作;admin 增加破坏性工具。高于当前模式的工具永远不会注册。
哪些 realm 在作用范围内?KEYCLOAK_REALM_ALLOWLIST(全部)以逗号分隔。设置后,任何对列表外 realm 的操作都会被拒绝。
哪些 realm 永远只读?KEYCLOAK_PROTECTED_REALMSmaster受保护的 realm 可以读取,但无论模式如何,都不能修改或删除。
是否可以删除?KEYCLOAK_ALLOW_DELETEfalsedelete_* 工具必须同时满足此条件和 admin 模式。
预览操作但不触及 KeycloakKEYCLOAK_DRY_RUNfalse写入/admin 工具会验证并记录操作意图,然后直接返回,不会调用 Keycloak。
审计追踪KEYCLOAK_AUDIT_LOGtrue每次受控操作都会向 stderr 输出一行 JSON(ALLOW / DENY / DRY_RUN)。
交互式确认(自动)—执行前,破坏性和高影响操作会通过 MCP elicitation 提示用户批准;不支持 elicitation 的客户端会退回到 *_ALLOW_* 控制项。

这些层级彼此独立——例如,admin 模式配合 KEYCLOAK_ALLOW_DELETE=false 可以创建和更新用户,但不能删除用户。

工具

读取(read-only+):list_realms、get_realm、list_users、get_user、count_users、list_clients、list_realm_roles、list_groups

写入(read-write+):create_user、update_user、reset_password、logout_user

管理(admin):delete_user

快速开始 — 添加到你的 Agent

已发布到 npm,包名为 @dockndevai/mcp-keycloak。无需克隆或构建——MCP 客户端会在需要时通过 npx 运行它。请从 read-only 模式开始;所有变量见 .env.example,各客户端的完整指南见 docs/CLIENTS.md。

Claude Code(CLI)

claude mcp add keycloak -e KEYCLOAK_URL="https://keycloak.example.com" -e KEYCLOAK_CLIENT_ID="admin-cli" -e KEYCLOAK_CLIENT_SECRET="your-secret" -e KEYCLOAK_MODE="read-only" -- npx -y @dockndevai/mcp-keycloak

Claude Desktop · Cursor · Windsurf — 在 claude_desktop_config.json、.cursor/mcp.json 或 ~/.codeium/windsurf/mcp_config.json 中使用相同配置块:

{
  "mcpServers": {
    "keycloak": {
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-keycloak"
      ],
      "env": {
        "KEYCLOAK_URL": "https://keycloak.example.com",
        "KEYCLOAK_CLIENT_ID": "admin-cli",
        "KEYCLOAK_CLIENT_SECRET": "your-secret",
        "KEYCLOAK_MODE": "read-only"
      }
    }
  }
}

OpenAI Codex CLI — 在 ~/.codex/config.toml 中:

[mcp_servers.keycloak]
command = "npx"
args = ["-y", "@dockndevai/mcp-keycloak"]
env = { KEYCLOAK_URL = "https://keycloak.example.com", KEYCLOAK_CLIENT_ID = "admin-cli", KEYCLOAK_CLIENT_SECRET = "your-secret", KEYCLOAK_MODE = "read-only" }

VS Code(GitHub Copilot,Agent 模式) — 在 .vscode/mcp.json 中:

{
  "servers": {
    "keycloak": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@dockndevai/mcp-keycloak"
      ],
      "env": {
        "KEYCLOAK_URL": "https://keycloak.example.com",
        "KEYCLOAK_CLIENT_ID": "admin-cli",
        "KEYCLOAK_CLIENT_SECRET": "your-secret",
        "KEYCLOAK_MODE": "read-only"
      }
    }
  }
}

配置

复制 .env.example 并填写,或直接在 MCP 客户端配置中设置变量。建议使用具有所需 realm-management 角色的机密客户端凭据。

从源代码运行(开发)

建议使用上方发布的包。从克隆的仓库运行:

npm install
npm run build
node dist/index.js   # with the environment variables set

开发

npm run dev        # watch mode
npm test           # unit tests for the security policy
npm run typecheck

发布

此服务提供 server.json,用于官方 MCP 注册表,以及 mcpName,用于验证 npm 所有权。有关发布到 npm 并在 MCP 注册表、Smithery、Glama、Cursor 和 PulseMCP 上列出,请参阅 PUBLISHING.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。