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