When trying to connect to a remote MCP server with OAuth (in my case Figma MCP) on Linux via AppImage, the cursor:// protocol handler doesn’t correctly authorize the OAuth flow.
It seems cursor is either not following DCR procedure properly or there is something else wrong. Cursor MCP is fundamentally broken. Multiple problems:
Redirect after authentication opens a new cursor agent window - doesn’t get registered.
npx mcp-remote based servers: get client not found error.
Goose desktop client doesn’t have these issues with the same configuration. It is fundamentally something that is going wrong with oauth authentication flow in cursor. It is not working correctly. Only thing that works right now is running local server and authenticating through mcp-remote with it.
Steps to Reproduce
Try connecting to any mcp server without mcp remote. With mcp remote sometimes it does sometimes it doesn’t. Try for example atlassian mcp.
Expected Behavior
Authentication flow should terminate with cursor having the token. It doesn’t.
Operating System
Linux
Current Cursor Version (Menu → About Cursor → Copy)
2025-09-21 14:46:52.315 [info] Received OAuth callback with code
2025-09-21 14:46:54.309 [info] Using redirect URL {"url":"cursor://anysphere.cursor-retrieval/oauth/user-***-mcp/callback"}
2025-09-21 14:46:56.987 [info] Using redirect URL {"url":"cursor://anysphere.cursor-retrieval/oauth/user-***-mcp/callback"}
2025-09-21 14:46:57.633 [error] Failed to complete OAuth exchange authorization code does not exist
Backend logs -
"POST /token HTTP/1.1" 400 Bad Request
We’ve confirmed the auth flow works well in prev’s Cursor versions.
Steps to Reproduce
Try to authenticate via OAuth to a working mcp-server
Expected Behavior
OAuth exchange should work properly and mcp-server should load its tools and resources
Operating System
MacOS
Current Cursor Version (Menu → About Cursor → Copy)
Hi, posting here to give you know I have the same bug on my Linux (exactly the same cursor behaviour). It’s common issue now, not specific to one user.
I have issues adding figma mcp server to my cursor. when i add the mcp, it requires authentication. it successfuly authenticates in browser, but it cannot open the callback link in cursor. nothing happened after authentication. I searched the net it was tod to add a desktop file with this content:
[Desktop Entry]
Name=Cursor URL Handler
Exec=/opt/cursor/Cursor-1.7.33-x86_64.AppImage – %u
Type=Application
Terminal=false
MimeType=x-scheme-handler/cursor;
now it opens a new file with the link in title instead.
Hey, try updating your Cursor first. From the way it looks, you aren’t on the latest version.
Then try adding Figma mcp again and connecting. You can quickly add it through the directory: MCP Directory | Cursor Docs
If it still happens, please check the Output tab in the same place as your Cursor terminal, and on the right select MCP: Figma to display any logs. Check the Output again to see whether there are any errors.
Still doesn’t work, I check every update. Seems like xdg-open is not working properly with AppImage Cursor. ,Add to Cursor” button also doesn’t work on the site you’ve linked MCP Directory | Cursor Docs clicking it just opens a new tab in Cursor as a file and nothing else happens, exactly the same as using xdg-open with the figma mcp auth. Btw I really don’t know if it’s important but I’m using Ubuntu with Wayland what is not specified below:
I can also confirm it is not working for App image. Is there a work around? This problem has been around forever. The Open in Cursor buttons on the Agent dashboard do not work….
The problem is with the AppImage, the now offer (but didn’t communicate well on it), .deb images. The OAuth flow of the MCPs are working for me now after installing it.
I tried the AppImage and .rpm and they both fail on Fedora/KDE. @Eugen can you perhaps share your Exec= line from Cursor’s .desktop ?
If I use the default Exec=/usr/share/cursor/cursor %F , an empty window opens when returning from the browser
If I change that to Exec=/usr/share/cursor/cursor %U a new tab opens for new file e.g. ~/cursor:/anysphere.cursor-mcp/oauth/user-.../callback?code=...
EDIT:
Ok, I believe I figured it out. If I run xdg-open 'cursor://anysphere.cursor-mcp/oauth/...’ it uses cursor-url-handler.desktop which correctly handles the callback. The .desktop file uses Exec=/usr/share/cursor/cursor --open-url %U
For AppImage users, it should be possible creating such cursor-url-handler.desktop file and registering the scheme with xdg-mime default cursor-url-handler.desktop 'x-scheme-handler/cursor'
So, it looks like in my case the browser (Edge ) doesn’t execute xdg-open in the same way.