A side-by-side look at the MCP Keycloak Admin and Emilia Protocol MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose MCP Keycloak Admin for security work as a local process; choose Emilia Protocol for security as a local process. You can also run both side by side in one mcpServers block.
KEYCLOAK_BASE_URL, KEYCLOAK_REALM, AUTH_MODE, KC_CLIENT_ID, KC_CLIENT_SECRET, KC_ADMIN_USERNAME, KC_ADMIN_PASSWORD, READ_ONLY.keycloak_user_search, keycloak_user_get, keycloak_user_sessions_list.ep_guard_action, ep_check_signoff, ep_verify_receipt.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Security | Security |
| Quality signal | 61/100 · Good | 71/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | No auth required |
| Pricing | Free | Free |
| Required env vars | KEYCLOAK_BASE_URLKEYCLOAK_REALMAUTH_MODEKC_CLIENT_IDKC_CLIENT_SECRETKC_ADMIN_USERNAMEKC_ADMIN_PASSWORDREAD_ONLY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 2 | 612 |
| Directory activity | 2 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 56 | 3 |
| Full listing | View MCP Keycloak Admin | View Emilia Protocol |
keycloak_user_searchSearch realm users by email, username or free text.keycloak_user_getFetch a single user by id.keycloak_user_sessions_listList a user's active sessions.keycloak_user_createCreate a realm user.keycloak_user_updateUpdate a user's email, name or enabled flag.keycloak_user_set_enabledEnable or disable a user.keycloak_user_send_action_emailSend a required-actions email.keycloak_user_reset_passwordSet a new password for a user.keycloak_user_logoutRevoke all of a user's sessions.keycloak_user_deletePermanently delete a user (id + username must match).keycloak_role_listList realm roles.keycloak_user_roles_getList a user's realm roles.ep_guard_actionRequest authorization before an irreversible action: payments, wire transfers, fund releases, deletions, record or account changes, or sending messages with real-world effect. Submits the exact action for policy evaluation and human authorization. This MCP tool does not itself sit at the executor choke point: even after approval, the executor MUST match the returned action_hash and atomically consume the receipt before effect. If BLOCKED, poll ep_check_signoff with the receipt_id.ep_check_signoffPoll a pending authorization after ep_guard_action returns BLOCKED. Pass the receipt_id. Returns PENDING, APPROVED_PENDING_CONSUME, CONSUMED, or DENIED. Approval alone is not permission to execute: the executor must match action_hash and atomically consume the receipt at its own choke point.ep_verify_receiptAsk the configured EMILIA service to verify a stored trust receipt and report its hash and anchor status. Read-only, but not an offline verifier: the result is the service response for the supplied receipt_id.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"mrz1880-mcp-keycloak-admin": {
"command": "npx",
"args": [
"-y",
"mcp-keycloak-admin"
],
"env": {
"KEYCLOAK_BASE_URL": "YOUR_KEYCLOAK_BASE_URL_HERE",
"KEYCLOAK_REALM": "YOUR_KEYCLOAK_REALM_HERE",
"AUTH_MODE": "YOUR_AUTH_MODE_HERE",
"KC_CLIENT_ID": "YOUR_KC_CLIENT_ID_HERE",
"KC_CLIENT_SECRET": "YOUR_KC_CLIENT_SECRET_HERE",
"KC_ADMIN_USERNAME": "YOUR_KC_ADMIN_USERNAME_HERE",
"KC_ADMIN_PASSWORD": "YOUR_KC_ADMIN_PASSWORD_HERE",
"READ_ONLY": "YOUR_READ_ONLY_HERE"
}
}
}
}
{
"mcpServers": {
"emiliaprotocol-emilia-protocol": {
"command": "npx",
"args": [
"-y",
"@emilia-protocol/mcp-server"
]
}
}
}