NestDaddy

Keycloak Admin API

io.github.sferarc/keycloak-api-mcp · v3.8.0

Unofficial: one tool per Keycloak admin operation on a realm, read-only unless writes are enabled

Connect Runs on your machine

Terminal
claude mcp add keycloak-api-mcp -e KEYCLOAK_URL=<KEYCLOAK_URL> -e KEYCLOAK_REALM=<KEYCLOAK_REALM> -e KEYCLOAK_TOKEN=<KEYCLOAK_TOKEN> -e KEYCLOAK_CLIENT_ID=<KEYCLOAK_CLIENT_ID> -e KEYCLOAK_CLIENT_SECRET=<KEYCLOAK_CLIENT_SECRET> -e KEYCLOAK_TOKEN_REALM=<KEYCLOAK_TOKEN_REALM> -e KEYCLOAK_MCP_ALLOW_WRITES=<KEYCLOAK_MCP_ALLOW_WRITES> -e KEYCLOAK_MCP_RESOURCES=<KEYCLOAK_MCP_RESOURCES> -- npx -y [email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "keycloak-api-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "KEYCLOAK_URL": "<KEYCLOAK_URL>",
        "KEYCLOAK_REALM": "<KEYCLOAK_REALM>",
        "KEYCLOAK_TOKEN": "<KEYCLOAK_TOKEN>",
        "KEYCLOAK_CLIENT_ID": "<KEYCLOAK_CLIENT_ID>",
        "KEYCLOAK_CLIENT_SECRET": "<KEYCLOAK_CLIENT_SECRET>",
        "KEYCLOAK_TOKEN_REALM": "<KEYCLOAK_TOKEN_REALM>",
        "KEYCLOAK_MCP_ALLOW_WRITES": "<KEYCLOAK_MCP_ALLOW_WRITES>",
        "KEYCLOAK_MCP_RESOURCES": "<KEYCLOAK_MCP_RESOURCES>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "keycloak-api-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "KEYCLOAK_URL": "<KEYCLOAK_URL>",
        "KEYCLOAK_REALM": "<KEYCLOAK_REALM>",
        "KEYCLOAK_TOKEN": "<KEYCLOAK_TOKEN>",
        "KEYCLOAK_CLIENT_ID": "<KEYCLOAK_CLIENT_ID>",
        "KEYCLOAK_CLIENT_SECRET": "<KEYCLOAK_CLIENT_SECRET>",
        "KEYCLOAK_TOKEN_REALM": "<KEYCLOAK_TOKEN_REALM>",
        "KEYCLOAK_MCP_ALLOW_WRITES": "<KEYCLOAK_MCP_ALLOW_WRITES>",
        "KEYCLOAK_MCP_RESOURCES": "<KEYCLOAK_MCP_RESOURCES>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "keycloak-api-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "KEYCLOAK_URL": "<KEYCLOAK_URL>",
        "KEYCLOAK_REALM": "<KEYCLOAK_REALM>",
        "KEYCLOAK_TOKEN": "<KEYCLOAK_TOKEN>",
        "KEYCLOAK_CLIENT_ID": "<KEYCLOAK_CLIENT_ID>",
        "KEYCLOAK_CLIENT_SECRET": "<KEYCLOAK_CLIENT_SECRET>",
        "KEYCLOAK_TOKEN_REALM": "<KEYCLOAK_TOKEN_REALM>",
        "KEYCLOAK_MCP_ALLOW_WRITES": "<KEYCLOAK_MCP_ALLOW_WRITES>",
        "KEYCLOAK_MCP_RESOURCES": "<KEYCLOAK_MCP_RESOURCES>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
KEYCLOAK_URL
Required
Base URL of the server, such as https://keycloak.example.com
KEYCLOAK_REALM
Required
Realm the tools act on
KEYCLOAK_TOKEN
Optional, secret
A fixed access token; otherwise set KEYCLOAK_CLIENT_ID and KEYCLOAK_CLIENT_SECRET
KEYCLOAK_CLIENT_ID
Optional
A confidential client with a service account, for the client credentials grant
KEYCLOAK_CLIENT_SECRET
Optional, secret
Secret of that client
KEYCLOAK_TOKEN_REALM
Optional
Realm of that client, if not KEYCLOAK_REALM (for example master)
KEYCLOAK_MCP_ALLOW_WRITES
Optional
1 to list the tools that change data
KEYCLOAK_MCP_RESOURCES
Optional
Comma separated resources to list tools for, such as users,groups,roles

Details

Package[email protected] (NPM, stdio)
First published6 Nov 2026
Last updated6 Nov 2026
Registry nameio.github.sferarc/keycloak-api-mcp

More other servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.