feat: add partial results as part of progress notifications#669
feat: add partial results as part of progress notifications#669cyccolin wants to merge 2 commits intomodelcontextprotocol:mainfrom
Conversation
| params: RequestParams | None = None | ||
|
|
||
| class PartialResult(BaseModel): | ||
| chunk: dict[str, Any] |
There was a problem hiding this comment.
disregard below -- these points need to go on the spec PR. i will add them there.
question:
- there is nothing technically wrong with modeling this as a
dict[str, Any], but this is not howCallToolResultmodels its content. Just curious if there is a specific reason not to keep same structure asCallToolResult? Intuitively i would expect them to be very similar. - Also a nitpick on naming but should we call this chunk? why not "content" or something (similar to
CallToolResult)
| name: str, | ||
| arguments: dict[str, Any] | None = None, | ||
| read_timeout_seconds: timedelta | None = None, | ||
| **meta |
There was a problem hiding this comment.
Can we model this as an argument with Meta type rather than treating it as **kwargs? If the idea is not to put all extra keyword arguments, that don't match other call_tool arguments, in meta then we should use an argument with type Meta instead.
| notifications. The receiver is not obligated to provide these notifications. | ||
| """ | ||
|
|
||
| partialResults: bool | None = None |
There was a problem hiding this comment.
Might be a comment for the spec PR.
Nit: I wonder if streamPartialResults or notifyPartialResults would be more apt than adding a boolean value under partialResults?
|
Thank you for contributing to MCP Python SDK. Closing this PR for now as the spec changes haven't been approved yet and there were changes in progress notification in SDK to include message. Please re-open when the spec is approved or move to draft. |
This PR implements the specifications defined in modelcontextprotocol/modelcontextprotocol#383, introducing partial result streaming capabilities within progress notifications from Server to Client.
Motivation and Context
This enhancement addresses two key improvements to the protocol:
Changes
call_toolapi to enable feature access from specHow Has This Been Tested?
Breaking Changes
No breaking changes as the new attributes and parameters are all optional.
Types of changes
Checklist
Additional context