Slack MCP plugin fails to connect — "does not support dynamic client registration"

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

The official Slack MCP plugin (https://mcp.slack.com/mcp) fails to authenticate. Cursor’s OAuth client attempts Dynamic Client Registration (DCR), but Slack’s auth server doesn’t support DCR, causing a fatal error on both streamableHttp and SSE transports. No “Connect” button or browser OAuth prompt ever appears.

Steps to Reproduce

  1. Install the Slack MCP plugin from the Cursor marketplace
  2. Go to Settings > MCP — the slack server appears
  3. No “Connect” button is shown; connection attempts fail immediately
  4. Check MCP output logs — DCR failure on both transports

Expected Behavior

Cursor should use the pre-configured CLIENT_ID (3660753192626.8903469228982) from the plugin’s mcp.json for the OAuth authorization code flow, rather than requiring DCR. A browser window should open for Slack workspace authorization.

Operating System

MacOS

Version Information

Version: 2.5.17 (Universal)
VSCode Version: 1.105.1
Commit: 7b98dcb824ea96c9c62362a5e80dbf0d1aae4770
Date: 2026-02-17T05:58:33.110Z
Build Type: Stable
Release Track: Default
Electron: 39.3.0
Chromium: 142.0.7444.265
Node.js: 22.21.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0

Additional Information

Error from MCP logs (plugin-slack-slack)

[info] Connecting to streamableHttp server
[info] No stored tokens found
[info] No stored client information found
[info] Using redirect URL {"url":"cursor://anysphere.cursor-mcp/oauth/callback"}
[error] Client error for command Incompatible auth server: does not support dynamic client registration
[info] Client closed for command
[warning] Error connecting to streamableHttp server, falling back to SSE: Incompatible auth server: does not support dynamic client registration
[info] Connecting to SSE server
[info] No stored tokens found
[info] No stored client information found
[info] Using redirect URL {"url":"cursor://anysphere.cursor-mcp/oauth/callback"}
[error] Client error for command Incompatible auth server: does not support dynamic client registration
[error] Error connecting to SSE server after fallback: Incompatible auth server: does not support dynamic client registration
[info] Client closed for command

Analysis

Slack’s MCP server (announced Feb 17, 2026) uses a standard OAuth 2.0 authorization code flow with a static CLIENT_ID. It does not implement the RFC 7591 Dynamic Client Registration endpoint. Cursor’s MCP client appears to require DCR as a prerequisite, treating its absence as a fatal error rather than falling back to the static client credentials already provided in the plugin config.

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the detailed report and logs.

It looks like the issue is that the Marketplace plugin isn’t passing the static client credentials correctly. As a workaround, try setting up Slack MCP manually via mcp.json instead of the plugin:

{
  "mcpServers": {
    "slack": {
      "url": "https://mcp.slack.com/mcp",
      "auth": {
        "CLIENT_ID": "3660753192626.8903469228982"
      }
    }
  }
}

Before that, remove the Marketplace plugin so there aren’t any conflicts. After you add the config, Cursor should show a Connect button and open the OAuth flow in your browser.

If it still doesn’t work, let me know. That’ll help us narrow down what’s going on.

I tried it that way @deanrie but I get the following error in the browser after hitting connect

Invalid permissions requested
invalid_scope

Hey, this is a known issue. Cursor is requesting OAuth scopes that Slack doesn’t support for this client. The team is aware, but there’s no ETA for a fix yet.

Right now, there isn’t a full workaround, unfortunately. Can you share your Cursor version and the exact mcp.json config you used? That’ll help with further investigation.

Version: 2.6.19 (Universal)
VSCode Version: 1.105.1
Commit: 224838f96445be37e3db643a163a817c15b36060
Date: 2026-03-12T04:07:27.435Z
Build Type: Stable
Release Track: Default
Electron: 39.4.0
Chromium: 142.0.7444.265
Node.js: 22.22.0
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0

After updating to the latest cursor version it is working now