Fix: Handle error responses in Streamable HTTP SSE streams #1390
+80
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While developing my Swift SDK for MCP, I encountered the following issue in the TypeScript SDK:
The
StreamableHTTPClientTransportonly checked for success responses (isJSONRPCResultResponse) when processing SSE stream messages. This caused two issues:receivedResponse, potentially triggering reconnection attemptsSolution
Handle both success and error responses when detecting stream completion and remapping IDs:
This aligns with the MCP specification which states the SSE stream should include a "JSON-RPC response" (which per JSON-RPC 2.0 spec includes both success and error responses), and matches the Python SDK implementation.
Testing
Added test case verifying that error responses in SSE streams prevent unnecessary reconnection and are properly delivered to the message handler.
Breaking Changes
Types of changes
Checklist