The current tool call flow in MCP is strictly request-response. A client sends tools/call and waits for a full response. For long-running tools this means the client sees nothing until the tool completes completely. This is inconsistent with how MCP already handles prompt/message streaming via SSE. Tools should have a similar streaming capability. A practical approach: add a notifications/tool/progress message that servers can emit during tool execution. Include a progress percentage and optional intermediate result chunks. The final tools/call response is still the authoritative result. This would let clients show progress for slow tools, stream search results as they arrive, and enable progressive rendering. The change is fully backward compatible.
The current tool call flow in MCP is strictly request-response. A client sends tools/call and waits for a full response. For long-running tools this means the client sees nothing until the tool completes completely. This is inconsistent with how MCP already handles prompt/message streaming via SSE. Tools should have a similar streaming capability. A practical approach: add a notifications/tool/progress message that servers can emit during tool execution. Include a progress percentage and optional intermediate result chunks. The final tools/call response is still the authoritative result. This would let clients show progress for slow tools, stream search results as they arrive, and enable progressive rendering. The change is fully backward compatible.