Remote MCP Server with SSE stopped working after latest upgrade

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

After updating to the latest Cursor I now get the below error when trying to connect to a remote MPC Server


2025-11-05 11:29:21.514 [error] Client error for command Streamable HTTP error: Failed to open SSE stream: Not Found

The MCP Server worked before the upgrade, and works in other IDEs..

Steps to Reproduce

add the following MCP Server to your mcp.json:

"testkube": {
  "url": "https://api.testkube.io/organizations/tkcorg_539cb664a4446f37/environments/tkcenv_a7a9f692d2248d3e/mcp",
  "transport": {
    "type": "sse"
  },
  "headers": {
    "Authorization": "Bearer tkcapi_eb48ab38e7377f81e989c3571d2632"
  }
},

and try to enable the MCP Server (the token is for testing only - it gives read-only access and will expire soon)

Expected Behavior

the MCP Server is expected to show up green - but it fails to initialize

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.0.60 (Universal)
VSCode Version: 1.99.3
Commit: c6d93c13f57509f77eb65783b28e75a857b74c00
Date: 2025-11-05T00:50:54.645Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Darwin arm64 25.0.0

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey thanks for the report. I noticed your MCP config includes a transport section, but for URL‑based remote servers MCP doesn’t require an explicit transport - Cursor should auto‑detect it.

Could you try this simplified config?

{
    "mcpServers": {
        "testkube": {
            "url": "https://api.testkube.io/organizations/tkcorg_539cb664a4446f37/environments/tkcenv_a7a9f692d2248d3e/mcp",
            "headers": {
                "Authorization": "Bearer tkcapi_eb48ab38e7377f81e989c3571d2632"
            }
        }
    }
}

If that doesn’t help, please share:

  • MCP logs: View → Output → select “MCP
  • Any errors in Developer Tools (Help → Toggle Developer Tools)

This will help determine whether it’s a config issue or a regression in 2.0.60’s SSE handling.

Hi deanrie - thanks for the quick reply!

Removing the transport section didn’t help unfortunately - same error. In the MCP Logs I only see the following when trying to enable the MCP Server:

2025-11-05 16:40:04.012 [info] listOfferings: Found 20 tools

which is correct - it has 20 tools.

The entire MCP log for the server itself starts out promising - but fails in the end as reported in the issue:

No errors in the devtools console unfortunately..

hope this helps..

/Ole

Thanks for the info. The logs confirm that Cursor is incorrectly detecting your SSE server as the “streamableHttp” transport in version 2.0.60.

This is a clear regression in the transport auto‑detection logic.

Could you try the HTTP/2 workaround while we investigate? Go to Settings > Network and enable “Disable HTTP/2”.

Thanks - unfortunately I get the same error for both HTTP 1.1 and HTTP 1.0 :folded_hands:

/Ole

hmm im not able to reproduce this. I get this other error, but it looks like thats on the server side. Any other details i need to do to reproduce?

Hi @msfeldstein - you’re right, the error you’re getting is internal to Testkube and the MCP Server itself seems to be “working” as expected :roll_eyes:

Are you on the exact same Cursor version as the one I reported in the issue?

/Ole

This is happening to me too. using a custom server. Just the Quickstart section on the GitHub - modelcontextprotocol/typescript-sdk: The official TypeScript SDK for Model Context Protocol servers and clients

```
import { McpServer, ResourceTemplate } from ‘@modelcontextprotocol/sdk/server/mcp.js’;
import { StreamableHTTPServerTransport } from ‘@modelcontextprotocol/sdk/server/streamableHttp.js’;
import express from ‘express’;
import { z } from ‘zod’;

// Create an MCP server
const server = new McpServer({
name: ‘demo-server’,
version: ‘1.0.0’
});

// Add an addition tool
server.registerTool(
‘add’,
{
title: ‘Addition Tool’,
description: ‘Add two numbers’,
inputSchema: { a: z.number(), b: z.number() },
outputSchema: { result: z.number() }
},
async ({ a, b }) => {
const output = { result: a + b };
return {
content: [{ type: ‘text’, text: JSON.stringify(output) }],
structuredContent: output
};
}
);

// Add a dynamic greeting resource
server.registerResource(
‘greeting’,
new ResourceTemplate(‘greeting://{name}’, { list: undefined }),
{
title: ‘Greeting Resource’, // Display name for UI
description: ‘Dynamic greeting generator’
},
async (uri, { name }) => ({
contents: [
{
uri: uri.href,
text: `Hello, ${name}!`
}
]
})
);

// Set up Express and HTTP transport
const app = express();
app.use(express.json());

app.post(‘/mcp’, async (req, res) => {
// Create a new transport for each request to prevent request ID collisions
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: undefined,
enableJsonResponse: true
});

res.on('close', () => {
    transport.close();
});

await server.connect(transport);
await transport.handleRequest(req, res, req.body);

});

const port = parseInt(process.env.PORT || ‘3000’);
app.listen(port, () => {
console.log(`Demo MCP Server running on http://localhost:${port}/mcp`);
}).on(‘error’, error => {
console.error(‘Server error:’, error);
process.exit(1);
});
```

Hello everyone. I’m having the same issue described and for me a workaround was change the HTTP Compatibility Mode to ‘HTTP/1.0’, but you need to restart Cursor for this word (change the config, restart and then try again the connection with the MCP).

Update: with the latest version of Cursor the MCP Server starts fine when I start Cursor - but if I restart the MCP Server it fails as before.. (so I basically have to restart Cursor every time I need to restart the MCP Server :sweat_smile:)