claude_design MCP OAuth misroutes to Google Drive connector install flow

Status Open
Maintainer reply None cached
Activity 5 comments · opened Jun 30, 2026

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

  1. Configure an HTTP MCP server: {"type": "http", "url": "https://api.anthropic.com/v1/design/mcp"}
  2. Run /mcp and authenticate claude_design.
  3. 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 metadata token 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.json and the mcpOAuth credential entry); the stored discoveryState recorded authorizationServerUrl: "https://api.anthropic.com/" with an empty accessToken, confirming the flow dies at the authorization step.

This appears to be a server-side gateway misconfiguration rather than a client issue.

View original on GitHub ↗

5 Comments

github-actions[bot] · 2 months ago

Found 2 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/45208
  2. https://github.com/anthropics/claude-code/issues/64387

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

nicolashubert07-cmd · 2 months ago

Confirming I hit this exact same issue — thanks for already digging into the root cause, it matches what I observed.

Environment:

Claude Code, npm-global install, win32-x64
Claude Team plan (organization account, org UUID resolved via claude /doctor) — not an individual Pro/Free account, so this isn't limited to personal plans
MCP server: claude-design (https://api.anthropic.com/v1/design/mcp)
Reproduction:

/mcp → select claude-design (status failed, not authenticated) → Authenticate
Generated authorize URL: https://api.anthropic.com/authorize?response_type=code&client_id=8f67676b-9be2-47a1-9a8f-13ce9903f91b&code_challenge=...&redirect_uri=http%3A%2F%2Flocalhost%3A...%2Fcallback&state=...
Opening it (default browser, and separately in a fresh private/incognito window — same result both times) lands on https://api.anthropic.com/mcp/gdrive/google/install?metadata=... → "Server Turned Down... use Google Drive in the Claude directory."
Ruled out on my end:

Not a browser cache/session issue (reproduced in a clean private window)
Not a stale-client issue (reproduced on 2.1.156 and again after updating to latest via npm install -g @anthropic-ai/claude-code@latest)
Meanwhile, claude.ai/design itself works fine under the same account (existing projects load and are usable), so the breakage is isolated to the MCP OAuth discovery path you described, not Claude Design access in general. Workaround for anyone stuck: use "Send to Claude Code" from an existing project on claude.ai/design instead of authenticating the connector via /mcp.

Happy to provide more diagnostic output if useful.

Bradleycorn · 1 month ago

I have the same experience as @nicolashubert07-cmd

y26805 · 1 month ago

we ran into the same issue and found a workaround:

https://support.claude.com/en/articles/14604416-get-started-with-claude-design

1. Add the server:

​claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcp

2. Run /design-login to sign in.
mattantaliss · 1 month ago

Update: the officially-documented setup path still hits this bug, and the misroute now lands on a decommissioned server.

Per the Claude Design support article (https://support.claude.com/en/articles/14604416-get-started-with-claude-design), the prescribed setup is:

claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcp
claude mcp login claude-design   # (or /design-login in an interactive session)

Tested on Claude Code 2.1.210 (newer than the 2.1.156 in earlier reports), fresh user-scope registration, stale OAuth state cleared beforehand. claude mcp login claude-design opens:

https://api.anthropic.com/authorize?response_type=code&client_id=…&code_challenge=…&code_challenge_method=S256&redirect_uri=http://localhost:PORT/callback&state=…

So the client still resolves the design server's authorization server to the api.anthropic.com root /authorize endpoint — not the https://claude.ai/v1/design/mcp that the server's own protected-resource metadata advertises. This matches the root cause in the original report: the root's /.well-known/oauth-authorization-server returns the gdrive connector's metadata ("issuer": "https://api.anthropic.com/mcp/gdrive", "authorization_endpoint": "https://api.anthropic.com/authorize"), so design auth is handed to the wrong authorization server.

New detail: that authorize endpoint now renders a tombstone page instead of any consent screen:

Server Turned Down — This MCP server has been turned down. Please use https://drivemcp.googleapis.com/mcp/v1 instead — connect via Google Drive in the Claude directory.

So the misroute target (the old /mcp/gdrive connector) has since been decommissioned and migrated to a Google-hosted URL, and design-connector auth is now being dropped onto a dead endpoint.

Summary:

  • The claude mcp add + /design-login workaround from the support article does not avoid the misroute — it runs through the same broken discovery.
  • Re-confirmed today that https://api.anthropic.com/.well-known/oauth-authorization-server still returns the gdrive issuer, so the gateway hasn't been fixed.
  • The design server correctly advertises authorization_servers: ["https://claude.ai/v1/design/mcp"]; the client just isn't using it.

Reproducible across a clean setup on the latest client. Happy to provide more diagnostic output.