[BUG] claude mcp login for the Claude Design MCP server opens a decommissioned /authorize endpoint (HTTP 410), hanging the OAuth flow
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:
- The authorize endpoint is decommissioned. The protected resource metadata advertises
https://claude.ai/v1/design/mcpas the authorization server, but the browser is sent tohttps://api.anthropic.com/authorize, which is 410 Gone. - 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
- Claude Code: 2.1.209
- OS: macOS (Apple Silicon, M1)
- Install method: not Homebrew (native or npm)
- Plan: Max
- Server registered per the official docs: https://support.claude.com/en/articles/14604416-get-started-with-claude-design
Steps to Reproduce
claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcpclaude mcp list→claude-design: ✘ Failed to connectclaude mcp login claude-design- Browser opens
https://api.anthropic.com/authorize?...→ "Server Turned Down" (HTTP 410) - 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-loginafter adding the MCP server. That command does not exist in the CLI — it returnsUnknown 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 isclaude mcp login <name>or/mcp; the docs should probably say so. - UX note:
claude mcp listrenders 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/mcpalready 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
- claude mcp add --scope user --transport http claude-design https://api.anthropic.com/v1/design/mcp
- claude mcp list → claude-design: ✘ Failed to connect
- claude mcp login claude-design
- Browser opens https://api.anthropic.com/authorize?... → "Server Turned Down" (HTTP 410)
- 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_