Skip to content

keycloak model context protocol for VS Code

io.github.christophenglisch/keycloak-model-context-protocol

Manage Keycloak users, groups, roles and realms through the Keycloak Admin REST API.

client:VS Code transport:stdio runtime:npm

Install keycloak model context protocol in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "keycloak-url",
      "description": "KEYCLOAK_URL",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-auth-realm",
      "description": "KEYCLOAK_AUTH_REALM",
      "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-username",
      "description": "KEYCLOAK_USERNAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-password",
      "description": "KEYCLOAK_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-grant-type",
      "description": "KEYCLOAK_GRANT_TYPE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-read-only",
      "description": "KEYCLOAK_MCP_READ_ONLY",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-realms",
      "description": "KEYCLOAK_MCP_REALMS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-allow-master-write",
      "description": "KEYCLOAK_MCP_ALLOW_MASTER_WRITE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-toolsets",
      "description": "KEYCLOAK_MCP_TOOLSETS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-require-confirmation",
      "description": "KEYCLOAK_MCP_REQUIRE_CONFIRMATION",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-timeout-ms",
      "description": "KEYCLOAK_MCP_TIMEOUT_MS",
      "password": true
    },
    {
      "type": "promptString",
      "id": "keycloak-mcp-log-level",
      "description": "KEYCLOAK_MCP_LOG_LEVEL",
      "password": true
    }
  ],
  "servers": {
    "keycloak-model-context-protocol": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "keycloak-model-context-protocol"
      ],
      "env": {
        "KEYCLOAK_URL": "${input:keycloak-url}",
        "KEYCLOAK_AUTH_REALM": "${input:keycloak-auth-realm}",
        "KEYCLOAK_CLIENT_ID": "${input:keycloak-client-id}",
        "KEYCLOAK_CLIENT_SECRET": "${input:keycloak-client-secret}",
        "KEYCLOAK_USERNAME": "${input:keycloak-username}",
        "KEYCLOAK_PASSWORD": "${input:keycloak-password}",
        "KEYCLOAK_GRANT_TYPE": "${input:keycloak-grant-type}",
        "KEYCLOAK_MCP_READ_ONLY": "${input:keycloak-mcp-read-only}",
        "KEYCLOAK_MCP_REALMS": "${input:keycloak-mcp-realms}",
        "KEYCLOAK_MCP_ALLOW_MASTER_WRITE": "${input:keycloak-mcp-allow-master-write}",
        "KEYCLOAK_MCP_TOOLSETS": "${input:keycloak-mcp-toolsets}",
        "KEYCLOAK_MCP_REQUIRE_CONFIRMATION": "${input:keycloak-mcp-require-confirmation}",
        "KEYCLOAK_MCP_TIMEOUT_MS": "${input:keycloak-mcp-timeout-ms}",
        "KEYCLOAK_MCP_LOG_LEVEL": "${input:keycloak-mcp-log-level}"
      }
    }
  }
}

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

keycloak model context protocol in other clients