keycloak-mcp

Operate managed Keycloak from your AI client.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Skycloak Add Cluster Captcha Domain: Register a hostname for CAPTCHA protection on a cluster.
  • Skycloak Add Realm User To Group: Add a user to a realm group.
  • Skycloak Assign Application Role: Grant a role to an application's service account. Provide role_client_id for a client role, or omit it for a realm role.

What data it sees

Do you need an account

No: the server works without sign-in

Operate managed Keycloak from your AI client. Provision and scale clusters, create realms and applications, wire up SSO and identity providers (Google, GitHub, SAML, LDAP), manage users, roles and groups, set custom domains and branding, configure WAF and geo-blocking, and stream audit events to your SIEM. Signs you in through the browser with OAuth, so there is no API key to paste, and what you can change is bounded by your workspace role.

How to connect

How to connect keycloak-mcp to Claude

The server address to paste into Claude settings:

https://keycloak-mcp--skycloak.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect keycloak-mcp to ChatGPT

The server address to paste into ChatGPT settings:

https://keycloak-mcp--skycloak.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect keycloak-mcp to Cursor

The server address to paste into Cursor settings:

https://keycloak-mcp--skycloak.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (60)

Raw names from tools/list. Only developers need these.

skycloak_add_cluster_captcha_domainRegister a hostname for CAPTCHA protection on a cluster.
skycloak_add_realm_user_to_groupAdd a user to a realm group.
skycloak_assign_application_roleGrant a role to an application's service account. Provide role_client_id for a client role, or omit it for a realm role.
skycloak_assign_realm_user_roleAssign a realm role to a user.
skycloak_cancel_cluster_upgradeCancel an in-progress cluster version upgrade. Set confirm=true to proceed.
skycloak_create_applicationCreate an OIDC/SAML client (application) in a realm. Returns the client secret for confidential clients (store it; it is not retrievable later).
skycloak_create_clusterProvision a new Keycloak cluster. Asynchronous: the returned cluster starts in a provisioning state — poll skycloak_get_cluster until its status is 'available'. Requires --allow-writes.
skycloak_create_domainAdd a custom domain to a cluster. Returns the DNS records the customer must create to verify and route the domain.
skycloak_create_domain_routeAdd a realm route to a custom domain.
skycloak_create_exportStart a database export for a cluster. Asynchronous: poll skycloak_get_export until the status is 'completed' to obtain the download URL. Including credentials requires an encryption_password.
skycloak_create_identity_providerCreate an OIDC identity provider (SSO connection) in a realm.
skycloak_create_realmCreate a new Keycloak realm in a cluster. Requires the server to be started with --allow-writes and a write-scoped API key.
skycloak_create_realm_exportExport a Keycloak realm to an encrypted archive. Asynchronous: poll skycloak_get_realm_export until status is 'completed'. The archive is always encrypted, so encryption_password is required, and the same password is needed to import it again. This is a realm export (one realm's configuration); skycloak_create_export is the separate whole-cluster database export.
skycloak_create_realm_groupCreate a realm group, optionally nested under a parent group.
skycloak_create_realm_importImport a Keycloak realm into a cluster from an uploaded archive or an existing realm export. Asynchronous: poll skycloak_get_realm_import. Creates a new realm: preflight refuses a name collision rather than overwriting, so an existing realm of the same name fails with 409. It does import users and their credentials, so set confirm=true to proceed.
skycloak_create_realm_import_upload_urlGet a presigned URL to upload a realm archive to. PUT the archive to upload_url, then pass the returned s3_key to skycloak_create_realm_import as upload_s3_key. Not needed when importing an existing export: pass that export's ID as source_export_id instead.
skycloak_create_realm_roleCreate a realm-scoped role.
skycloak_create_realm_userCreate a realm user with an initial temporary password.
skycloak_create_siem_destinationCreate a SIEM destination. Credentials are write-only and are not returned.
skycloak_create_webhook_subscriptionCreate a webhook subscription. Signing secrets and authorization headers are write-only.
skycloak_delete_applicationDelete an application (OIDC/SAML client) from a realm. Set confirm=true to proceed.
skycloak_delete_clusterPermanently delete a Keycloak cluster and all of its realms and data. Irreversible. Set confirm=true to proceed.
skycloak_delete_cluster_maintenance_windowDelete a cluster-specific maintenance window so the cluster follows the workspace default. Set confirm=true to proceed.
skycloak_delete_domainRemove a custom domain from a cluster. Set confirm=true to proceed.
skycloak_delete_domain_routeRemove a realm route from a custom domain. Set confirm=true to proceed.
skycloak_delete_email_brandingRevert email branding to defaults. Set confirm=true to proceed.
skycloak_delete_exportDelete a database export archive. Set confirm=true to proceed.
skycloak_delete_extensionDelete a custom extension from the workspace catalog. Set confirm=true to proceed.
skycloak_delete_identity_providerDelete an identity provider from a realm. Set confirm=true to proceed.
skycloak_delete_login_brandingRevert login branding to defaults. Set confirm=true to proceed.
skycloak_delete_realmPermanently delete a realm and all of its users, clients and configuration. This is irreversible. Set confirm=true to proceed.
skycloak_delete_realm_groupDelete a realm group. Set confirm=true to proceed.
skycloak_delete_realm_roleDelete a realm role. Set confirm=true to proceed.
skycloak_delete_realm_userDelete a realm user. Set confirm=true to proceed.
skycloak_delete_siem_destinationDelete a SIEM destination. Set confirm=true to proceed.
skycloak_delete_smtpRemove a realm's SMTP configuration. Set confirm=true to proceed.
skycloak_delete_themeDelete a custom theme. Set confirm=true to proceed.
skycloak_delete_webhook_subscriptionDelete a webhook subscription. Set confirm=true to proceed.
skycloak_discover_oidcResolve an OIDC issuer's discovery document to obtain its authorization, token, and userinfo endpoints. Use the result when creating an identity provider.
skycloak_download_theme_contentDownload a custom theme's content archive. Returns size and SHA-256 always, and the archive itself only when it is small enough to inline.
skycloak_export_cluster_eventsExport a cluster's events as a document and return its contents.
skycloak_get_applicationGet an application (OIDC/SAML client) by client ID.
skycloak_get_client_theme_assignmentGet a client's login-theme override (empty means the realm default).
skycloak_get_clusterGet full details for a single Keycloak cluster by its ID.
skycloak_get_cluster_insightsGet cluster analytics as a JSON document. type is one of: overview, authentication, events, performance, security.
skycloak_get_cluster_maintenance_windowGet a cluster-specific maintenance window. A 404 means the cluster follows the workspace default.
skycloak_get_cluster_securityGet a cluster's edge-security configuration: IP allow-listing, rate limiting, WAF, geo-blocking, and bot management.
skycloak_get_cluster_upgrade_pathGet the recommended version-upgrade path for a cluster.
skycloak_get_domainGet a custom domain by ID, including its DNS records and verification/SSL status.
skycloak_get_domain_routeGet a single realm route on a custom domain.
skycloak_get_email_brandingGet the email-template branding (colors, logo, footer) for a realm.
skycloak_get_exportGet a database export job by ID, including its status, progress, and (once completed) the time-limited download URL.
skycloak_get_identity_providerGet an identity provider by provider ID.
skycloak_get_login_brandingGet the login-page branding (colors, logo, toggles) for a realm.
skycloak_get_logsRead recent Keycloak server logs for a cluster, optionally filtered by level and a search string.
skycloak_get_realmGet a realm by name.
skycloak_get_realm_exportGet a realm export job by ID. Poll this after skycloak_create_realm_export until status is 'completed'; the download URL only appears then and expires 24 hours later.
skycloak_get_realm_groupGet a realm group by ID.
skycloak_get_realm_importGet a realm import job by ID. Poll this after skycloak_create_realm_import until status is 'completed' or 'failed'.
skycloak_get_realm_roleGet a realm role by name.