feature: Async support without using Resource - #650
Conversation
|
What is the reasoning behind |
|
Having been the original author of #617 I think I've come to the conclusion that with a little creative use of a zero progress notification and some juggling of logic on the client side the existing protocol is able to support much of this use case already. See modelcontextprotocol/python-sdk#1209 for an example of how this can be implemented in the python client. Caveat to the above is I'm not sure I'm a big fan of the zero progress notification (even though it does minimise protocol changes) as it feels a bit to implicit and would need good documentation for all client and servers so they know how to implement this behaviour properly. A more robust solution might be to create a specific protocol notification as an acknowledgement that a call tool has been received which then gives the client an sse event id to resume later. That could be then handled within the sdks rather than relying on clients and tool builders to implement long running tool calls in a specific way. |
|
Tasks is a very similar feature that supports this now. |

Added support for long-running operations by implementing a basic polling mechanism. Inspired from 617 and 549
Motivation and Context
** Client -> Server - GetToolAsyncRequest
** Server -> Client - GetToolAsyncResult(returns CallToolResult)
How Has This Been Tested?
Breaking Changes
Non breaking changes
Types of changes
Checklist
Additional context