[BUG]

Resolved 💬 2 comments Opened Jun 3, 2026 by mmurph23 Closed Jun 9, 2026

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?

This is essentially a duplicate of https://github.com/anthropics/claude-code/issues/53253, I am having the exact same issue.

That issue, and other similar issues dealing with the exact same inability to authenticate with the Slack MCP from Claude Code, have all been closed as duplicates or not planned -- I have yet to find a Issue that was opened for this exact same case that has not been closed as either a duplicate or not planned. Please do not close without an actual root cause analysis and real human review.

The Slack MCP server plugin (plugin:productivity:slack) fails to authenticate. The /mcp dialog shows the server as "needs authentication" but displays the error immediately with no interactive auth options — the Authenticate/Disable choices are rendered but not selectable.

The MCP SDK's OAuth discovery checks for RFC 7591 dynamic client registration support first, and fails when Slack's auth server responds that it doesn't support it. The SDK should detect that a clientId is already provided in the plugin config (.mcp.json) and skip dynamic registration, proceeding with the pre-registered client flow instead.

The mcp__plugin_productivity_slack__authenticate tool call also fails with the same error.

The plugin .mcp.json already provides the pre-registered client:

{
  "mcpServers": {
    "slack": {
      "type": "http",
      "url": "https://mcp.slack.com/mcp",
      "oauth": {
        "clientId": "1601185624273.8899143856786",
        "callbackPort": 3118
      }
    }
  }
}

What Should Happen?

Since the plugin config already includes a clientId, the SDK should:

Skip dynamic client registration
Use the pre-registered clientId directly
Present the interactive auth menu so the user can complete the OAuth flow in their browser
Successfully authenticate with the Slack workspace

Error Messages/Logs

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

Steps to Reproduce

Enable the Slack plugin (slack@claude-plugins-official) in Claude Code settings
Start a new Claude Code session
Run /mcp and select the Slack server
Observe: error text "SDK auth failed: Incompatible auth server: does not support dynamic client registration" is displayed with no interactive auth options
Alternatively, invoke the mcp__plugin_productivity_slack__authenticate tool — it returns the same error

Claude Model

Not sure / Multiple models

Is this a regression?

Yes, this worked in a previous version

Last Working Version

N/A - bug is in MCP SDK OAuth, not model-related

Claude Code Version

2.1.161

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

OS: macOS Sequioa 15.0.1 (Build 24A348), Apple Silicon
Plugin source: claude-plugins-official/slack v1.0.0 (also tested with slackapi/slack-mcp-plugin from GitHub — identical config)
The same Slack workspace authenticates fine through Claude Desktop's built-in first-party Slack integration, confirming workspace admin approval is in place
The Slack server never appears in ~/.claude/mcp-needs-auth-cache.json, suggesting it fails at discovery before any auth state is recorded
This appears to be a regression or missing feature in the MCP SDK's OAuth flow — when a clientId is already provided in the plugin .mcp.json, dynamic client registration should be skipped entirely
Reinstalling from the source repo (git clone https://github.com/slackapi/slack-mcp-plugin.git && claude --plugin-dir ./) produces the same result since the .mcp.json is identical

View original on GitHub ↗

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