You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
can we call tools and return steaming output? #472
As far as I know this isn't supported by the model context protocol itself. It's in the roadmap, and there's an open issue at that level (modelcontextprotocol/modelcontextprotocol#117). The best option right now for this is progress reporting, e.g.
for progress_percent in range(0, 100, 5):
await ctx.report_progress(progress=progress_percent,
total=100, message=f"Generating, {progress_percent}% done...")
Thanks for all the interest here. Streaming tool results isn't currently supported by the MCP spec - the Streamable HTTP transport's SSE response is for delivering a single JSON-RPC response plus server-initiated messages, not partial content.
What exists today for long-running scenarios:
Progress notifications (notifications/progress) - informational status updates, no partial results
Elicitation/Sampling - server can request input from client mid-tool-call via SSE
Tasks (experimental) - status polling for long-running operations, but the final result is still atomic
None of these support streaming partial tool content like LLM token streaming.
Active spec proposals:
Issue #117 - Original streaming tool results issue
PR #776 - Partial results with _meta.hasMore approach
The key blocker is that JSON-RPC doesn't natively support streaming responses, so the spec needs to define how this works first.
Closing since this requires spec changes - if you're interested in this feature, I'd encourage following or contributing to the spec discussions above.
Activity
guanyang-nb commentedon Apr 11, 2025
response
<async_generator object func at 0x107641ec0>
just return this
shihanmax commentedon Apr 11, 2025
need this feature
reqyou commentedon Jun 25, 2025
Raise this Topic.
A Tool without
StreamingResponse makes just no sense!artursanntos commentedon Jun 25, 2025
This seems like a very important feature since it's a really common use case of tools.
lloorree commentedon Aug 18, 2025
As far as I know this isn't supported by the model context protocol itself. It's in the roadmap, and there's an open issue at that level (modelcontextprotocol/modelcontextprotocol#117). The best option right now for this is progress reporting, e.g.
felixweinberger commentedon Oct 6, 2025
More details on potential API in the Python SDK #784
leohuai commentedon Dec 15, 2025
May I ask if this issue has already been resolved? Is there a planned release date? Thank you.
maxisbey commentedon Dec 15, 2025
Thanks for all the interest here. Streaming tool results isn't currently supported by the MCP spec - the Streamable HTTP transport's SSE response is for delivering a single JSON-RPC response plus server-initiated messages, not partial content.
What exists today for long-running scenarios:
notifications/progress) - informational status updates, no partial resultsNone of these support streaming partial tool content like LLM token streaming.
Active spec proposals:
_meta.hasMoreapproachThe key blocker is that JSON-RPC doesn't natively support streaming responses, so the spec needs to define how this works first.
Closing since this requires spec changes - if you're interested in this feature, I'd encourage following or contributing to the spec discussions above.
AI Disclaimer