I am trying to connect Cursor Desktop to an MCP (Model Context Protocol) server using the SSE transport, and I have tested two scenarios:
-
Localhost: Running the MCP server on my local Windows machine.
-
Azure Web App with Docker: Deploying the same MCP server as a Docker container on Azure App Service.
In both cases, the /sse endpoint responds correctly with the expected headers and SSE data (verified with Postman and curl), but Cursor Desktop always shows the error:
Streamable HTTP error: Unexpected content type: null
Error: Not connected
Steps to Reproduce
Scenario 1: Localhost
-
Run the MCP server locally on Windows (Kestrel, .NET 8, port 5088).
-
Confirm with curl.exe -i http://localhost:5088/sse:
HTTP/1.1 200 OK
Content-Type: text/event-stream
Connection: keep-alive
Cache-Control: no-cache
Transfer-Encoding: chunkeddata: {…handshake…}
event: clientId
data: … -
Confirm with Postman (GET to http://localhost:5088/sse):
-
Status: 200 OK
-
Headers: Content-Type: text/event-stream, etc.
-
Body: handshake and clientId as SSE events.
-
Configure Cursor Desktop MCP settings:
{
“mcpServers”: {
“Test-MCP”: {
“type”: “sse”,
“url”: “http://localhost:5088/sse”
}
}
} -
Restart Cursor Desktop and try to connect.
-
Observe the error in MCP Logs:
Streamable HTTP error: Unexpected content type: null
Error: Not connected
Scenario 2: Azure Web App with Docker (The same..):
Streamable HTTP error: Unexpected content type: null
Error: Not connected
What I Expected
- Cursor Desktop should recognize the SSE stream and list the available tools, just as Postman and curl do in both environments.
What Actually Happens
- Cursor Desktop fails to connect, reporting “Unexpected content type: null”, even though the endpoint is correct and works with other clients.
Additional Information
-
Tested with:
-
Cursor Desktop (latest version as of today)
-
Windows 10/11
-
.NET 8 backend (Kestrel)
-
Azure App Service (Docker)
-
Endpoint tested with curl and Postman:
-
Both show correct headers and SSE data.
-
No firewall or network issues.
-
Changing ports, using 127.0.0.1, and restarting both Cursor and the backend does not solve the issue.
-
The problem is identical in both local and Azure deployments.
Please let me know if you need any logs, code samples, or further details to help debug this issue. Thank you!