Scan at scaleSites with an unsafe MCP authorization setup
Sites with an unsafe MCP authorization setup
A site-wide report: one row per host, over the mcp_auth rows the crawl emitted.
What this report returns
An MCP server that answers unauthenticated requests with 401 sends agents through an OAuth discovery chain, and these sites break a protection that chain is meant to provide.
A row appears here when any of these is wrong, worst first:
- Private Key ExposedAn advertised public key set contains private or symmetric key material, allowing readers to impersonate the signer.Fix Remove private members, rotate the exposed keys and publish only public verification keys.
- Unsigned Signing AlgorithmResource signing or authorization-server client authentication advertises the unsigned algorithm none where the metadata specification forbids it.Fix Remove none from those lists and advertise supported signing algorithms.
- Resource MismatchThe metadata's
"resource"doesn't exactly match what it describes, which RFC 9728 requires: the challenged MCP endpoint, or the bare origin for metadata at the site's root, so clients must reject it, since the match is what stops another server impersonating yours.Fix Set"resource"to the endpoint URL character for character, or serve that metadata at the endpoint's own well-known URL. - Authorization Server Issuer MismatchThe metadata's
"issuer"doesn't exactly match the identifier it was discovered from, which RFC 8414 requires, so clients must not use it, since the match is what stops another server impersonating it.Fix Set issuer to the exact URL the server is advertised under. - Missing PKCE SupportThe authorization server doesn't advertise
code_challenge_methods_supportedincluding S256; MCP mandates PKCE, so a compliant client must refuse to proceed.Fix Enable PKCE with S256 and advertise it in the server metadata. - Insecure EndpointAn advertised authorization server, or an authorization, token or registration endpoint in its metadata, isn't https (plain http, or a javascript:, data: or file: URL), so sign-in, codes and tokens travel unencrypted or a client is handed a link it must never open. MCP requires HTTPS for every one.Fix Serve each over https and advertise its https:// URL.
A row here means the chain is unsafe as published, not that anyone has attacked it.
Security checks are provisional; precision has not yet been measured. A clean row is not a security assessment.
The columns it shows
Every defect this technology can carry is a column in the grid, worst first, so nothing is hidden behind a filter you have to know to apply.
- Host
host - MCP Authorization Security Risk Detected
mcpAuthSecurityRiskDetected - MCP Authorization Conformance Issue Detected
mcpAuthConformanceIssueDetected - MCP Auth Private Key Exposed
mcpAuthPrivateKeyExposed - MCP Auth Unsigned Signing Algorithm
mcpAuthUnsignedSigningAlgorithm - MCP Auth Resource Mismatch
mcpAuthResourceMismatch - MCP Auth Authorization Server Issuer Mismatch
mcpAuthAuthorizationServerIssuerMismatch - MCP Auth Missing PKCE Support
mcpAuthMissingPkceSupport - MCP Auth Insecure Endpoint
mcpAuthInsecureEndpoint - MCP Weak RSA Key
mcpAuthWeakRsaKey - MCP Authorization Known Test Key
mcpAuthTestKey - MCP Query Bearer Method
mcpAuthQueryBearerMethod - MCP Auth Findings
mcpAuthFindings - MCP Auth Challenged Endpoint URL
mcpAuthChallengedEndpointUrl - MCP Auth Declared Resource Value
mcpAuthDeclaredResourceValue - MCP Auth Authorization Servers
mcpAuthAuthorizationServerUrls - Ruleset Version
rulesetVersion - Security Check Status
securityCheckStatus - Related Security Frameworks
securityFrameworkReferences
About MCP authorization
The OAuth discovery chain protecting that MCP endpoint.
Read how MCP authorization is checked, including the specification it is validated against and a worked correct and broken example.
Running it
This report comes with Agentic Readiness in Lumar and appears on every crawl of any project that has it turned on. See the whole set, or check a single URL with the scanner on this site, which runs the same code with no account.