Skip to content

claude_design MCP OAuth misroutes to Google Drive connector install flow #72582

Closed as not planned

Description

@mattantaliss

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.

Activity

  1. github-actions commented on Jun 30, 2026

    @github-actions

    Found 2 possible duplicate issues:

    1. [BUG] GitHub MCP authenticate tool redirects OAuth flow to Google Drive consent screen instead of GitHub #45208
    2. [BUG] Linear MCP OAuth /authorize endpoint redirects to deprecated gdrive install URL #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

  2. nicolashubert07-cmd commented on Jul 1, 2026

    @nicolashubert07-cmd

    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.

  3. Bradleycorn commented on Jul 10, 2026

    @Bradleycorn

    I have the same experience as @nicolashubert07-cmd

  4. y26805 commented on Jul 14, 2026

    @y26805
  5. mattantaliss commented on Jul 15, 2026

    @mattantaliss
    Author

    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.

  6. github-actions commented on Sep 3, 2026

    @github-actions

    Closing for now — inactive for too long. Please open a new issue if this is still relevant.

  7. github-actions commented on Oct 27, 2026

    @github-actions

    This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.

  8. locked as resolved and limited conversation to collaborators on Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions