createmcps.com

MCP-AUT-004

Each listed authorization server exposes RFC 8414 or OIDC discovery metadata

“MCP authorization servers MUST provide at least one of: OAuth 2.0 Authorization Server Metadata (RFC8414) or OpenID Connect Discovery 1.0.” — spec anchor

How to fix this

List at least one entry in `authorization_servers`, and make sure each one serves either RFC 8414 Authorization Server Metadata or OpenID Connect Discovery. Without it a client cannot find where to authenticate.

Example: failing and passing

The authorization server listed in authorization_servers serves neither RFC 8414 nor OpenID Connect Discovery metadata.
Violates MCP-AUT-004 · HTTP
GET /.well-known/oauth-authorization-server HTTP/1.1
Host: auth.example.com

HTTP/1.1 404 Not Found

GET /.well-known/openid-configuration HTTP/1.1
Host: auth.example.com

HTTP/1.1 404 Not Found
The authorization server serves RFC 8414 metadata at the oauth-authorization-server well-known URI.
Complies with MCP-AUT-004 · HTTP
GET /.well-known/oauth-authorization-server HTTP/1.1
Host: auth.example.com

HTTP/1.1 200 OK
Content-Type: application/json

{
  "issuer": "https://auth.example.com",
  "authorization_endpoint": "https://auth.example.com/authorize",
  "token_endpoint": "https://auth.example.com/token",
  "response_types_supported": ["code"],
  "code_challenge_methods_supported": ["S256"]
}

How the validator checks this

Probe P8.3, against a streamable-http server on the modern protocol. What it reports:

pass
… authorization server(s) expose discovery metadata
fail
Protected Resource Metadata lists no authorization_servers, so a client cannot discover where to authenticate

Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.

This rule is checked deterministically: a fail here is a certain violation, not an inference.

Checked in the same request as MCP-AUT-005, MCP-AUT-010, MCP-AUT-011.

Check your own server against MCP-AUT-004

Probe P8.3 checks MCP-AUT-004 in the same request as 3 other rules, so one run shows your server's result for this rule next to the rest. Validate a server or read how the validator works.

Background on this topic: how to add OAuth to an MCP server.

Other Authorization rules

  • MCP-AUT-001Unauthenticated request returns 401 with WWW-Authenticate resource_metadata
  • MCP-AUT-002RFC 9728 Protected Resource Metadata is served and valid
  • MCP-AUT-003PRM resource equals the canonical server URI
  • MCP-AUT-005AS advertises authorization_response_iss_parameter_supported: true
  • MCP-AUT-006WWW-Authenticate includes a scope parameter
  • MCP-AUT-007Insufficient scope returns 403 with error="insufficient_scope"
  • MCP-AUT-008Tokens with a foreign audience are rejected
  • MCP-AUT-009offline_access absent from scopes_supported / challenge scope
  • MCP-AUT-010AS advertises S256 in code_challenge_methods_supported
  • MCP-AUT-011AS supports Client ID Metadata Documents, not DCR alone