HTTP MCP servers with OAuth fail when auth server doesn't support dynamic client registration

Resolved 💬 3 comments Opened Apr 24, 2026 by alecimorelli Closed Apr 27, 2026

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:

``json
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp"
}
}
}
``

  1. Run /mcp and attempt to authenticate.
  2. 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.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗