Guide

Auth MCP Servers Compared (2026): Clerk, Auth0 and WorkOS

Which auth provider's MCP server should my AI agent use, and how do I add OAuth to my own MCP server?

For B2B apps with organizations, SSO and roles, use WorkOS: its hosted MCP server manages organizations, connections, directories and users, starts in a sandbox, and AuthKit is free for the first 1 million monthly active users. For a consumer or SaaS app where the agent should create apps, change instance settings and create users, use Clerk's hosted server (free for 50,000 monthly retained users). Use Auth0's local server to manage applications, APIs, Actions, logs and forms; it has no user tools, but it has a --read-only flag (free plan: up to 25,000 monthly active users). All three can act as the OAuth authorization server for your own remote MCP server.

Compare: the best MCP servers for scraping, search, browsers, databases, hosting, monitoring, payments, auth and design →

Coding agent settings change often

Get one email a week when a setting, flag or permission rule changes, checked against the vendor docs.

Quick comparison

  • Clerk: hosted at https://mcp.clerk.com/mcp, OAuth sign-in with your Clerk account. Tools to list and create apps, read and change instance config (with dry run), list and create users, check domains and DNS, and create a production instance. No org or role tools are listed. Free: Hobby, first 50,000 monthly retained users. Paid: Pro, $20/month billed annually ($25 billed monthly).
  • Auth0: local server run with npx @auth0/auth0-mcp-server, signs in with the OAuth 2.0 device flow and keeps tokens in the system keychain. Tools for applications, APIs (resource servers), application grants, Actions, logs and forms. No user, organization or role tools. Free: up to 25,000 monthly active users. Paid: Essentials, from $35/month.
  • WorkOS: hosted at https://mcp.workos.com/mcp, OAuth through WorkOS Connect. Four tools (whoami, list_operations, query, mutate) manage organizations, SSO connections, directories, users, audit logs, environments, branding and more. Defaults to sandbox. Free: AuthKit, first 1 million monthly active users. SSO and Directory Sync connections are $125 each for the first 15.
  • Supabase: its MCP server has no Auth feature group and no dedicated Auth tools. Firebase: its MCP server has an auth group with auth_get_users, auth_update_user and auth_set_sms_region_policy.
  • Clerk counts monthly retained users (users who return 24+ hours after signing up), not monthly active users.
  • Prices and free tiers were checked on each vendor's pricing page on 2026-10-23 and change often.

Clerk MCP

Clerk's MCP server is hosted and uses Streamable HTTP. You sign in with OAuth using your Clerk Dashboard account, pick a workspace and approve the permissions. The server acts as you, so it can only do what your workspace Role allows. No secret key goes in your client config.

Claude Code (then run /mcp, pick clerk, choose Authenticate)

claude mcp add clerk --transport http https://mcp.clerk.com/mcp

Clients without MCP OAuth (mcpServers JSON)

{
  "mcpServers": {
    "clerk": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.clerk.com/mcp"]
    }
  }
}
  • Main tools: whoami, list_applications, get_application, create_application, get_instance_config, patch_instance_config, put_instance_config, list_users, create_user, list_domains, get_domain_status, check_domain_dns, create_production_instance, set_oauth_provider_credentials.
  • SDK help: clerk_sdk_snippet and list_clerk_sdk_snippets return setup code, for example for organizations.
  • Safety: tools that make changes are marked, so your client can ask first. Config changes and user creation support a dry run. create_production_instance cannot be undone and needs confirm: true.
  • Safety: the server never returns secret keys and redacts sensitive config values. Get keys from the Dashboard or with clerk env pull.
  • Gotcha: each tool call sends a short agent-written summary, the tool name and your user ID to Clerk for analytics. Tool inputs and results are not sent.
  • Gotcha: to switch workspaces, sign out in your client and reconnect. With mcp-remote, delete ~/.mcp-auth, which signs you out of every server it connects to.

Auth0 MCP

Auth0's MCP server runs on your machine through npx. The init command opens your browser for the OAuth 2.0 device authorization flow and stores credentials in the system keychain, not in plain text. You need Node.js 18 or higher and an Auth0 account with admin permissions.

Claude Code (asks for user or project scope)

npx @auth0/auth0-mcp-server init --client claude-code

Other clients, read-only (mcpServers JSON)

{
  "mcpServers": {
    "auth0": {
      "command": "npx",
      "args": ["-y", "@auth0/auth0-mcp-server", "run", "--read-only"]
    }
  }
}
  • Main tools: auth0_list_applications, auth0_get_application, auth0_create_application, auth0_update_application, auth0_list_resource_servers, auth0_create_resource_server, auth0_create_application_grant, auth0_list_actions, auth0_create_action, auth0_deploy_action, auth0_list_logs, auth0_get_log, auth0_list_forms, auth0_publish_form.
  • There are no tools for users, organizations or roles.
  • Limit tools: --tools takes glob patterns, for example --tools 'auth0_list_*,auth0_get_*'. --read-only wins over --tools.
  • Env vars: AUTH0_MCP_READ_ONLY=true, AUTH0_MCP_TOOLS, AUTH0_MCP_ANALYTICS=false to opt out of analytics, DEBUG=auth0-mcp for logs. CLI flags take precedence.
  • Safety: client_secret and token fields are replaced with [REDACTED]. No scopes are requested by default; you pick them during init.
  • Gotcha: run npx @auth0/auth0-mcp-server logout when you finish or switch tenants. Private cloud tenants cannot use the device flow and need client credentials instead.

WorkOS MCP

WorkOS runs a hosted management MCP server. Every client connects over Streamable HTTP and signs in with OAuth through WorkOS Connect. It acts as you and has the same roles and permissions as your dashboard login. It works on one team at a time.

Claude Code (then finish OAuth consent in the browser)

claude mcp add --transport http workos https://mcp.workos.com/mcp
  • Main tools: whoami, list_operations, query and mutate. The agent finds an operation with list_operations, then runs it by name with query or mutate.
  • Covers organizations, connections, directories, users, audit log streams, environments, branding and more. It works in one environment at a time.
  • Safety: it starts in a sandbox environment and only works on production when you tell it to. Irreversible deletes, such as an organization, connection or directory, are not run on the first attempt.
  • Safety: API keys and client secrets are stripped from responses. Dashboard user impersonation is not exposed. The agent cannot mint or rotate credentials such as API keys, OAuth client secrets and signing certificates, change its own MCP access settings or delete your WorkOS team.
  • Admin controls: team admins can turn off Enable, Allow production access or Allow write access (all on by default). With production access off, it only reaches sandbox environments. With write access off, the server is read-only.
  • Cursor and other clients use the same URL in their config, for example "url": "https://mcp.workos.com/mcp".

Supabase Auth and Firebase Auth

  • Supabase: the MCP server's feature groups are Database, Debugging, Development, Edge Functions, Account management, Docs, Branching and Storage. There is no Auth group and no dedicated tool to manage Auth users or settings. Supabase Auth's Free plan includes 50,000 monthly active users.
  • Firebase: the Firebase MCP server runs locally with the same credentials as the Firebase CLI. Its auth group has auth_get_users (look up or list users), auth_update_user (enable, disable or set custom claims) and auth_set_sms_region_policy. Add it in Claude Code with claude mcp add firebase npx -- -y firebase-tools@latest mcp, and use --only auth to load only auth tools plus core tools.
  • Firebase Authentication (with Identity Platform) is free up to 50K monthly active users on both the Spark and Blaze plans.

Add auth to your own MCP server

Remote MCP servers use OAuth. Your server publishes /.well-known/oauth-protected-resource metadata, the auth provider acts as the authorization server, and your server checks the access token on each request. All three vendors document this.

  • Clerk: install mcp-handler and @clerk/mcp-tools. Wrap the handler with withMcpAuth and verifyClerkToken, and serve metadata with protectedResourceHandlerClerk. Clerk supports CIMD and DCR; turn on Publish DCR support only for clients that need DCR. The .well-known endpoints must be public. Guides exist for Next.js and Express.
  • Auth0: Auth for MCP implements the MCP authorization spec with OAuth 2.1 and OpenID Connect. The quickstart turns on the Resource Parameter Compatibility Profile and promotes connections to domain-level so third-party MCP clients can sign in. Auth0 also offers On-Behalf-Of Token Exchange so your server can call your own APIs for the user.
  • WorkOS: AuthKit is a spec-compatible OAuth authorization server. Enable CIMD in the dashboard under Connect, Configuration (DCR can also be turned on for older clients), add your MCP endpoint URL as a Resource Indicator, and verify tokens against https://<authkit_domain>/oauth2/jwks.

Clerk, Next.js packages

npm install mcp-handler @clerk/mcp-tools

Which one to pick

  • B2B app with organizations, SSO and Directory Sync: WorkOS. Its server manages organizations, connections, directories and users, and starts in a sandbox.
  • Agent should set up a new app, change sign-in settings or create test users: Clerk.
  • Agent should manage Auth0 applications, APIs, Actions and forms, or read logs: Auth0. Run it with --read-only until you trust it.
  • Agent must look up or disable Firebase users: the Firebase MCP server with --only auth.
  • Supabase Auth: there is no dedicated auth tool in the Supabase MCP server.
  • Securing your own remote MCP server: any of the three; pick the one already running your app's login.
  • Details on this page were checked against vendor docs and pricing pages on 2026-10-23.

Get coding agent settings changes by email

When a setting, flag or permission rule in this guide changes, it goes in the weekly AgentAtlas update, checked against the vendor docs. One email a week.

Sources

More guides

Other guides

How to allow Cursor to run all commands: Run Everything, allowlist and sandboxHow to allow Claude Code to run all commands: permission modes, allow rules and skip permissionsClaude Code permissions: allow, ask and deny rules, rule syntax and allowed toolsCodex CLI: approval and sandbox modesGemini CLI: YOLO mode, auto_edit and allowing specific shell commandsCursor Privacy Mode: telemetry, training and data retentionClaude Code telemetry and data retention: what is sent and how to turn it offGemini CLI: turn off usage statistics and telemetryCLAUDE.md: where it goes, how it loads, and how it works with AGENTS.mdClaude Code hooks: all events, exit codes, PreToolUse and PermissionRequest JSON, examplesClaude Code subagents: create one, limit its tools, and call itAdd MCP servers to Cursor with mcp.json: Keep files out of Cursor with .cursorignore: Configure Codex with config.toml: Configure Gemini CLI with settings.json: Add MCP servers to Claude Code (claude mcp add, .mcp.json, scopes): Claude Code custom slash commands and skills (SKILL.md): GitHub Copilot custom instructions: Adding MCP servers to GitHub Copilot: Claude Code settings.json: file locations, precedence, and key settingsClaude Code plugins and marketplaces: install, create, and shareGemini CLI extensions and custom commands: Configuring OpenCode with opencode.json: Cline Rules: workspace, global, and conditional rulesKiro steering files: .kiro/steering, inclusion modes, and AGENTS.mdZed agent: instruction files, MCP servers, tool permissions, and ACP agentsCursor CLI: install, headless mode, permissions and CIAider: CONVENTIONS.md, .aider.conf.yml and API keysJunie guidelines, MCP and the Action Allowlist: Amp AGENTS.md, settings.json and MCP: Configure Goose extensions, hints, recipes and permissions: Customize OpenHands with skills, AGENTS.md, setup.sh and MCP: Configure Factory Droid CLI: AGENTS.md, settings.json, autonomy, custom droids and MCPConfigure Qwen Code: settings.json, providers, QWEN.md, MCP and approval modesCursor hooks: hooks.json, beforeShellExecution, afterFileEdit and exit codesCursor sandbox: sandbox.json, network allowlist and run modesCursor settings: settings.json, Cursor Settings and the ~/.cursor config filesCursor browser agent: @browser, browser automation and approval modesCursor subagents: .cursor/agents, frontmatter, built-in Explore and BrowserCursor telemetry and OpenTelemetry export (Privacy Mode, OTLP, Analytics API): Cursor rules setup: project, user and Team Rules, .mdc frontmatter, globs and AGENTS.mdClaude Code headless mode: claude -p, --output-format json, --bare and CI flagsClaude Code statusline: custom status bar in settings.json with context %, cost and git branchClaude Code /model: switch models, aliasesClaude Code /cost and /usage: check token spend, usage limits and reduce costsClaude Code VS Code extension: install, shortcuts, settings and /ideCodex AGENTS.md: global, project and override instruction files explainedCodex MCP servers: codex mcp add and [mcp_servers] in config.tomlCodex sandbox modes: read-only, workspace-write, danger-full-access and network accesscodex exec: run Codex non-interactively in scripts and CI with JSON outputCodex skills: create SKILL.md, skill folder locations and $skill invocationGEMINI.md in Gemini CLI: context file locations, imports and /memoryGemini CLI MCP servers: gemini mcp add and mcpServers in settings.jsonGemini CLI custom slash commands: TOML files, {{args}}, !{shell} and @{file}Gemini CLI headless mode: gemini -p, JSON output and exit codes for scripts and CIGemini CLI sandbox: enable Docker, Podman, macOS Seatbelt or gVisorcopilot-setup-steps.yml: set up the GitHub Copilot cloudGitHub Copilot CLI permissions: --allow-tool, --deny-tool, --allow-all-tools and trusted directoriesGitHub Copilot custom agents: .github/agents/*.agent.md profiles, tools and frontmatterGitHub Copilot code review settings: automatic PR reviews, rulesets, effort level and approvalsOpenCode MCP Server Setup: Local and Remote Servers in opencode.jsonOpenCode Permissions: Allow, Ask or Deny Bash, Edit and WebfetchOpenCode Custom Agents and Subagents: Markdown Files, Modes and @ MentionsCline MCP Setup: cline_mcp_settings.json for Local and Remote ServersCline Auto Approve and YOLO Mode: Run Commands and Edits Without PromptsCline Skills: SKILL.md Location, Format and Slash Command UseAmp MCP Setup: amp mcp add, amp.mcpServers and Workspace ApprovalAmp AGENTS.md: File Locations, @ Mentions and Glob-Scoped GuidanceAmp Skills: SKILL.md Folders, amp skill add and Search OrderKiro MCP Setup: .kiro/settings/mcp.json, autoApprove and OAuthKiro Hooks: .kiro/hooks JSON, PreToolUse, PostFileSave and StopKiro Permissions: permissions.yaml Allow, Ask and Deny RulesFactory Droid MCP Setup: droid mcp add, mcp.json Locations and /mcpFactory Droid Hooks: hooks.json, PreToolUse Matchers and Exit CodesFactory Droid Custom Droids (Subagents): .factory/droids Markdown FilesJunie MCP Setup: .junie/mcp/mcp.json for CLI and /mcp CommandJunie Brave Mode and Action Allowlist: Auto-Approve Commands in Junie CLIJunie Custom Slash Commands: .junie/commands Markdown Files and Argumentsgoose .goosehints and AGENTS.md: Global and Project Instructionsgoose Permission Modes: GOOSE_MODE auto, approve, smart_approve and chatgoose Recipes: recipe.yaml Format, Parameters and goose run --recipeZed Agent Tool Permissions: Auto-Approve Terminal Commands with tool_permissionsUse Claude, Codex and Gemini CLI in Zed: External Agents and agent_serversZed with Ollama, LM Studio and llama.cpp: Local Model Setup and Context LengthMCP 2026-07-28 Migration Guide: Stateless Protocol, No Sessions, server/discover, MRTR, and SDK v2 UpgradeSubagents and Custom Agents Compared: Claude Code vs Codex vs Cursor vs Gemini CLI vs GitHub CopilotAllow all commands in any AI coding agent: Cursor, Claude Code, Codex, Gemini CLI, Copilot CLI and 7 moreSettings file locations for every AI coding agent: Claude Code, Cursor, Codex, Gemini CLI, OpenCode, Qwen Code, Amp and Factory DroidRules and instruction files in every AI coding agent: .cursor/rules, CLAUDE.md, AGENTS.md, GEMINI.md, Copilot instructions and moreGemini CLI hooks: settings.json, BeforeTool, AfterTool, exit codes and /hooksGitHub Copilot hooks: .github/hooks/*.json for Copilot CLI and the cloud agentHooks in every AI coding agent: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, Kiro and Factory DroidAgent Skills (SKILL.md) in every AI coding agent: Claude Code, Codex, Cline, Amp and OpenHandsHow to deploy a remote MCP server (Streamable HTTP): Cloudflare Workers, Vercel, Railway and moreHeadless mode in every AI coding agent: claude -p, codex exec, gemini -p, Cursor agent -p and copilot -p for scripts and CIClaude Code sandbox: /sandbox, sandbox.enabled, allowedDomains, excludedCommands and strict modeSandbox modes in every AI coding agent: Claude Code, Cursor, Codex and Gemini CLI comparedCustom slash commands in every AI coding agent: file locations, arguments and examplesMigrate from Gemini CLI to Antigravity CLI (2026): Config, MCP, Skills, FlagsRun GitHub Copilot CLI with copilot -p in scripts and CI (2026): Agent Loops 2026: Ralph Loop, /loop, /goal and Headless Loops for AI Coding AgentsCursor skills and custom slash commands: .cursor/skills SKILL.md, .cursor/commands and /migrate-to-skillsCodex hooks: hooks.json, PreToolUse allow/deny, exit code 2 and config.toml [hooks]GitHub Copilot prompt files in VS Code: .github/prompts/*.prompt.md slash commandsOpenCode custom commands: .opencode/commands, $ARGUMENTS, shell output and subtasksQwen Code custom commands: .qwen/commands Markdown files, {{args}}, !{shell} and @{file}

Reviewed Oct 23, 2026. Settings change often; the linked vendor docs are the source of truth.