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.