Clerk Platform MCP Server
An MCP (Model Context Protocol) server for interacting with the Clerk Platform API. This server enables LLMs to manage Clerk applications, domains, and application transfers.
Note: The Clerk Platform API is currently in private beta. Request access here.
Features
Application Management
- clerk_list_applications - List all applications in your workspace
- clerk_get_application - Get details of a specific application
- clerk_create_application - Create a new application
- clerk_update_application - Update an application's name
- clerk_delete_application - Delete an application (destructive)
- clerk_upload_application_logo / clerk_delete_application_logo - Manage application logo
- clerk_upload_application_favicon / clerk_delete_application_favicon - Manage application favicon
Domain Management
- clerk_list_application_domains - List domains for an application
- clerk_create_application_domain - Create a provider domain
- clerk_get_application_domain - Get domain configuration
- clerk_delete_application_domain - Delete a provider domain
- clerk_get_application_domain_status - Check domain verification status
- clerk_update_application_domain - Set/update production domain
- clerk_trigger_dns_check - Trigger DNS verification
Application Transfers
- clerk_list_application_transfers - List transfer requests
- clerk_create_application_transfer - Initiate an application transfer
- clerk_get_application_transfer - Get transfer details
- clerk_cancel_application_transfer - Cancel a pending transfer
Instance Users
- clerk_list_instance_users - List users in an instance
- clerk_ban_instance_user - Ban a user in an instance
- clerk_unban_instance_user - Unban a user in an instance
JWT Templates
- clerk_list_jwt_templates - List JWT templates
- clerk_create_jwt_template - Create a JWT template
- clerk_get_jwt_template - Get a JWT template
- clerk_update_jwt_template - Update a JWT template
- clerk_delete_jwt_template - Delete a JWT template
Instance Config
- clerk_get_config_schema - Get config schema
- clerk_get_config - Get config values
- clerk_patch_config - Patch config values
Installation
# Install dependencies
bun install
# Build the server
bun run build
Authentication
The server supports two authentication methods:
HTTP Transport (Recommended)
Pass your API key as a Bearer token in the Authorization header:
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer your_platform_api_token" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
stdio Transport
Set the CLERK_PLATFORM_API_KEY environment variable:
export CLERK_PLATFORM_API_KEY=your_platform_api_token
Usage
HTTP Mode (Remote/Multi-client)
# Start server on default port 3000
bun run start:http
# Start server on custom port
bun run dist/index.js --http --port 8080
stdio Mode (Local Integrations)
# With environment variable
CLERK_PLATFORM_API_KEY=your_token bun run start
# Or just start (will prompt for auth on first tool use)
bun run start
Development Mode
# HTTP with auto-reload
bun run dev:http
# stdio with auto-reload
bun run dev
With Cursor/Claude Desktop
For HTTP transport (recommended for remote access):
{
"mcpServers": {
"clerk-platform": {
"url": "http://localhost:3000/mcp",
"headers": {
"Authorization": "Bearer your_platform_api_token"
}
}
}
}
For stdio transport (local):
{
"mcpServers": {
"clerk-platform": {
"command": "bun",
"args": ["run", "/path/to/clerk-platform-mcp-server/dist/index.js"],
"env": {
"CLERK_PLATFORM_API_KEY": "your_platform_api_token"
}
}
}
}
Command Line Options
Usage:
clerk-platform-mcp-server [options]
Options:
--http Use HTTP transport (default: stdio)
--port <port> Port for HTTP server (default: 3000)
--help, -h Show help message
Example Workflows
Creating a New Application
1. Use clerk_create_application with name="My App" and template="b2b-saas"
2. The response includes application_id and instance details with keys
Setting Up a Custom Domain
1. Use clerk_update_application_domain to set domain name
2. Configure CNAME records from the response
3. Use clerk_trigger_dns_check to verify configuration
4. Use clerk_get_application_domain_status to monitor progress
Transferring an Application
1. Use clerk_create_application_transfer to initiate transfer
2. Share the transfer code with the recipient workspace
3. Recipient claims the transfer using the code
4. Use clerk_get_application_transfer to check status
API Reference
This server implements the Clerk Platform API endpoints:
GET /platform/applications- List applicationsPOST /platform/applications- Create applicationGET /platform/applications/{id}- Get applicationPATCH /platform/applications/{id}- Update applicationDELETE /platform/applications/{id}- Delete applicationPOST /platform/applications/{id}/logo- Upload application logoDELETE /platform/applications/{id}/logo- Delete application logoPOST /platform/applications/{id}/favicon- Upload application faviconDELETE /platform/applications/{id}/favicon- Delete application faviconGET /platform/applications/{id}/domains- List application domainsPOST /platform/applications/{id}/domains- Create application domainGET /platform/applications/{id}/domains/{domain}- Get domainDELETE /platform/applications/{id}/domains/{domain}- Delete domainGET /platform/applications/{id}/domains/{domain}/status- Get domain statusPATCH /platform/applications/{id}/domain- Update domainPOST /platform/applications/{id}/domains/{domain}/dns_check- Trigger DNS checkGET /platform/application_transfers- List transfersPOST /platform/applications/{id}/transfers- Create transferGET /platform/applications/{id}/transfers/{transferId}- Get transferDELETE /platform/applications/{id}/transfers/{transferId}- Cancel transferGET /platform/applications/{id}/instances/{envOrInsID}/users- List instance usersPOST /platform/applications/{id}/instances/{envOrInsID}/users/{userId}/ban- Ban userPOST /platform/applications/{id}/instances/{envOrInsID}/users/{userId}/unban- Unban userGET /platform/applications/{id}/instances/{envOrInsID}/jwt_templates- List JWT templatesPOST /platform/applications/{id}/instances/{envOrInsID}/jwt_templates- Create JWT templateGET /platform/applications/{id}/instances/{envOrInsID}/jwt_templates/{templateId}- Get JWT templatePATCH /platform/applications/{id}/instances/{envOrInsID}/jwt_templates/{templateId}- Update JWT templateDELETE /platform/applications/{id}/instances/{envOrInsID}/jwt_templates/{templateId}- Delete JWT templateGET /platform/applications/{id}/instances/{envOrInsID}/config/schema- Get config schemaGET /platform/applications/{id}/instances/{envOrInsID}/config- Get configPATCH /platform/applications/{id}/instances/{envOrInsID}/config- Patch config
License
MIT











