Keycloak MCP Server
An MCP server for Keycloak administration, offering over 30 tools to manage users, realms, clients, roles, and more from AI assistants.
Documentation
Keycloak Model Context Protocol Server
A comprehensive Model Context Protocol (MCP) server for Keycloak administration, providing 80+ tools to manage users, realms, clients, roles, groups, sessions, events, organizations, protocol mappers, user attributes, client scopes, and identity providers directly from AI assistants like Claude Desktop or Cursor AI.
π Features
π€ User Management
- β Create, update, and delete users
- β List, search, and get user details
- β Reset user passwords
- β Logout user sessions
- β Manage user roles and groups
- β NEW: User attributes management (critical for organization data)
ποΈ Realm Management
- β List, create, update, and delete realms
- β Get detailed realm settings and configurations
- β Manage realm-level security policies
π§ Client Management
- β Register, update, and delete clients/applications
- β List all clients in realms
- β Configure client settings and redirect URIs
- β NEW: Protocol mappers management (critical for JWT claims)
π Role Management
- β Create, update, and delete roles (realm and client-level)
- β Assign and remove roles from users and groups
- β List all roles and user role assignments
- β NEW: Composite roles and role hierarchies
- β NEW: Advanced role operations by ID
- β NEW: Find users with specific roles
π₯ Group Management
- β Create, update, and delete user groups
- β Add and remove users from groups
- β Manage hierarchical group structures
- β NEW: Group attributes management
- β NEW: Child groups and subgroup management
- β NEW: Group member listing and management
π’ Organization Management β NEW
- β Create, update, and delete organizations
- β Add and remove organization members
- β List organizations and members
- β Organization attributes management
π Identity Provider Management β NEW
- β Create, update, and delete identity providers (SSO)
- β Identity provider mapper management
- β SAML and OIDC provider configuration
- β External user attribute mapping
π― Client Scopes Management β NEW
- β Create, update, and delete client scopes
- β Protocol mappers for client scopes
- β Token scope management
π Session & Event Management
- β List active user sessions
- β Monitor authentication and admin events
- β Clear event logs and manage session lifecycles
π‘οΈ Advanced Features
- β Bulletproof authentication with fresh client instances
- β Comprehensive error handling with detailed logging
- β Cross-platform support (Windows, macOS, Linux)
- β Production-ready with TypeScript and robust architecture
- β Organization JWT Claims - Solve organization visibility in tokens
- β 80+ Tools - Complete Keycloak administration coverage
π Prerequisites
- Node.js 18 or higher
- Running Keycloak instance (local or remote)
- Keycloak admin credentials with appropriate permissions
- AI Assistant that supports MCP (Claude Desktop, Cursor AI, etc.)
π¦ Installation
Global Installation (Recommended)
npm install -g keycloak-mcp-server
Using NPX (No Installation Required)
npx keycloak-mcp-server
Local Project Installation
npm install keycloak-mcp-server
Local Development
git clone https://github.com/M0-AR/keycloak-mcp-server.git
cd keycloak-mcp-server
npm install
npm run build
βοΈ Configuration
For Cursor AI
Add to your Cursor MCP configuration file (~/.cursor/mcp.json):
Option 1: Using NPX (Recommended)
{
"mcpServers": {
"keycloak": {
"command": "npx",
"args": ["keycloak-mcp-server"],
"env": {
"KEYCLOAK_URL": "https://your-keycloak-instance.com",
"KEYCLOAK_ADMIN": "your-admin-username",
"KEYCLOAK_ADMIN_PASSWORD": "your-admin-password"
}
}
}
}
Option 2: If Installed Globally
{
"mcpServers": {
"keycloak": {
"command": "keycloak-mcp-server",
"env": {
"KEYCLOAK_URL": "https://your-keycloak-instance.com",
"KEYCLOAK_ADMIN": "your-admin-username",
"KEYCLOAK_ADMIN_PASSWORD": "your-admin-password"
}
}
}
}
For Claude Desktop
Add to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"keycloak": {
"command": "npx",
"args": ["keycloak-mcp-server"],
"env": {
"KEYCLOAK_URL": "https://your-keycloak-instance.com",
"KEYCLOAK_ADMIN": "your-admin-username",
"KEYCLOAK_ADMIN_PASSWORD": "your-admin-password"
}
}
}
}
π Environment Variables
| Variable | Description | Default | Required |
|---|---|---|---|
KEYCLOAK_URL | The base URL of your Keycloak instance | http://localhost:8080 | β |
KEYCLOAK_ADMIN | Admin username | admin | β |
KEYCLOAK_ADMIN_PASSWORD | Admin password | admin | β |
οΏ½οΏ½οΈ Available Tools (80+ Tools)
π€ User Management Tools
create-user
Creates a new user in a specified realm.
Create a user in "master" realm: username "john.doe", email "john@example.com", first name "John", last name "Doe"
update-user
Updates user information (email, names, enabled status).
Update user "user-id-123" in "master" realm to change email to "newemail@example.com"
delete-user
Deletes a user from a realm.
Delete user with ID "user-id-123" from "master" realm
list-users
Lists all users in a realm.
List all users in the "master" realm
search-users
Search users with filters (username, email, firstName, lastName).
Search for users with email containing "wateen.io" in "master" realm, limit 10 results
get-user
Get detailed information about a specific user.
Get details for user ID "user-id-123" in "master" realm
reset-user-password
Reset a user's password.
Reset password for user "user-id-123" in "master" realm to "newPassword123", make it temporary
logout-user
Logout all sessions for a specific user.
Logout all sessions for user "user-id-123" in "master" realm
set-user-attributes β NEW
Set user attributes (critical for organization data storage).
Set organization attribute for user "user-id-123" in "master" realm: {"organization": ["wateen-corp"]}
get-user-attributes β NEW
Get user attributes including unmanaged attributes.
Get all attributes for user "user-id-123" in "master" realm
ποΈ Realm Management Tools
list-realms
Lists all available realms.
Show me all available realms in Keycloak
create-realm
Creates a new realm with configurable settings.
Create a new realm called "company" with display name "Company Realm", enabled
update-realm
Updates realm settings and configurations.
Update realm "company" to change display name to "Updated Company"
delete-realm
Deletes an existing realm.
Delete the realm "test-realm"
get-realm-settings
Retrieves detailed settings of a realm.
Get detailed settings for the "master" realm
π§ Client Management Tools
create-client
Registers a new client/application in a realm.
Create client "my-app" in "master" realm with redirect URIs ["http://localhost:3000/*"]
update-client
Updates client settings (redirect URIs, protocol mappers, etc.).
Update client "my-app" in "master" realm to add new redirect URI "https://app.example.com/*"
delete-client
Removes a client from a realm.
Delete client "old-app" from "master" realm
list-clients
Lists all clients in a realm.
List all clients in the "master" realm
create-protocol-mapper β NEW
Create protocol mappers for clients (critical for JWT organization claims).
Create organization group mapper for client "my-app" in "master" realm to include "organization" claim in JWT
update-protocol-mapper β NEW
Update existing protocol mappers.
Update protocol mapper "mapper-id-123" for client "my-app" in "master" realm
delete-protocol-mapper β NEW
Delete protocol mappers from clients.
Delete protocol mapper "mapper-id-123" from client "my-app" in "master" realm
list-protocol-mappers β NEW
List all protocol mappers for a client.
List all protocol mappers for client "my-app" in "master" realm
π― Client Scopes Management Tools β NEW
create-client-scope
Create a new client scope for managing token scopes.
Create client scope "organization-scope" in "master" realm for organization claims
update-client-scope
Update existing client scope.
Update client scope "scope-id-123" in "master" realm to change description
delete-client-scope
Delete a client scope.
Delete client scope "scope-id-123" from "master" realm
list-client-scopes
List all client scopes in a realm.
List all client scopes in the "master" realm
get-client-scope
Get details of a specific client scope.
Get details for client scope "scope-id-123" in "master" realm
create-client-scope-protocol-mapper β NEW
Create protocol mappers for client scopes.
Create organization mapper for client scope "organization-scope" in "master" realm
update-client-scope-protocol-mapper β NEW
Update protocol mappers in client scopes.
Update protocol mapper "mapper-id-123" in client scope "scope-id-456" in "master" realm
delete-client-scope-protocol-mapper β NEW
Delete protocol mappers from client scopes.
Delete protocol mapper "mapper-id-123" from client scope "scope-id-456" in "master" realm
list-client-scope-protocol-mappers β NEW
List protocol mappers for a client scope.
List all protocol mappers for client scope "scope-id-123" in "master" realm
π’ Organization Management Tools β NEW
create-organization
Create a new organization.
Create organization "wateen-corp" with description "Wateen Corporation" in "master" realm
update-organization
Update existing organization.
Update organization "org-id-123" in "master" realm to change name to "Updated Corp"
delete-organization
Delete an organization.
Delete organization "org-id-123" from "master" realm
list-organizations
List all organizations in a realm.
List all organizations in "master" realm with search "wateen", limit 10
get-organization
Get details of a specific organization.
Get details for organization "org-id-123" in "master" realm
add-organization-member
Add a user to an organization.
Add user "user-id-123" to organization "org-id-456" in "master" realm
remove-organization-member
Remove a user from an organization.
Remove user "user-id-123" from organization "org-id-456" in "master" realm
list-organization-members
List all members of an organization.
List all members of organization "org-id-123" in "master" realm, limit 20
π Role Management Tools
create-role
Creates roles at realm or client level.
Create a realm role "manager" with description "Manager role" in "master" realm
update-role
Modifies role attributes.
Update role "manager" in "master" realm to change description to "Updated manager role"
delete-role
Deletes roles.
Delete role "old-role" from "master" realm
list-roles
Lists all roles in a realm.
List all roles in the "master" realm
assign-role-to-user
Assigns a role to a user.
Assign role "manager" to user "user-id-123" in "master" realm
remove-role-from-user
Removes a role from a user.
Remove role "manager" from user "user-id-123" in "master" realm
get-user-roles
Gets all roles assigned to a user.
Get all roles for user "user-id-123" in "master" realm
create-composite-role β NEW
Create composite roles (role hierarchies).
Create composite role from "parent-role-id" with child roles ["child-role-1", "child-role-2"] in "master" realm
get-composite-roles β NEW
Get composite roles for a role.
Get composite roles for role "role-id-123" in "master" realm, limit 10
delete-composite-roles β NEW
Delete composite roles from a role.
Remove composite roles ["child-role-1", "child-role-2"] from role "parent-role-id" in "master" realm
get-role-by-id β NEW
Get role details by ID.
Get role details for role ID "role-id-123" in "master" realm
update-role-by-id β NEW
Update role by ID.
Update role "role-id-123" in "master" realm to change name to "new-role-name"
delete-role-by-id β NEW
Delete role by ID.
Delete role with ID "role-id-123" from "master" realm
find-users-with-role β NEW
Find users with a specific role.
Find all users with role "manager" in "master" realm, limit 20
assign-role-to-group β NEW
Assign a role to a group.
Assign role "developer" to group "group-id-123" in "master" realm
remove-role-from-group β NEW
Remove a role from a group.
Remove role "developer" from group "group-id-123" in "master" realm
get-group-roles β NEW
Get roles assigned to a group.
Get all roles for group "group-id-123" in "master" realm
list-available-group-roles β NEW
List available roles for a group.
List available roles for group "group-id-123" in "master" realm
list-composite-group-roles β NEW
List composite roles for a group.
List composite roles for group "group-id-123" in "master" realm
π₯ Group Management Tools
create-group
Creates user groups.
Create a group called "developers" in "master" realm
update-group
Updates group attributes.
Update group "group-id-123" in "master" realm to change name to "senior-developers"
delete-group
Deletes groups.
Delete group "group-id-123" from "master" realm
list-groups
Lists all groups in a realm.
List all groups in the "master" realm
manage-user-groups
Adds or removes users from groups.
Add user "user-id-123" to group "group-id-456" in "master" realm
set-group-attributes β NEW
Set group attributes (organization metadata).
Set organization attributes for group "group-id-123" in "master" realm: {"department": ["engineering"]}
get-group-attributes β NEW
Get group attributes.
Get all attributes for group "group-id-123" in "master" realm
create-child-group β NEW
Create a child group (subgroup).
Create child group "junior-devs" under parent group "group-id-123" in "master" realm
list-sub-groups β NEW
List subgroups of a parent group.
List subgroups of parent group "group-id-123" in "master" realm, limit 10
list-group-members β NEW
List members of a group.
List all members of group "group-id-123" in "master" realm, limit 20
π Identity Provider Management Tools β NEW
create-identity-provider
Create a new identity provider for SSO integration.
Create SAML identity provider "company-saml" in "master" realm with SSO URL and certificate
update-identity-provider
Update an existing identity provider.
Update identity provider "company-saml" in "master" realm to change display name
delete-identity-provider
Delete an identity provider.
Delete identity provider "old-saml" from "master" realm
list-identity-providers
List all identity providers in a realm.
List all identity providers in "master" realm
get-identity-provider
Get details of a specific identity provider.
Get details for identity provider "company-saml" in "master" realm
create-identity-provider-mapper
Create a mapper for identity provider (external user mapping).
Create user attribute mapper for identity provider "company-saml" in "master" realm
update-identity-provider-mapper
Update an identity provider mapper.
Update mapper "mapper-id-123" for identity provider "company-saml" in "master" realm
π Session & Event Management Tools
list-sessions
Lists all active sessions in a realm.
List all active sessions in "master" realm
get-user-sessions
Lists active sessions for a specific user.
Get active sessions for user "user-id-123" in "master" realm
list-events
Retrieves authentication and admin events.
List last 10 events in "master" realm
clear-events
Clears event logs.
Clear all events in "master" realm
π§ͺ Testing & Development
Testing with MCP Inspector
npx @modelcontextprotocol/inspector npx keycloak-mcp-server
Visit http://localhost:6274 to test all 80+ tools interactively.
Local Development
npm run watch # Auto-rebuild on changes
npm run dev # Test server directly
Stress Testing
The server has been stress-tested with 80+ consecutive operations without authentication failures, demonstrating production-level reliability.
π§ Architecture
Bulletproof Authentication System
- Fresh Client Instances: Creates new KcAdminClient for every request
- Retry Logic: Exponential backoff with 2 attempts maximum
- Connection Management: 15-second timeout with proper cleanup
- Error Handling: Comprehensive error messages for all scenarios
TypeScript Implementation
- Type Safety: Full TypeScript coverage with proper interfaces
- Error Handling: Detailed error messages and logging
- Modular Design: Clean separation of concerns
π Production Ready
This package has been extensively tested and validated:
- β 80+ consecutive operations without authentication failures
- β Cross-realm operations working seamlessly
- β Parallel tool execution supported
- β Complex search queries with multiple filters
- β Error recovery and detailed logging
- β TypeScript compilation with zero errors
- β Complete Keycloak API coverage with organization management
π― JWT Organization Problem Solved
This package specifically addresses the common JWT organization problem:
- β User Attributes: Store organization data in user attributes
- β Protocol Mappers: Create mappers to include organization in JWT tokens
- β Client Scopes: Manage token scopes for organization claims
- β Organizations: Full organization lifecycle management
- β Group Attributes: Store organization metadata in groups
Example workflow:
- Create organization using
create-organization - Set user organization attribute using
set-user-attributes - Create protocol mapper using
create-protocol-mapperto include organization in JWT - Add user to organization using
add-organization-member
π Security Best Practices
- Use environment variables for credentials
- Enable HTTPS for production Keycloak instances
- Use strong admin passwords
- Regularly rotate credentials
- Monitor admin events and sessions
π€ Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
π License
MIT License - see LICENSE file for details.
π Support
- GitHub Issues: Create an issue
- Documentation: Check this README for comprehensive examples
- MCP Documentation: Model Context Protocol
π Related Projects
- Claude Desktop - AI assistant supporting MCP
- Cursor AI - AI-powered code editor with MCP support
- Model Context Protocol - Protocol specification
- Keycloak - Open source identity and access management
π Package Stats
- 80+ Tools: Complete Keycloak administration coverage
- Production Ready: Extensively tested and validated
- TypeScript: Full type safety and modern development experience
- Cross-Platform: Windows, macOS, and Linux support
- Zero Dependencies Issues: Robust dependency management
- Organization Management: Solve JWT organization visibility problems
- Advanced Features: Protocol mappers, client scopes, identity providers
Made with β€οΈ for the Keycloak and AI community