{"slug": "we-checked-61-official-mcp-servers-against-the-auth-spec", "title": "We Checked 61 Official MCP Servers Against the Auth Spec", "summary": "An external audit of 61 official remote MCP servers requiring login found that all implement HTTP 401 challenges and PKCE with S256, but adoption of newer parts of the 2026-07-28 MCP authorization spec lags: only 25 advertise Client ID Metadata Documents, 40 of 61 omit the RFC 9207 issuer parameter, and 22 give clients no scope hint. The checks, run passively via a free MCP Server Check tool on October 26 and November 4, 2026, also recorded six configuration changes between the two passes.", "body_md": "Most SaaS companies now ship an official remote MCP server, and most of them sit behind OAuth. We wanted to know how closely those servers follow the current MCP authorization spec (the 2026-07-28 revision), so we checked the official servers of 67 vendors from the outside. 61 of them require a login. This post is about those 61.\n\nThe short version: the basics are done everywhere. The newer parts of the spec are not.\n\nWe used our free [MCP Server Check](https://x1y1.co/mcp-check). It is passive. For each server it sends one unauthenticated `initialize` request, reads the public OAuth discovery documents, and calls `tools/list` only if the server answers without a token. It never calls a tool and never sends a token.\n\nWe ran every server on October 26 and again on November 4, 2026. The numbers below are from November 4. Results are point in time and checked from Cloudflare's network, so a server can look different from another network or a few days later.\n\nAll 61 answer an anonymous request with HTTP 401, and all 61 advertise PKCE with S256. That is the part of the spec that stops the most obvious mistakes, and nobody skipped it.\n\n56 of 61 also publish OAuth Protected Resource Metadata (RFC 9728) and point to it from the 401 response, which is how a client finds where to log in. The other 5 either use the older 2025-03-26 discovery layout or publish the metadata without pointing to it in the 401.\n\n**Client registration.** The current spec says Dynamic Client Registration \"is deprecated and retained for backwards compatibility with authorization servers that do not support Client ID Metadata Documents.\" 25 of 61 advertise Client ID Metadata Documents (CIMD). The other 36 rely on dynamic registration or manual client setup. Nothing breaks today, but every client that connects to those 36 still needs a registration step the spec is moving away from.\n\n**Issuer check.** The spec says authorization servers SHOULD include the `iss` parameter in authorization responses (RFC 9207), and advertise it with `authorization_response_iss_parameter_supported`. It lets a client catch an OAuth mix-up attack, where a code from one authorization server is sent to another. 40 of 61 do not advertise it.\n\n**Scope hint.** 22 of 61 give the client no hint about which scopes to request, neither in the 401 nor in `scopes_supported`. The client then has to guess, and guessing usually means asking for more than it needs.\n\nBetween October 26 and November 4, six changes showed up:\n\nNone of these companies told us about it, and we did not contact them. It is a sign the spec changes are being picked up, just not all at once.\n\nScore is out of 100 and also includes transport and HSTS checks that are not shown as columns. \"Discovery: partial\" means the server uses the older discovery layout or does not point to its metadata from the 401.\n\n| Company | Score | CIMD | iss (RFC 9207) | Scope hint | Discovery | \n|---|---|---|---|---|---|\n| Fireflies | 100 | yes | yes | yes | ok | \n| Notion | 100 | yes | yes | yes | ok | \n| Airtable | 98 | yes | no | yes | ok | \n| Apollo | 98 | yes | no | yes | ok | \n| Canva | 98 | yes | no | yes | ok | \n| Clerk | 98 | yes | yes | yes | ok | \n| Klaviyo | 98 | yes | yes | no | ok | \n| Linear | 98 | yes | yes | yes | ok | \n| Neon | 98 | yes | yes | no | ok | \n| Railway | 98 | yes | yes | yes | ok | \n| Sentry | 98 | yes | yes | yes | ok | \n| Tavily | 98 | yes | yes | yes | ok | \n| Vercel | 98 | yes | no | yes | ok | \n| monday.com | 98 | yes | yes | no | ok | \n| Amplitude | 96 | yes | no | yes | ok | \n| Cal.com | 96 | yes | no | no | ok | \n| Grafana | 96 | yes | no | yes | ok | \n| Granola | 96 | yes | no | yes | ok | \n| Honeycomb | 96 | yes | no | yes | ok | \n| MongoDB | 96 | yes | yes | no | ok | \n| PostHog | 96 | yes | no | yes | ok | \n| Resend | 96 | yes | yes | no | ok | \n| Todoist | 96 | yes | no | yes | ok | \n| Figma | 95 | no | yes | yes | ok | \n| GitHub | 95 | no | yes | yes | ok | \n| Supabase | 95 | no | yes | yes | ok | \n| Semgrep | 94 | yes | no | no | ok | \n| Asana | 93 | no | no | yes | ok | \n| Buffer | 93 | no | no | yes | ok | \n| ClickUp | 93 | no | yes | yes | ok | \n| Close | 93 | no | no | yes | ok | \n| Gamma | 93 | no | yes | yes | ok | \n| GitLab | 93 | no | no | yes | ok | \n| Jam | 93 | no | no | yes | ok | \n| Miro | 93 | no | no | yes | ok | \n| Netlify | 93 | no | no | yes | ok | \n| Slack | 93 | no | no | yes | ok | \n| Stripe | 93 | no | no | yes | ok | \n| Ahrefs | 91 | no | no | no | ok | \n| Box | 91 | no | no | no | ok | \n| Cloudflare Bindings | 91 | no | yes | no | ok | \n| Datadog | 91 | no | no | no | ok | \n| Dropbox | 91 | no | no | yes | ok | \n| Hex | 91 | no | no | no | ok | \n| HubSpot | 91 | no | no | no | ok | \n| Intercom | 91 | no | no | yes | ok | \n| Mux | 91 | no | no | no | ok | \n| PagerDuty | 91 | no | no | yes | ok | \n| Postman | 91 | no | no | no | ok | \n| Prisma | 91 | no | no | yes | ok | \n| Wix | 91 | no | no | yes | ok | \n| Make | 90 | no | no | no | ok | \n| PayPal | 90 | no | no | no | ok | \n| Render | 90 | no | no | no | ok | \n| Square | 90 | no | no | no | ok | \n| Webflow | 90 | no | no | no | ok | \n| Apify | 89 | yes | yes | yes | partial | \n| Mercado Pago | 84 | no | yes | yes | partial | \n| Zapier | 84 | no | no | yes | partial | \n| Plaid | 82 | no | yes | no | partial | \n| Atlassian | 80 | no | no | no | partial | \n\nNotion and Fireflies passed every check.\n\nSix more vendors answered `tools/list` without a token: Hugging Face, Context7, Shopify (setup.shopify.com), DeepWiki, Firecrawl and Browserbase. They are documentation, search and scraping tools where open access looks like a deliberate choice, so we left them out of the auth numbers. Nine addresses we tried did not answer as MCP servers, usually because we guessed the wrong URL, and they are not reported.\n\nThe three changes are small. Advertise `client_id_metadata_document_supported` once your authorization server supports CIMD, include `iss` in authorization responses and set `authorization_response_iss_parameter_supported: true`, and put a `scope` in the `WWW-Authenticate` header of the 401.\n\nIf you think we scored your server wrong, run it through the [checker](https://x1y1.co/mcp-check) and tell us at [hello@x1y1.co](mailto:hello@x1y1.co). We would rather fix a rule than publish a wrong number. There is also a JSON API: `https://x1y1.co/api/mcp-check?url=<server>`.\n\n*Originally published at [x1y1.co](https://x1y1.co/journal/official-mcp-servers-auth-spec-check/).*", "url": "https://wpnews.pro/news/we-checked-61-official-mcp-servers-against-the-auth-spec", "canonical_source": "https://dev.to/x1y1co/we-checked-61-official-mcp-servers-against-the-auth-spec-48i4", "published_at": "2026-11-03 23:35:04+00:00", "updated_at": "2026-11-03 23:52:51.121479+00:00", "lang": "en", "topics": ["agent-protocols", "ai-agents", "ai-tools", "developer-tools", "ai-safety"], "entities": ["MCP", "Fireflies", "Notion", "Airtable", "Canva", "Linear", "Vercel", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/we-checked-61-official-mcp-servers-against-the-auth-spec", "markdown": "https://wpnews.pro/news/we-checked-61-official-mcp-servers-against-the-auth-spec.md", "text": "https://wpnews.pro/news/we-checked-61-official-mcp-servers-against-the-auth-spec.txt", "jsonld": "https://wpnews.pro/news/we-checked-61-official-mcp-servers-against-the-auth-spec.jsonld"}}