Support MCP protocol revision 2026-07-28 negotiation
- Dominant language
- TypeScript
- Stars
- 193k
- Forks
- 42.4k
- PR merge metrics
- PR metrics pending
Description
## Feature request
VS Code GitHub Copilot currently opens MCP connections with the initialization-based protocol. Please add dual-era client negotiation for MCP revision 2026-07-28.
## Environment
- VS Code: 1.132.0
- Commit: df53daabb18cd157bdb08c7f01c34df936cf12f4
- Transport: Streamable HTTP
- Server protocol revision: 2026-07-28
## Reproduction
Configure a modern-only HTTP server at a local Streamable HTTP endpoint and start it from MCP: List Servers.
## Actual behavior
The server returns HTTP 400 with JSON-RPC -32602 Missing required _meta because VS Code sends an initialization-era request. VS Code then falls back to legacy GET-based SSE, and the modern server correctly returns 405 because that transport was removed.
Log:
```text
400 status sending message to http://127.0.0.1:3000/mcp, will attempt to fall back to legacy SSE
Connection state: Error 405 status connecting to http://127.0.0.1:3000/mcp as SSE
```
## Expected behavior
Probe new connections with `server/discover` and the required per-request `_meta` and Streamable HTTP metadata headers. A modern response or recognized modern error should select modern mode; other failures may fall back to legacy `initialize`. Modern mode should use POST response streams and not GET SSE.
Specification: https://modelcontextprotocol.io/specification/2026-07-28/
Related: #308766 confirms VS Code currently implements 2025-11-25.
Contributor guide
Assessment
This issue has not been assessed yet.