Description
Description
After upgrading to v0.87.0, the GitHub MCP server (https://api.githubcopilot.com/mcp/) reports an error during
initialization. Tool listing succeeds, but a subsequent subscriptions/listen request is rejected because it does not
include the Mcp-Protocol-Version header that the server requires.
Error
connection closed: calling "tools/list": client is closing: sending "subscriptions/listen": Mcp-Protocol-Version header
is required for requests carrying "io.modelcontextprotocol/protocolVersion": Bad Request
Configuration
{
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer $GITHUB_TOKEN"
}
}
}
Root Cause
After capability negotiation completes and tools/list succeeds, Crush sends a subscriptions/listen request that
includes the io.modelcontextprotocol/protocolVersion field in the request body but does not include the corresponding
Mcp-Protocol-Version HTTP header. GitHub's MCP endpoint enforces that any request carrying the protocol version field
must also include the header, and returns 400 Bad Request when it is missing.
The connection teardown caused by this error cascades back through tools/list , which is why the error message appears
to originate from tools/list even though that call had already succeeded.
Expected Behavior
Crush should include the Mcp-Protocol-Version header on all HTTP requests sent after protocol version negotiation is
complete, including subscriptions/listen and any other post-initialization requests.
Environment
• Crush version: v0.87.0
• MCP server: GitHub Copilot ( https://api.githubcopilot.com/mcp/ )
• OS: Linux
Additional Context
• There is a related spec-level discussion about protocol version header semantics: https://github.
com/modelcontextprotocol/modelcontextprotocol/issues/854
• The MCP 2025-06-18 spec states that if a server does not receive the header it should assume a fallback version, but
GitHub's implementation requires it unconditionally when the protocol version field is present in the request body.
• Despite the error status, MCP tools from GitHub may still be partially functional in some sessions since tools are
listed before the failure occurs.
Version
0.87.0
Environment
No response
Description
Description
After upgrading to v0.87.0, the GitHub MCP server (
https://api.githubcopilot.com/mcp/) reports an error duringinitialization. Tool listing succeeds, but a subsequent
subscriptions/listenrequest is rejected because it does notinclude the
Mcp-Protocol-Versionheader that the server requires.Error
connection closed: calling "tools/list": client is closing: sending "subscriptions/listen": Mcp-Protocol-Version header
is required for requests carrying "io.modelcontextprotocol/protocolVersion": Bad Request
Configuration
{ "github": { "type": "http", "url": "https://api.githubcopilot.com/mcp/", "headers": { "Authorization": "Bearer $GITHUB_TOKEN" } } }Root Cause
After capability negotiation completes and tools/list succeeds, Crush sends a subscriptions/listen request that
includes the io.modelcontextprotocol/protocolVersion field in the request body but does not include the corresponding
Mcp-Protocol-Version HTTP header. GitHub's MCP endpoint enforces that any request carrying the protocol version field
must also include the header, and returns 400 Bad Request when it is missing.
The connection teardown caused by this error cascades back through tools/list , which is why the error message appears
to originate from tools/list even though that call had already succeeded.
Expected Behavior
Crush should include the Mcp-Protocol-Version header on all HTTP requests sent after protocol version negotiation is
complete, including subscriptions/listen and any other post-initialization requests.
Environment
• Crush version: v0.87.0
• MCP server: GitHub Copilot ( https://api.githubcopilot.com/mcp/ )
• OS: Linux
Additional Context
• There is a related spec-level discussion about protocol version header semantics: https://github.
com/modelcontextprotocol/modelcontextprotocol/issues/854
• The MCP 2025-06-18 spec states that if a server does not receive the header it should assume a fallback version, but
GitHub's implementation requires it unconditionally when the protocol version field is present in the request body.
• Despite the error status, MCP tools from GitHub may still be partially functional in some sessions since tools are
listed before the failure occurs.
Version
0.87.0
Environment
No response