Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
Remote MCP servers that require MCP protocol revision 2026-07-28 only (stateless Streamable HTTP, no legacy initialize handshake, no SSE) fail to connect.
Cursor’s MCP client still performs the 2025-era handshake (initialize / typically 2025-11-25) and either omits MCP-Protocol-Version or sends a legacy body that modern servers reject.
This is a general client-era gap, not a single-server misconfiguration. Example endpoint that cut over on 2026-09-21: https://asdlc.io/mcp (modern-only; verified with @modelcontextprotocol/[email protected] pinned to 2026-07-28).
Steps to Reproduce
- Add a remote HTTP MCP server that only accepts MCP 2026-07-28 (no legacy initialize), e.g. in ~/.cursor/mcp.json:
{
“mcpServers”: {
“asdlc”: {
“type”: “http”,
“url”: “https://asdlc.io/mcp”
}
}
}
- Restart / reload MCP.
- Open Output → MCP and observe the connection logs.
Expected Behavior
Cursor’s MCP HTTP client should negotiate the modern era (2026-07-28): send MCP-Protocol-Version, use server/discover / per-request _meta (no initialize), and successfully list/call tools against modern-only Streamable HTTP servers. Prefer also documenting which protocol revisions the client supports.
Actual:
- Streamable HTTP POST fails with JSON-RPC -32020: MCP-Protocol-Version is required; supported: 2026-07-28
- Client falls back to SSE → 405 (server is POST-only / no SSE)
- Connection ends conn=failed; tools never appear
Operating System
Linux
Version Information
Version: 3.21.16
Commit: 8ae78e8eee1e63479c7e0504b664bc0a80c68000
OS: Linux x64 (Fedora)
For AI issues: which model did you use?
N/A — not a model/AI-quality issue; this is the MCP client transport/protocol negotiation layer.
For AI issues: add Request ID with privacy disabled
N/A
Additional Information
Independent curl confirms the same rejection for legacy initialize, and that a modern header + legacy initialize body is rejected as header/body mismatch. Servers correctly implementing 2026-07-28 cannot downgrade.
References:
- Spec: Specification - Model Context Protocol
- Changelog (stateless / no initialize): Key Changes - Model Context Protocol
- TS SDK modern pin: Supporting protocol revision 2026-07-28 | MCP TypeScript SDK
- Example modern-only server cutover: Modernize MCP transport and verify client interoperability by villetakanen · Pull Request #82 · villetakanen/asdlc-io · GitHub
Does this stop you from using Cursor
No - Cursor works, but with this issue