Enhance MCP Integration in Cursor: Dynamic Tool Updates, Roots Support, progress tokens & Streamable HTTP

Hi Cursor team!
I’m writing an MCP server that I’d love to use inside Cursor, but I’ve hit four blocking gaps (plus a nice-to-have). All of these are already in the MCP spec and/or working in other IDE clients:

1. Listen for notifications/tools/list_changed and re-fetch tools

Other MCP clients watch for notifications/tools/list_changed and respond with a fresh tools/list request, letting servers add or update tools at runtime. Cursor currently ignores the notification, leaving the tool list stale.

Request: on receiving notifications/tools/list_changed, call tools/list so servers can keep Cursor in sync.

2. Make the advertised roots capability usable

Cursor’s handshake advertises roots in ClientCapabilities, but calling roots/list raises “method not found”.

Request: implement roots/list. Ideally each root item would include:

  • gitRemote – the repository URL (if any)
  • path – absolute path to the workspace root

This lets servers tailor tools to the project.

3. Support progressToken for long-running tool calls

The spec defines a progressToken field so a server can stream progress notifications during lengthy operations. Cursor doesn’t forward the token, so long running tool calls currently just time out.

4. Support the new Streamable HTTP transport

Spec 2025-03-26 replaces the old two-endpoint HTTP + SSE transport with Streamable HTTP. This single-endpoint model is now the canonical remote transport and is becoming the default in SDKs and hosting guides.

Cursor still hard-codes the deprecated sse scheme, so servers that only expose the new endpoint cannot connect.

Request: please add Streamable HTTP (and fall back to SSE for older servers).

5. (Nice-to-have) OAuth Support for remote servers

It would be great if Cursor itself handled the OAuth dance (consent screen → authorization-code exchange → token refresh) and then passed the resulting access token to the MCP server when opening the Streamable HTTP connection. The main logic for that is part of the MCP SDK and just needs integration.

2 Likes

Hey, thanks for the great feedback here!

I’ve passed this all to the right people internally, but we have just added OAuth Support in our latest release, v1.0, which you can learn more about here:

Thank you very much for forwarding it!
I still had an older version of cursor running. The 1.0 version looks a lot more promising. Oauth flow seems to be working and streamable http transport works as well which is amazing.
Nevertheless points 1-3 are not working. Especially the missing roots support currently breaks MCP servers that dont hardcode an exception for cursor and want to support roots.