# 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 Exposed**An 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 Algorithm**Resource 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 Mismatch**The 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 Mismatch**The 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 Support**The authorization server doesn't advertise `code_challenge_methods_supported` including 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 Endpoint**An 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](https://agentic-readiness.lumar.io/docs/capabilities/mcp-auth), 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](https://agentic-readiness.lumar.io/scan-at-scale), or check a single URL with the [scanner on this site](https://agentic-readiness.lumar.io/), which runs the same code with no account.

[Get Lumar pricing →](https://www.lumar.io/pricing/)
