[BUG] claude mcp login for the Claude Design MCP server opens a decommissioned /authorize endpoint (HTTP 410), hanging the OAuth flow

Open 💬 0 comments Opened Jul 15, 2026 by tobewagner

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

claude mcp login claude-design opens a browser to https://api.anthropic.com/authorize?..., which returns HTTP 410 Gone and a "Server Turned Down" page. No callback is ever issued, so the CLI waits indefinitely at Waiting for authorization….

The Claude Design MCP server itself is healthy — it returns a well-formed 401 with a valid WWW-Authenticate challenge and live scopes — so the resource server is not the problem. The failure is isolated to the authorization endpoint the client sends the browser to.

Two things appear to be wrong, possibly independently:

  1. The authorize endpoint is decommissioned. The protected resource metadata advertises https://claude.ai/v1/design/mcp as the authorization server, but the browser is sent to https://api.anthropic.com/authorize, which is 410 Gone.
  2. The 410 page's content is unrelated to this server. It instructs the user to connect a Google Drive MCP URL (https://drivemcp.googleapis.com/mcp/v1) as a replacement for Claude Design. These are unrelated products, and following the instruction would connect a user to file storage in the belief they had restored a design tool.

Because authentication errors are not retried, the server stays at ✘ Failed to connect permanently. claude mcp list reports it identically to an unreachable host, which obscures that the actual cause is auth.

Environment

Steps to Reproduce

  1. claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcp
  2. claude mcp listclaude-design: ✘ Failed to connect
  3. claude mcp login claude-design
  4. Browser opens https://api.anthropic.com/authorize?..."Server Turned Down" (HTTP 410)
  5. CLI hangs at Waiting for authorization… indefinitely

Evidence

1. The resource server is alive and issues a correct OAuth challenge:

$ curl -s -i -X POST https://api.anthropic.com/v1/design/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"d","version":"1"}}}'

HTTP/2 401
www-authenticate: Bearer resource_metadata="https://api.anthropic.com/v1/design/.well-known/oauth-protected-resource", scope="user:design:read user:design:write"

unauthorized

2. Protected resource metadata (HTTP 200) advertises a claude.ai authorization server:

$ curl -s 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"]}

3. But the browser is sent to api.anthropic.com/authorize, which is gone:

$ curl -s -i "https://api.anthropic.com/authorize?response_type=code&client_id=<redacted>&code_challenge=<redacted>&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A60675%2Fcallback&state=<redacted>"

HTTP/2 410
content-type: text/html; charset=utf-8

<h1>Server Turned Down</h1>
<p>This MCP server has been turned down.</p>
<p>Please use <code>https://drivemcp.googleapis.com/mcp/v1</code> instead —
   connect via <a href="https://claude.ai/directory/connectors/google-drive-drivemcp">Google Drive in the Claude directory</a>.</p>

This 410 response reproduces identically from an unrelated network and machine, so it is not local DNS, a proxy, or a browser extension.

Expected Behavior

claude mcp login claude-design completes the OAuth flow against the authorization server advertised in the protected resource metadata (https://claude.ai/v1/design/mcp), and claude mcp list subsequently reports ✔ Connected.

Actual Behavior

The browser lands on a 410 "Server Turned Down" page referencing an unrelated product, and the CLI hangs indefinitely waiting for a callback that cannot be issued.

Additional Notes

  • Authorization server metadata appears to be missing. The protected resource metadata advertises https://claude.ai/v1/design/mcp as the authorization server, but RFC 8414 discovery returns 404 in a browser at both standard locations (https://claude.ai/.well-known/oauth-authorization-server/v1/design/mcp and https://claude.ai/v1/design/mcp/.well-known/oauth-authorization-server). If discovery can't resolve, the client may be falling back to <resource-host>/authorize — the decommissioned endpoint. Note also that these paths sit behind Cloudflare bot mitigation (cf-mitigated: challenge, HTTP 403) for non-browser clients, which could independently break discovery.
  • Docs discrepancy: the Claude Design setup guide instructs users to run /design-login after adding the MCP server. That command does not exist in the CLI — it returns Unknown Skill. If it is a server-provided MCP prompt, it is unreachable by construction, since MCP prompts only register after a server connects, and connection is what the auth failure blocks. The working path is claude mcp login <name> or /mcp; the docs should probably say so.
  • UX note: claude mcp list renders a 401 identically to an unreachable host ("Failed to connect"), which sends users looking for network problems rather than auth. A distinct status for "needs authentication" in the CLI listing (as /mcp already does in-session) would have made this self-diagnosing.

What Should Happen?

claude mcp login claude-design completes the OAuth flow against the authorization server advertised in the protected resource metadata (https://claude.ai/v1/design/mcp), and claude mcp list subsequently reports ✔ Connected.

Error Messages/Logs

The resource server is alive and issues a correct OAuth challenge:

$ curl -s -i -X POST https://api.anthropic.com/v1/design/mcp \
    -H "Content-Type: application/json" \
    -H "Accept: application/json, text/event-stream" \
    -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"d","version":"1"}}}'

HTTP/2 401
www-authenticate: Bearer resource_metadata="https://api.anthropic.com/v1/design/.well-known/oauth-protected-resource", scope="user:design:read user:design:write"

unauthorized


Protected resource metadata (HTTP 200) advertises a claude.ai authorization server:

$ curl -s 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 the browser is sent to api.anthropic.com/authorize, which is gone:

$ curl -s -i "https://api.anthropic.com/authorize?response_type=code&client_id=<redacted>&code_challenge=<redacted>&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A60675%2Fcallback&state=<redacted>"

HTTP/2 410
content-type: text/html; charset=utf-8

<h1>Server Turned Down</h1>
<p>This MCP server has been turned down.</p>
<p>Please use <code>https://drivemcp.googleapis.com/mcp/v1</code> instead —
   connect via <a href="https://claude.ai/directory/connectors/google-drive-drivemcp">Google Drive in the Claude directory</a>.</p>

Steps to Reproduce

  1. claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcp
  2. claude mcp list → claude-design: ✘ Failed to connect
  3. claude mcp login claude-design
  4. Browser opens https://api.anthropic.com/authorize?... → "Server Turned Down" (HTTP 410)
  5. CLI hangs at Waiting for authorization… indefinitely

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Claude Code: 2.1.209

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗