Add close_sse_stream callback to tool context (SEP-1699 follow-up) #1668
+154
−39
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.
Summary
This PR adds a
close_sse_streamcallback to the tool context, addressing feedback from findleyr on the TypeScript SDK PR. This is a follow-up to #1654 (SEP-1699 SSE polling).The key improvements:
session_manager- the callback is injected into the contextNoneif no event store is configured (so tools don't need to check this themselves)close_sse_stream()can specify its own retry interval in millisecondsAPI Usage
FastMCP (high-level):
Lowlevel Server:
Changes
src/mcp/shared/context.py: AddedCloseSSEStreamCallbacktype andclose_sse_streamfield toRequestContextsrc/mcp/shared/message.py: Addedclose_sse_streamfield toServerMessageMetadatasrc/mcp/server/fastmcp/server.py: Addedclose_sse_streamproperty toContextclasssrc/mcp/server/streamable_http.py: Added callback factory andretry_intervalparametersrc/mcp/server/streamable_http_manager.py: Pass throughretry_intervalparametersrc/mcp/server/lowlevel/server.py: Extract callback from metadata intoRequestContextTest plan
test_reconnectiontool