The discovery chain#
An MCP client that receives a 401 reads the WWW-Authenticate header, follows resource_metadata to the protected-resource document, finds the authorization server, fetches that server's metadata, and begins an ordinary OAuth flow. Each hop is a plain HTTPS GET.
Two practical notes from running this at scale. The protected-resource document is located by inserting the well-known segment into the path, not by appending it — a detail that makes a compliant server look non-compliant if you get it wrong. And endpoint behaviour can depend on your request headers, so send the protocol version and accept both JSON and event-stream before concluding anything about a vendor.
Reading a scope list#
The scope list is the most decision-relevant thing a server publishes, and the variation across real servers is enormous.
Some publish granular, verb-separated scopes — separate read and write permissions per resource. An administrator can grant exactly what a use case needs.
Others publish a single opaque scope. There is no read-only option: approving the connection approves everything the server can do, and no amount of client configuration changes that.
Across the servers we profile that publish any scope list, 8 of 16 fall into the second category.
Dynamic client registration#
If the authorization server publishes a registration_endpoint, clients can register themselves and connect without an administrator pre-provisioning anything. If it does not, someone registers each client by hand.
Neither is wrong. But the second has a real operational cost that only shows up once more than a handful of people want to connect, so it is worth knowing before rollout rather than during it.
When there is no OAuth at all#
5 of the 33 servers we profile accepted an unauthenticated connection when we checked, returning their capabilities to anyone who asked.
For a public documentation search tool that is a reasonable design. For anything touching business data it is a question to resolve before connecting, because a server that requires no credential from you requires none from anyone else either.