claude_design MCP OAuth misroutes to Google Drive connector install flow
Summary
Connecting the claude_design MCP server (https://api.anthropic.com/v1/design/mcp) misroutes OAuth into the Google Drive connector's install flow. Authentication never reaches a design consent screen; instead the browser lands on https://api.anthropic.com/mcp/gdrive/google/install?metadata=….
Root cause
The design server's protected-resource metadata advertises the correct authorization server:
GET https://api.anthropic.com/v1/design/.well-known/oauth-protected-resource
{
"resource": "https://api.anthropic.com/v1/design/mcp",
"authorization_servers": ["https://claude.ai/v1/design/mcp"],
"scopes_supported": ["user:design:read", "user:design:write"]
}
But OAuth discovery resolves the authorization server to the api.anthropic.com root, and that root's authorization-server metadata is the gdrive connector's:
GET https://api.anthropic.com/.well-known/oauth-authorization-server
{
"issuer": "https://api.anthropic.com/mcp/gdrive",
"authorization_endpoint": "https://api.anthropic.com/authorize",
...
}
So design auth is handed off to the Google Drive connector's authorization flow.
Steps to reproduce
- Configure an HTTP MCP server:
{"type": "http", "url": "https://api.anthropic.com/v1/design/mcp"} - Run
/mcpand authenticateclaude_design. - Browser opens
https://api.anthropic.com/mcp/gdrive/google/install?metadata=…(a Google Drive consent screen) instead of a design consent screen.
Notes
- Reproducible across fresh attempts — a new
metadatatoken is generated each time, so it is not a stale-token issue. - No Google Drive connector is enabled on the account.
- Verified client config is correct and cleared all local OAuth state (
mcp-needs-auth-cache.jsonand themcpOAuthcredential entry); the storeddiscoveryStaterecordedauthorizationServerUrl: "https://api.anthropic.com/"with an emptyaccessToken, confirming the flow dies at the authorization step.
This appears to be a server-side gateway misconfiguration rather than a client issue.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗