Title: Slack MCP auth fails — “Must use PKCE to redirect to a non-web URI”
Steps to Reproduce
Open Cursor agent chat
Trigger Slack MCP authentication via mcp_auth on the plugin-slack-slack server
Slack OAuth page opens in browser
Expected: OAuth flow completes and Slack grants access to Cursor
Actual: Two sequential failures:
OAuth page shows “Please select at least one feature or permission scope to install your app” — the authorization request contains no scopes
On proceeding anyway by clicking cancel, Slack returns: Must use PKCE to redirect to a non-web URI
Root cause: The OAuth request to Slack is missing two required parameters for non-web (deep-link) redirect URIs:
scope — no permission scopes are being requested
code_challenge + code_challenge_method=S256 — PKCE is required by Slack when the redirect target is a non-web URI (e.g. cursor://)
I can reproduce this message as well. However, it appears the authentication callback actually made it to Cursor anyway. If I press Cancel, I see the same message you described.
Could you check whether the Slack authorization ultimately works to authenticate the MCP server? If so, I suspect this issue is on Slack’s side rather than ours.
Interesting development. I checked with others in my company and some cant get the slack to work, they have the same problem I do, one person was able to get it to work so it seems like a slack permission config or something.
I’m running into the exact same issue on my side (and several others in my company are as well).
I followed the steps you shared, but unfortunately it didn’t resolve the problem.
Do you have any other suggestions or things we could try?
Thanks!
We have flagged an issue with the MCP server to Slack. It may or may not be the same issue reported here.
We shipped a lot of updates to MCP authentication in 3.3, and if you’re still facing issues, it would be great if you could update to the newest release, and report what version of Cursor you’re using!
We’re actively investigating Slack MCP OAuth issues with Slack’s team directly. The “no scopes” error you’re seeing is a known problem on our radar. We shipped several MCP auth improvements in 3.3, but this particular flow still needs work.
To help us narrow things down, could you grab the MCP output logs? Go to View > Output, then select MCP Logs (or MCP: slack) from the dropdown, and share what you see when the auth attempt fails.
Thanks for sharing those logs. They confirm that Cursor is generating the PKCE parameters correctly on its side (“Saving PKCE code verifier” appears before the redirect). The rejection is happening on Slack’s authorization server after the browser opens.
This aligns with what we’re seeing internally. Our team is actively working with Slack to resolve the handshake issue. No action needed on your end for now. We’ll update this thread once we have a fix.