# Clerk

> Access Clerk authentication docs, SDK snippets, and quickstart guides

- name: io.github.clerk/mcp-server
- version: 0.1.0
- connection class: R2 (oauth_consent_once)
- trust: 69/100 flags: no-repository
- quality: 94/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.clerk%2Fmcp-server
- tools: https://api.protogrid.dev/v1/servers/io.github.clerk%2Fmcp-server/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "clerk": {
      "type": "http",
      "url": "https://mcp.clerk.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 45
- provenance: 45
- drivers: +website +reachable +uptime-100% -stale-225d -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 94/100 (good)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 100 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- pass `auth.cimd`: Client ID Metadata Documents supported
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 23 of 23 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,320 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 43 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 23, about 4,320 tokens to load them all
- tool set hash: 4f22e5ee02e619c460fe528e276afb60
- tools last changed: 2026-10-09T03:23:07.989Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.clerk/mcp-server.svg)](https://protogrid.dev/servers/io.github.clerk/mcp-server)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-09 `set_oauth_provider_credentials` changed (annotations)
- 2026-10-09 `check_domain_dns` changed (annotations)
- 2026-10-09 `get_domain_status` changed (annotations)
- 2026-10-09 `create_production_instance` changed (annotations)
- 2026-10-09 `get_deploy_oauth_providers` changed (annotations)
- 2026-10-09 `list_domains` changed (annotations)
- 2026-10-09 `create_user` changed (annotations)
- 2026-10-09 `list_users` changed (annotations)
- 2026-10-09 `put_instance_config` changed (annotations)
- 2026-10-09 `patch_instance_config` changed (annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.clerk%2Fmcp-server/changes

## Remotes

- https://mcp.clerk.com/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)

## Packages

_none_

## Tools (23)

- `check_domain_dns`: Ask Clerk to re-check DNS records for an application domain now, then read status with get_domain_status.
- `clerk_sdk_snippet`: Get Clerk SDK code snippets and patterns.
- `create_application`: Create a new application in the connected workspace (like `clerk apps create`).
- `create_production_instance`: Create the production instance for an application on a domain you own, cloned from development (the first step of `clerk deploy`). Irreversible; requires confirm: true. Returns the DNS records to add and the next steps.
- `create_user`: Create a user in an instance (like `clerk users create`). Named fields are merged over body, the raw Backend API create-user request.
- `disable_billing`: Disable billing for organizations and/or users (like `clerk disable billing`). Leaves organizations themselves enabled.
- `disable_organizations`: Disable organizations on an instance (like `clerk disable orgs`). Refuses while organization billing is enabled.
- `enable_billing`: Enable billing for organizations and/or users (like `clerk enable billing`). Organization billing also enables organizations.
- `enable_organizations`: Enable organizations on an instance (like `clerk enable orgs`).
- `get_application`: Get one Clerk application that the connected account can access.
- `get_deploy_oauth_providers`: List OAuth providers enabled on the development instance, the credential fields each needs in production, and whether production already has them (the OAuth step of `clerk deploy`).
- `get_domain_status`: Read DNS, SSL, and email verification status for an application domain.
- `get_instance_config`: Read instance configuration (like `clerk config pull`). Sensitive values are redacted. Pass keys to limit the top-level sections returned.
- `get_instance_config_schema`: Read the JSON schema for instance configuration (like `clerk config schema`). Pass keys to limit the top-level sections returned.
- `list_applications`: List the applications in the connected workspace (like `clerk apps list`).
- `list_clerk_sdk_snippets`: List all available Clerk SDK snippets and bundles. Filter by tag to find specific functionality.
- `list_domains`: List an application's domains, including the DNS records each one needs (dns_targets).
- `list_users`: List users of an instance (like `clerk users list`). Filters match the Backend API list-users query.
- `patch_instance_config`: Partially update instance configuration (like `clerk config patch`). Use dry_run first to validate without applying.
- `put_instance_config`: Replace the entire instance configuration (like `clerk config put`). config must include every top-level key, so start from get_instance_config. Use dry_run first.
- `set_oauth_provider_credentials`: Save production OAuth credentials for a provider on an instance (the credential step of `clerk deploy`). Use get_deploy_oauth_providers for the required fields.
- `submit_feedback`: Send feedback to the Clerk team about a problem you hit while working with Clerk for the user. Call this when a Clerk task fails, needed a workaround, a Clerk tool returned a confusing or wrong result, documentation was missing, or the user asks you to report a problem. Never include secrets, API keys, tokens, or personal data about end users. Reports are read by the Clerk team and used to improve Clerk.
- `whoami`: Show the connected Clerk account, its active workspace, and the granted scopes (like `clerk whoami`).
