claude-code - 💡(How to fix) Fix HTTP MCP servers with OAuth fail when auth server doesn't support dynamic client registration [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#52638Fetched 2026-04-24 06:01:47
View on GitHub
Comments
1
Participants
2
Timeline
4
Reactions
0
Timeline (top)
labeled ×3commented ×1

When connecting to an HTTP MCP server that uses OAuth (e.g. the official Slack MCP server at https://mcp.slack.com/mcp), Claude Code attempts to use dynamic client registration (RFC 7591). If the OAuth server doesn't support dynamic client registration, authentication fails with:

SDK auth failed: Incompatible auth server: does not support dynamic client registration

Error Message

  1. Observe the error: Incompatible auth server: does not support dynamic client registration

Root Cause

The same Slack MCP server authenticates successfully in Cursor IDE because Cursor has a pre-registered OAuth client_id with Slack. Claude Code lacks this.

Fix Action

Fix / Workaround

Authentication fails entirely. The only workaround is to abandon the hosted HTTP MCP server and switch to the npm-based @modelcontextprotocol/server-slack package with a manually-created Slack Bot token.

Code Example

SDK auth failed: Incompatible auth server: does not support dynamic client registration

---

{
     "mcpServers": {
       "slack": {
         "type": "http",
         "url": "https://mcp.slack.com/mcp"
       }
     }
   }
RAW_BUFFERClick to expand / collapse

Description

When connecting to an HTTP MCP server that uses OAuth (e.g. the official Slack MCP server at https://mcp.slack.com/mcp), Claude Code attempts to use dynamic client registration (RFC 7591). If the OAuth server doesn't support dynamic client registration, authentication fails with:

SDK auth failed: Incompatible auth server: does not support dynamic client registration

Expected Behavior

Claude Code should support a fallback OAuth flow using a pre-registered client_id (similar to how Cursor handles the same Slack MCP server). Alternatively, Anthropic could pre-register a Claude Code OAuth application with popular MCP providers (e.g. Slack) so users get a seamless one-click auth experience — no manual app creation required.

Actual Behavior

Authentication fails entirely. The only workaround is to abandon the hosted HTTP MCP server and switch to the npm-based @modelcontextprotocol/server-slack package with a manually-created Slack Bot token.

Steps to Reproduce

  1. Add the Slack MCP server to Claude Code:
    {
      "mcpServers": {
        "slack": {
          "type": "http",
          "url": "https://mcp.slack.com/mcp"
        }
      }
    }
  2. Run /mcp and attempt to authenticate.
  3. Observe the error: Incompatible auth server: does not support dynamic client registration

Environment

  • Claude Code CLI
  • Slack MCP server: https://mcp.slack.com/mcp

Comparison

The same Slack MCP server authenticates successfully in Cursor IDE because Cursor has a pre-registered OAuth client_id with Slack. Claude Code lacks this.

Suggested Fix

  1. Allow users to configure a static client_id / client_secret in the MCP server config for HTTP servers that don't support dynamic registration, or
  2. Pre-register Claude Code as an OAuth client with Slack (and other popular MCP providers) so users get a seamless auth experience.

extent analysis

TL;DR

To fix the authentication issue with the Slack MCP server, Claude Code needs to support a fallback OAuth flow using a pre-registered client_id or pre-register as an OAuth client with popular MCP providers.

Guidance

  • Investigate adding a configuration option for a static client_id and client_secret in the MCP server config to support HTTP servers without dynamic registration.
  • Consider pre-registering Claude Code as an OAuth client with Slack and other popular MCP providers to enable seamless authentication.
  • Review the OAuth flow in Cursor IDE to understand how it handles pre-registered client_id and apply similar logic to Claude Code.
  • Test the fallback OAuth flow with the Slack MCP server to ensure compatibility and successful authentication.

Example

No code snippet is provided as the issue lacks specific implementation details, but an example configuration might look like:

{
  "mcpServers": {
    "slack": {
      "type": "http",
      "url": "https://mcp.slack.com/mcp",
      "clientId": "pre-registered-client-id",
      "clientSecret": "pre-registered-client-secret"
    }
  }
}

Notes

The solution requires changes to Claude Code's configuration or pre-registration with MCP providers, and may involve updates to the OAuth flow logic.

Recommendation

Apply workaround by adding a configuration option for a static client_id and client_secret to support HTTP servers without dynamic registration, as this allows for a more flexible and user-configurable solution.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING