1.
The MCP client calls POST /mcp without a token and receives 401 Unauthorized with a WWW-Authenticate header pointing to the resource metadata.
2.
The client discovers the authorization server through the well-known documents below.
3.
The client starts an authorization code flow with PKCE (S256). The user logs in to deskbird and approves the consent screen.
4.
The client exchanges the code for tokens at the token endpoint and calls POST /mcp with the access token as a Bearer header.
Claude (web, desktop, mobile, and Claude Code) – supported.
Other native clients that support CIMD – supported. For example, the ChatGPT Codex desktop app uses a loopback redirect and presents a CIMD, so it connects.
Clients without CIMD support – not supported yet. For example, Codex on the web does not present a CIMD, so it cannot connect even though it is otherwise a valid OAuth client.
the token signature, audience, issuer, and expiry
the mcp scope and the admin role
that the company still has the MCP server feature