Solve Claude Code MCP Dynamic Client Registration (DCR) issues with mcp-remote
The early false starts in the MCP Auth spec has led to fragmented implementations. Some remote MCP servers fully support the spec and others don't. The same goes for clients, some like VS Code have made concerted efforts to be fully spec compliant, while others like Claude Code haven't prioritized full spec compliance.
You can see this play out in a host of issues on the Claude Code repo. The main culprit is that Claude Code currently seems to expect all MCP servers support Dynamic Client Registration and doesn't fallback when that proves not to be the case.
That's unfortunate because the 2025-11-25 spec treats Client ID Metadata Documents and Pre-registration as strongly recommended (SHOULD), whereas DCR is merely optional (MAY). In other words, Claude Code is requiring the one thing the spec says is optional, while ignoring the approaches the spec says clients should support. See also note below from the docs reiterating that MCP clients provide a way for end users to manually enter their OAuth client information if DCR is unavailable.
So what does Claude Code's implementation choice lead to?
Error: Incompatible auth server: does not support dynamic client registration
That's the error most Claude Code users encounter when they try to setup the GitHub MCP following the instructions on Claude Code's Connect Claude Code to tools via MCP page.
Enter mcp-remote. mcp-remote works as a proxy connecting your desired remote mcp server to your MCP client via stdio. One of its neat features is the static-oauth-client-information flag. This lets you pass in OAuth credentials for use with the remote mcp you are connecting to. I should note that mcp-remote is experimental - use at your own risk!
-
Create a GitHub OAuth App
-
Add the GitHub mcp to Claude via mcp-remote.
claude mcp add --transport stdio github -- \ npx mcp-remote https://api.github.com/mcp \ --static-oauth-client-info '{ "client_id": "your_client_id", "client_secret": "your_client_secret" }'Replace
your_client_idandyour_client_secretwith the values from your GitHub OAuth App. -
Profit
Although GitHub is our focus here, this trick will likely work for any MCP server that supports pre-registered clients, which is often the case with MCP's that don't support DCR. GitHub is also working on a stdio oauth solution. However it only works in MCP cients that support elicitation which Claude Code doesn't yet. Keep an eye on these two issues for updates.
