Linear MCP auth fails with “Invalid redirect URI” (cursor://anysphere.cursor-mcp/oauth/callback)

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Linear MCP auth fails with Invalid redirect URI

I’m unable to connect the Linear MCP plugin because OAuth fails with a redirect URI mismatch.

What I’m seeing

  • Error: Invalid redirect URI. The redirect URI provided does not match any registered URI for this client.
  • Failing authorize URL includes:
    • redirect_uri=cursor%3A%2F%2Fanysphere.cursor-mcp%2Foauth%2Fcallback
    • client_id=ANvXXXXXX (redacted)
  • Consent screen app is Cursor (expected app)

Environment

  • Cursor on macOS (darwin 25.3.0)
  • Linear workspace: lucyworks
  • Linear plugin/MCP server: plugin-linear-linear

What I already tried

  • Re-approved Cursor app in Linear third-party app approvals
  • Restarted Cursor
  • Removed/re-added the Linear plugin
  • Re-ran auth multiple times

Observed result

  • MCP server status remains “needs authentication”
  • Auth flow repeatedly fails on redirect URI mismatch

Request

Could you verify the Linear OAuth client config for client_id=ANv... includes:

cursor://anysphere.cursor-mcp/oauth/callback

This looks like a provider-side OAuth client redirect registration mismatch rather than a workspace approval issue.

I can share the full authorize URL/logs privately if needed.

Steps to Reproduce

Steps to reproduce

  1. Open Cursor on macOS.
  2. Install/enable the Linear plugin (MCP server: plugin-linear-linear).
  3. Start auth (connect Linear) from Cursor.
  4. Browser opens Linear OAuth consent page for Cursor app.
  5. Click Authorize.
  6. OAuth fails with:
    Invalid redirect URI. The redirect URI provided does not match any registered URI for this client.
  7. The authorize URL includes:
    redirect_uri=cursor%3A%2F%2Fanysphere.cursor-mcp%2Foauth%2Fcallback
    and client_id=ANvXXXXXX (redacted).
  8. Return to Cursor: plugin remains unauthenticated / “needs authentication”.

Expected Behavior

Linear auth completes and plugin becomes authenticated.

Operating System

MacOS

Version Information

Version: 3.1.17
VSCode Version: 1.105.1
Commit: fce1e9ab7844f9ea35793da01e634aa7e50bce90
Date: 2026-04-19T19:33:58.189Z
Layout: glass
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0

Does this stop you from using Cursor

No - Cursor works, but with this issue

Hey, thanks for the detailed report with the authorize URL and the steps. It really helps.

This looks like a provider-side OAuth config issue. Cursor is correctly generating cursor://anysphere.cursor-mcp/oauth/callback and sending it in the authorize request, but Linear is rejecting it as not registered for the pre-configured OAuth client ANv.... The usual steps like re-approving the app won’t fix this. The URI needs to be registered on Linear’s side for our OAuth app. We recently fixed the same kind of issue for Slack MCP when cursor-nightly:// wasn’t registered with the provider.

I’ve reported this to our Extensibility team so they can double-check the Linear OAuth client config for Cursor. I can’t share an ETA yet. I’ll post an update in this thread as soon as I have one.

If you can share the full authorize URL and the full client_id privately, let me know. I’ll DM you, it’ll help us verify this faster on Linear’s side.

You’re welcome, I’ve had cursor generate it so you see you also helped :slight_smile:

I should be able to share the full url privately, yes.

1 Like

fwiw, I am also getting some really weird redirects when trying to Auth for Linear MCP. I can log into Linear fine with the redirect but then nothing happens. It also is making multiple windows in both Safari and Firefox on MacOS when trying to auth