[BUG] mcp__github__authenticate emits an OAuth URL that redirects to a turned-down Google Drive MCP install page
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?
Summary
The mcp__github__authenticate tool — which is supposed to start an OAuth flow to authorise the GitHub MCP server — returns an api.anthropic.com/authorize URL whose client_id is registered against the deprecated Google Drive MCP server. Following the URL 302-redirects to api.anthropic.com/mcp/gdrive/google/install, which returns HTTP 410 Gone with a "Server Turned Down" page that asks the user to install Google Drive via the Claude directory.
Net effect: the GitHub MCP cannot be (re)authorised from inside a Claude Code session that has lost authorisation. The user is told by Anthropic's own auth server to install Google Drive, when they intended to grant GitHub access. This is confusing, looks like a phishing or mis-routed flow, and risks users either bailing out (and being unable to use the GitHub MCP) or — should the gdrive endpoint ever return 200 again — actually authorising the wrong thing.
Environment
- Claude Code: web-hosted session on
claude-opus-4-7 - Platform: linux sandbox; browser is Chrome 147 / Windows 10
- Date observed: 2026-05-05, ~15:58 UTC
- MCP server: built-in
githubMCP (47 tools) - Trigger context: a system reminder announced "47 deferred tools are no longer available (MCP server disconnected): mcp__github__* (47)" and exposed only
mcp__github__authenticateandmcp__github__complete_authenticationvia ToolSearch. Callingmcp__github__authenticateproduced the broken URL.
Steps to reproduce
- In a Claude Code session, get the
githubMCP server into a "needs reauthorisation" state (or trigger the auth flow directly). - Invoke
mcp__github__authenticate(no arguments). - Open the URL it returns in a browser.
Expected behaviour
Browser lands on an Anthropic OAuth consent page asking the user to grant access to the GitHub MCP server. After authorising, the browser is redirected to http://localhost:<port>/callback?code=...&state=... (which then fails to load — that is documented and expected for sandboxed sessions).
Actual behaviour
Browser lands at api.anthropic.com/authorize?...&client_id=<id>&..., which 302-redirects to api.anthropic.com/mcp/gdrive/google/install?metadata=<hash>, which returns HTTP 410 Gone with the body:
# 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.
i.e., the OAuth client_id minted by mcp__github__authenticate for the github MCP server resolves to a Google Drive install metadata record.
Reproducibility
Deterministic. Two consecutive invocations of mcp__github__authenticate in the same session produced two different client_ids, both redirecting to the gdrive turned-down page:
| Attempt | client_id |
|---|---|
| 1 | a39cd6e4-975d-4482-8575-335ed1acae01 |
| 2 | 3e2db365-87f5-47a8-9b0e-a82e01526c31 |
Evidence
Authorize URL emitted by the tool (attempt 2)
https://api.anthropic.com/authorize?response_type=code&client_id=3e2db365-87f5-47a8-9b0e-a82e01526c31&code_challenge=yDUXC5rUuTF-Kf9MhUGMqzvQjVBLuvFI9960xErBI54&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A55563%2Fcallback&state=PzFFsjFd6cjMLqu0sEOc9dU7IOd9V8no784op4IZ7ks
HAR — request 1 (the authorize URL)
GET https://api.anthropic.com/authorize?response_type=code&client_id=3e2db365-87f5-47a8-9b0e-a82e01526c31&...
→ HTTP/2 302
location: https://api.anthropic.com/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3
cache-control: no-store
cf-ray: 9f70f2502d53eafb-ORD
x-envoy-upstream-service-time: 20
server: cloudflare
HAR — request 2 (the redirect target)
GET https://api.anthropic.com/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3
→ HTTP/2 410
content-type: text/html; charset=utf-8
cf-ray: 9f70f2509e91eafb-ORD
server: cloudflare
<!DOCTYPE html>
<html>
<head><title>Server Turned Down</title></head>
<body style="font-family: -apple-system, system-ui, sans-serif; max-width: 560px; margin: 4em auto; padding: 0 1em; color: #1f2937;">
<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>
</body>
</html>
Earlier attempt (different client_id, same outcome)
Attempt 1's client_id=a39cd6e4-975d-4482-8575-335ed1acae01 produced an identical redirect chain to the same gdrive Server Turned Down page (observed via browser screenshot rather than HAR).
Impact
- GitHub MCP authentication is broken from inside Claude Code. When the GitHub MCP loses its session,
mcp__github__authenticatecannot recover it. Users are stuck unless the MCP reconnects spontaneously (which it sometimes does mid-session — that's how the session that produced this report eventually completed — but it is not guaranteed). - User-experience hazard. Users invoking what they believe is "GitHub authentication" are shown a Google Drive page that asks them to install/authorise something else. Even though the gdrive endpoint currently returns 410, this is alarming and makes the flow feel like a security incident or a misrouted phishing attempt.
- Latent risk. If the gdrive install endpoint is ever reactivated (or if a similar flow is rebuilt with a 200 response), this bug would silently authorise Google Drive in place of GitHub. The fact that the routing is wrong should be fixed regardless of the current 410 masking the worst case.
Hypothesis / suggested area to investigate
The OAuth client_ids that mcp__github__authenticate mints are resolving — on api.anthropic.com/authorize — to install metadata associated with the deprecated Google Drive MCP, not the github MCP. Two possibilities:
- The auth server's
client_id→ install-metadata table is mis-mapped (e.g., a default fallback that points at gdrive for any unrecognised MCP). - The
mcp__github__authenticatetool is requesting client registration with the wrong product identifier.
Suggested fix: trace the client_id-to-install-metadata mapping for clients minted by mcp__github__authenticate, and ensure it points at the github MCP's install metadata (or, if there is no canonical install page for the built-in github MCP, that the authorize endpoint serves a real consent page rather than redirecting to an install page at all).
Workaround
None reliable. The GitHub MCP sometimes reconnects on its own mid-session — when this happens, the 47 mcp__github__* tools come back and the session can continue without going through mcp__github__authenticate. If reconnection does not happen, the session is effectively stuck.
What Should Happen?
Browser lands on an Anthropic OAuth consent page asking the user to grant access to the GitHub MCP server. After authorising, the browser is redirected to http://localhost:<port>/callback?code=...&state=... (which then fails to load — that is documented and expected for sandboxed sessions).
Error Messages/Logs
{
"log": {
"version": "1.2",
"creator": {
"name": "WebInspector",
"version": "537.36"
},
"pages": [
{
"startedDateTime": "2026-05-05T15:58:25.188Z",
"id": "page_1",
"title": "https://api.anthropic.com/authorize?response_type=code&client_id=3e2db365-87f5-47a8-9b0e-a82e01526c31&code_challenge=yDUXC5rUuTF-Kf9MhUGMqzvQjVBLuvFI9960xErBI54&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A55563%2Fcallback&state=PzFFsjFd6cjMLqu0sEOc9dU7IOd9V8no784op4IZ7ks",
"pageTimings": {
"onContentLoad": 163.8819999061525,
"onLoad": 164.34799996204674
}
}
],
"entries": [
{
"_initiator": {
"type": "other"
},
"_priority": "VeryHigh",
"_resourceType": "document",
"cache": {},
"connection": "443",
"request": {
"method": "GET",
"url": "https://api.anthropic.com/authorize?response_type=code&client_id=3e2db365-87f5-47a8-9b0e-a82e01526c31&code_challenge=yDUXC5rUuTF-Kf9MhUGMqzvQjVBLuvFI9960xErBI54&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A55563%2Fcallback&state=PzFFsjFd6cjMLqu0sEOc9dU7IOd9V8no784op4IZ7ks",
"httpVersion": "http/2.0",
"headers": [
{
"name": ":authority",
"value": "api.anthropic.com"
},
{
"name": ":method",
"value": "GET"
},
{
"name": ":path",
"value": "/authorize?response_type=code&client_id=3e2db365-87f5-47a8-9b0e-a82e01526c31&code_challenge=yDUXC5rUuTF-Kf9MhUGMqzvQjVBLuvFI9960xErBI54&code_challenge_method=S256&redirect_uri=http%3A%2F%2Flocalhost%3A55563%2Fcallback&state=PzFFsjFd6cjMLqu0sEOc9dU7IOd9V8no784op4IZ7ks"
},
{
"name": ":scheme",
"value": "https"
},
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
},
{
"name": "accept-encoding",
"value": "gzip, deflate, br, zstd"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.9"
},
{
"name": "priority",
"value": "u=0, i"
},
{
"name": "sec-ch-ua",
"value": "\"Google Chrome\";v=\"147\", \"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"147\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "document"
},
{
"name": "sec-fetch-mode",
"value": "navigate"
},
{
"name": "sec-fetch-site",
"value": "none"
},
{
"name": "sec-fetch-user",
"value": "?1"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"
}
],
"queryString": [
{
"name": "response_type",
"value": "code"
},
{
"name": "client_id",
"value": "3e2db365-87f5-47a8-9b0e-a82e01526c31"
},
{
"name": "code_challenge",
"value": "yDUXC5rUuTF-Kf9MhUGMqzvQjVBLuvFI9960xErBI54"
},
{
"name": "code_challenge_method",
"value": "S256"
},
{
"name": "redirect_uri",
"value": "http%3A%2F%2Flocalhost%3A55563%2Fcallback"
},
{
"name": "state",
"value": "PzFFsjFd6cjMLqu0sEOc9dU7IOd9V8no784op4IZ7ks"
}
],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 302,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "cache-control",
"value": "no-store"
},
{
"name": "cf-cache-status",
"value": "DYNAMIC"
},
{
"name": "cf-ray",
"value": "9f70f2502d53eafb-ORD"
},
{
"name": "content-security-policy",
"value": "default-src 'none'; frame-ancestors 'none'"
},
{
"name": "content-type",
"value": "text/html; charset=utf-8"
},
{
"name": "date",
"value": "Tue, 05 May 2026 15:58:25 GMT"
},
{
"name": "location",
"value": "https://api.anthropic.com/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3"
},
{
"name": "ratelimit-limit",
"value": "100"
},
{
"name": "ratelimit-policy",
"value": "100;w=900"
},
{
"name": "ratelimit-remaining",
"value": "99"
},
{
"name": "ratelimit-reset",
"value": "900"
},
{
"name": "server",
"value": "cloudflare"
},
{
"name": "server-timing",
"value": "x-originResponse;dur=22"
},
{
"name": "strict-transport-security",
"value": "max-age=31536000; includeSubDomains"
},
{
"name": "vary",
"value": "Accept"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "x-envoy-upstream-service-time",
"value": "20"
},
{
"name": "x-frame-options",
"value": "SAMEORIGIN"
},
{
"name": "x-powered-by",
"value": "Express"
},
{
"name": "x-robots-tag",
"value": "none"
}
],
"cookies": [],
"content": {
"size": 0,
"mimeType": "text/html"
},
"redirectURL": "https://api.anthropic.com/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 182,
"_error": null,
"_fetchedViaServiceWorker": false
},
"serverIPAddress": "160.79.104.10",
"startedDateTime": "2026-05-05T15:58:25.184Z",
"time": 75.94699994660914,
"timings": {
"blocked": 5.410999936044217,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.502,
"wait": 68.06299990355969,
"receive": 1.9710001070052385,
"_blocked_queueing": 4.302999936044216,
"_workerStart": -1,
"_workerReady": -1,
"_workerFetchStart": -1,
"_workerRespondWithSettled": -1
},
"_connectionId": "2075930",
"pageref": "page_1"
},
{
"_initiator": {
"type": "other"
},
"_priority": "VeryHigh",
"_resourceType": "document",
"cache": {},
"connection": "443",
"request": {
"method": "GET",
"url": "https://api.anthropic.com/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3",
"httpVersion": "http/2.0",
"headers": [
{
"name": ":authority",
"value": "api.anthropic.com"
},
{
"name": ":method",
"value": "GET"
},
{
"name": ":path",
"value": "/mcp/gdrive/google/install?metadata=0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3"
},
{
"name": ":scheme",
"value": "https"
},
{
"name": "accept",
"value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"
},
{
"name": "accept-encoding",
"value": "gzip, deflate, br, zstd"
},
{
"name": "accept-language",
"value": "en-US,en;q=0.9"
},
{
"name": "priority",
"value": "u=0, i"
},
{
"name": "sec-ch-ua",
"value": "\"Google Chrome\";v=\"147\", \"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"147\""
},
{
"name": "sec-ch-ua-mobile",
"value": "?0"
},
{
"name": "sec-ch-ua-platform",
"value": "\"Windows\""
},
{
"name": "sec-fetch-dest",
"value": "document"
},
{
"name": "sec-fetch-mode",
"value": "navigate"
},
{
"name": "sec-fetch-site",
"value": "none"
},
{
"name": "sec-fetch-user",
"value": "?1"
},
{
"name": "upgrade-insecure-requests",
"value": "1"
},
{
"name": "user-agent",
"value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"
}
],
"queryString": [
{
"name": "metadata",
"value": "0ea04a71d347974423563ccde2e28ebe114016c6903eb0cf522cc48ee5d884e3"
}
],
"cookies": [],
"headersSize": -1,
"bodySize": 0
},
"response": {
"status": 410,
"statusText": "",
"httpVersion": "http/2.0",
"headers": [
{
"name": "access-control-allow-credentials",
"value": "true"
},
{
"name": "cf-cache-status",
"value": "DYNAMIC"
},
{
"name": "cf-ray",
"value": "9f70f2509e91eafb-ORD"
},
{
"name": "content-security-policy",
"value": "default-src 'none'; frame-ancestors 'none'"
},
{
"name": "content-type",
"value": "text/html; charset=utf-8"
},
{
"name": "date",
"value": "Tue, 05 May 2026 15:58:25 GMT"
},
{
"name": "server",
"value": "cloudflare"
},
{
"name": "server-timing",
"value": "x-originResponse;dur=5"
},
{
"name": "strict-transport-security",
"value": "max-age=31536000; includeSubDomains"
},
{
"name": "vary",
"value": "Origin"
},
{
"name": "x-content-type-options",
"value": "nosniff"
},
{
"name": "x-envoy-upstream-service-time",
"value": "3"
},
{
"name": "x-frame-options",
"value": "SAMEORIGIN"
},
{
"name": "x-powered-by",
"value": "Express"
},
{
"name": "x-robots-tag",
"value": "none"
}
],
"cookies": [],
"content": {
"size": 509,
"mimeType": "text/html",
"text": "<!DOCTYPE html>\n<html>\n<head><title>Server Turned Down</title></head>\n<body style=\"font-family: -apple-system, system-ui, sans-serif; max-width: 560px; margin: 4em auto; padding: 0 1em; color: #1f2937;\">\n <h1>Server Turned Down</h1>\n <p>This MCP server has been turned down.</p>\n <p>Please use <code>https://drivemcp.googleapis.com/mcp/v1</code> instead —\n connect via <a href=\"https://claude.ai/directory/connectors/google-drive-drivemcp\">Google Drive in the Claude directory</a>.</p>\n</body>\n</html>"
},
"redirectURL": "",
"headersSize": -1,
"bodySize": -1,
"_transferSize": 569,
"_error": null,
"_fetchedViaServiceWorker": false
},
"serverIPAddress": "160.79.104.10",
"startedDateTime": "2026-05-05T15:58:25.260Z",
"time": 73.15400009974837,
"timings": {
"blocked": 0.9309999753534794,
"dns": -1,
"ssl": -1,
"connect": -1,
"send": 0.16099999999999998,
"wait": 71.57000010335446,
"receive": 0.4920000210404396,
"_blocked_queueing": 0.4859999753534794,
"_workerStart": -1,
"_workerReady": -1,
"_workerFetchStart": -1,
"_workerRespondWithSettled": -1
},
"_connectionId": "2075930",
"pageref": "page_1"
}
]
}
}
Steps to Reproduce
Deterministic. Two consecutive invocations of mcp__github__authenticate in the same session produced two different client_ids, both redirecting to the gdrive turned-down page:
| Attempt | client_id |
|---|---|
| 1 | a39cd6e4-975d-4482-8575-335ed1acae01 |
| 2 | 3e2db365-87f5-47a8-9b0e-a82e01526c31 |
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.5354.0 (9a9e3d) 2026-04-29T01:14:34.000Z
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
I am using the windows claude client in the "code" tab.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗