# MCP authorization

The OAuth discovery chain protecting that MCP endpoint.

**[Capabilities](/docs/capabilities)** · checked once per host (item type `mcp_auth`) · 9 checks that can fail it

An agent that meets a 401 has to discover where to authenticate, and the spec makes that chain mandatory for remote servers. Partial implementations are the norm rather than the exception, which is exactly the present-but-wrong shape this container looks for.

## Adoption

**Early production** (L2)

Several independent organisations run it in production, though it is still niche on the open web. Direction of travel: ▲ rising, as of 2026-07-28.

Mandatory in the spec and shipped by the big hosted servers, but Astrix Security found only 8.5% of MCP servers use OAuth at all (Mar 2026).

| Adopter | Depth | Evidence |
|---|---|---|
| Cloudflare (workers-oauth-provider, full chain) | production | [blog.cloudflare.com](https://blog.cloudflare.com/tag/mcp/) |
| GitHub, Stripe, Linear, Sentry | production | [hidekazu-konishi.com](https://hidekazu-konishi.com/entry/mcp_server_ecosystem_reference_2026.html) |
| Atlassian (shipped GA without RFC 9728 metadata, later fixed) | production | [github.com](https://github.com/atlassian/atlassian-mcp-server/issues/148) |

## What we check

Absence is never a finding: every check below runs only once `mcpAuthPresent` is true, so a site that has not
adopted this is not assessed on it and appears in no report.

| Check | Kind | Raises | On whose authority |
|---|---|---|---|
| `mcpAuthMissingResourceMetadata` | high severity | conformance, usability | specification (MCP authorization 2026-07-28 (profiling RFC 9728)) |
| `mcpAuthMalformedResourceMetadata` | high severity | conformance, usability | specification (RFC 9728) |
| `mcpAuthResourceMismatch` | high severity | conformance, usability | specification (RFC 9728) |
| `mcpAuthMissingAuthorizationServer` | high severity | conformance, usability | specification (MCP authorization 2026-07-28) |
| `mcpAuthInvalidAuthorizationServerUrl` | high severity | conformance, usability | specification (RFC 8414) |
| `mcpAuthMissingAuthorizationServerMetadata` | high severity | conformance, usability | specification (RFC 8414 / OIDC Discovery 1.0 (per SEP-2351, the default RFC 8414 suffix)) |
| `mcpAuthMalformedAuthorizationServerMetadata` | high severity | conformance, usability | specification (RFC 8414) |
| `mcpAuthAuthorizationServerIssuerMismatch` | high severity | conformance, usability, security | specification (RFC 8414) |
| `mcpAuthMissingPkceSupport` | high severity | conformance, usability, security | specification (MCP authorization 2026-07-28, Security Considerations → Authorization Code Protection) |
| `mcpAuthPartiallyAssessed` | coverage note | nothing | our own coverage |

## Specifications

| Document | Revision | Kind |
|---|---|---|
| [MCP Authorization](https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization) | 2026-07-28 | specification |
| [MCP authorization server discovery](https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/authorization-server-discovery) | 2026-07-28 | specification |
| [RFC 9728 — OAuth Protected Resource Metadata](https://www.rfc-editor.org/rfc/rfc9728) | RFC 9728 | specification |
| [RFC 8414 — OAuth Authorization Server Metadata](https://www.rfc-editor.org/rfc/rfc8414) | RFC 8414 | specification |
| [RFC 8707 — OAuth Resource Indicators](https://www.rfc-editor.org/rfc/rfc8707) | RFC 8707 | specification |
| [OpenID Connect Discovery 1.0](https://openid.net/specs/openid-connect-discovery-1_0.html) | 1.0 | specification |

Last re-read against the published documents: 2026-08-12.
