Keycloak MCP server that calls the Admin API as the signed-in user, via OAuth
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"keycloak-mcp-server","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# Keycloak MCP Server [](https://www.python.org/downloads/) [](https://github.com/drtinkerer/keycloak-mcp-server/actions/workflows/test.yml) [](https://codecov.io/gh/drtinkerer/keycloak-mcp-server) [](https://opensource.org/licenses/Apache-2.0) [](https://codespaces.new/drtinkerer/keycloak-mcp-server) [](https://m8ven.ai/mcp/drtinkerer-keycloak-mcp-server-cbzxll?s=readme) An MCP server for the Keycloak Admin REST API where **every call runs as the signed-in user**. Users log in to Keycloak from their MCP client (Claude Code, …) in the browser; the server checks *their own* access token and sends it to the Admin API, so Keycloak enforces each user's existing roles. There is no shared admin password or service account, and the server stores nothing. ``` MCP client ──browser login (OAuth 2.1 + PKCE)──▶ Keycloak │ └── tool call, Bearer <user's token> ──▶ this server ──Admin API, same token──▶ Keycloak (verifies signature, audience, client) (decides: allowed / 403) ``` ## Why per-user identity Most Keycloak MCP servers authenticate with one admin account or service account, so anyone who can reach the server acts with its full power, and the audit trail shows the shared account instead of the person. Here: - **Least privilege for free**: a user with only `view-clients` can list clients and gets a clean permission error for everything else. - **Audit trails name the real user**. - **No admin…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.