Skip to main content
The ext-auth repository contains official MCP extensions that add authorization capabilities beyond the core MCP specification. These extensions address specific real-world scenarios where the standard OAuth 2.0 authorization code flow isn’t the right fit.

modelcontextprotocol/ext-auth

Source code, specifications, and reference implementations for MCP authorization extensions.

Why authorization extensions?

The core MCP specification includes a robust authorization framework built on OAuth 2.0. That framework handles the common case well: a user interactively grants an MCP client permission to access a server on their behalf. But not every MCP deployment fits this pattern:
  • Machine-to-machine integrations don’t have a human in the loop. Background services, CI pipelines, and automated workflows need to authenticate without interactive user consent flows.
  • Enterprise environments often have centralized identity providers (IdPs) that enforce policy across all applications. Requiring employees to authorize each MCP server individually creates friction and bypasses existing security controls.
The ext-auth extensions address these gaps.

Available extensions

Choosing the right extension

ScenarioRecommended extension
Background service or daemon accessing an MCP serverOAuth Client Credentials
CI/CD pipeline calling MCP toolsOAuth Client Credentials
Server-to-server API integrationOAuth Client Credentials
Enterprise employees accessing MCP servers at workEnterprise-Managed Authorization
Organization-wide MCP access policy enforcementEnterprise-Managed Authorization
Standard interactive user authorizationCore MCP spec (no extension needed)

Client support

Authorization extension support varies by client. See the client matrix for a full breakdown. Both extensions require explicit support from the MCP client — they are never active by default.

Specification

Both extensions are specified in the ext-auth repository. They use the standard MCP extension negotiation mechanism: clients and servers declare support in the extensions field of their capabilities during initialization.