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