Skip to content
VS Code

Keycloak Admin API for VS Code

io.github.sferarc/keycloak-api-mcp

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

client:VS Code transport:stdio runtime:npm

Install Keycloak Admin API in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "keycloak-url",
      "description": "KEYCLOAK_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-realm",
      "description": "KEYCLOAK_REALM",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-token",
      "description": "KEYCLOAK_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-client-id",
      "description": "KEYCLOAK_CLIENT_ID",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-client-secret",
      "description": "KEYCLOAK_CLIENT_SECRET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-token-realm",
      "description": "KEYCLOAK_TOKEN_REALM",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-allow-writes",
      "description": "KEYCLOAK_MCP_ALLOW_WRITES",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-resources",
      "description": "KEYCLOAK_MCP_RESOURCES",
      "password": true
    }
  ],
  "servers": {
    "keycloak-api-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "keycloak-api"
      ],
      "env": {
        "KEYCLOAK_URL": "${input:keycloak-url}",
        "KEYCLOAK_REALM": "${input:keycloak-realm}",
        "KEYCLOAK_TOKEN": "${input:keycloak-token}",
        "KEYCLOAK_CLIENT_ID": "${input:keycloak-client-id}",
        "KEYCLOAK_CLIENT_SECRET": "${input:keycloak-client-secret}",
        "KEYCLOAK_TOKEN_REALM": "${input:keycloak-token-realm}",
        "KEYCLOAK_MCP_ALLOW_WRITES": "${input:keycloak-mcp-allow-writes}",
        "KEYCLOAK_MCP_RESOURCES": "${input:keycloak-mcp-resources}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

Keycloak Admin API in other clients