What is MCP Authorization?

2 min read Updated

MCP Authorization is the OAuth 2.1-based authorisation framework the Model Context Protocol specification defines for HTTP transports. The MCP server acts as an OAuth resource server, and clients obtain audience-bound access tokens from an authorisation server discovered through the server's protected resource metadata.

WHY IT MATTERS

Authorization is optional in MCP, but implementations using an HTTP-based transport SHOULD conform to the specification; stdio servers should instead take credentials from the environment. The roles map directly onto OAuth 2.1: the MCP server is the resource server, the MCP client is the OAuth client, and a separate (or co-hosted) authorisation server issues tokens.

Discovery is fully automated. A request without a token gets a 401 whose WWW-Authenticate header (or a well-known URI) points to the server's Protected Resource Metadata (RFC 9728), whose authorization_servers field names at least one authorisation server. The client then fetches authorisation server metadata via RFC 8414 or OpenID Connect Discovery. For client registration, the current spec (2025-11-25) prefers pre-registered credentials, then Client ID Metadata Documents, with Dynamic Client Registration retained as a backwards-compatible fallback.

Several requirements exist purely for security: clients MUST use PKCE and MUST send the RFC 8707 resource parameter naming the target server, and servers MUST validate that tokens were issued specifically for them — the audience binding that makes token passthrough a forbidden anti-pattern. Servers SHOULD advertise required scopes in the WWW-Authenticate challenge, and clients follow least privilege with step-up authorisation when a call returns insufficient_scope.

For teams running many remote servers, the practical consequence is that authorisation is negotiated per server: each upstream has its own authorisation server, scopes, and consent flow, with no fleet-wide view of who can call what.

See mcp authorization working in your own stack — route your MCP servers through PolicyLayer and every tool call is checked against policy before it runs.

GOVERN YOUR MCP SERVERS →

Enforced before the call runs. Nothing to install.

HOW POLICYLAYER USES THIS

PolicyLayer sits in front of upstream MCP servers as a gateway, so client access is governed by per-person scoped tokens issued by PolicyLayer rather than by each upstream's individual OAuth posture. Every tools/call that arrives with a valid token is still evaluated against deterministic policy before it executes, giving a single authorisation and audit point across the fleet.

FREQUENTLY ASKED QUESTIONS

Is authorization mandatory in MCP?
No. It is optional, but HTTP-based transports SHOULD conform to the authorization specification. Stdio servers SHOULD NOT use it and instead retrieve credentials from the environment.
Which standards does MCP Authorization build on?
OAuth 2.1 (IETF draft), Protected Resource Metadata (RFC 9728), Authorization Server Metadata (RFC 8414) or OpenID Connect Discovery, Resource Indicators (RFC 8707), plus Client ID Metadata Documents and Dynamic Client Registration (RFC 7591) for client registration.
How does an MCP client find the authorisation server?
The MCP server returns 401 with a WWW-Authenticate header pointing to its protected resource metadata (or serves it at a well-known URI). That document's authorization_servers field names the authorisation server, whose metadata the client then fetches.

FURTHER READING

Let agents act without letting them run wild.

Route your MCP servers through PolicyLayer and every tool call is checked against your policy before it runs — allow, deny, or require approval. Per-identity grants. Full audit log. Live in minutes.

Free to start. No card required.

43,000+ MCP servers and 220,000+ tools scanned and risk-classified.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.