Problem
muster cannot relay per-request progress from downstream tools:
- The internal
MCPClient interface is CallTool(ctx, name, args) (internal/aggregator/types.go:38) — there is no way to thread a progressToken / request _meta to the downstream server.
notifications/progress from downstream servers is not bridged back to the calling client session.
Long-running downstream tools (cluster provisioning, large queries) give zero feedback through muster; clients see nothing until the final result or a timeout.
Scope
This is a structural change, intentionally split from the serialization fixes:
- Extend the
MCPClient interface (or add a variant) to accept request _meta, and forward the caller's progressToken on call_tool invocations.
- Bridge
notifications/progress from the downstream connection to the calling session, translating the token.
- Decide behavior for pooled/session connections where one downstream client serves multiple aggregator sessions.
Related but explicitly out of scope: sampling and elicitation passthrough (downstream server-initiated requests). That is a separate design discussion about whether muster should proxy interactive capabilities at all.
Problem
muster cannot relay per-request progress from downstream tools:
MCPClientinterface isCallTool(ctx, name, args)(internal/aggregator/types.go:38) — there is no way to thread aprogressToken/ request_metato the downstream server.notifications/progressfrom downstream servers is not bridged back to the calling client session.Long-running downstream tools (cluster provisioning, large queries) give zero feedback through muster; clients see nothing until the final result or a timeout.
Scope
This is a structural change, intentionally split from the serialization fixes:
MCPClientinterface (or add a variant) to accept request_meta, and forward the caller'sprogressTokenoncall_toolinvocations.notifications/progressfrom the downstream connection to the calling session, translating the token.Related but explicitly out of scope: sampling and elicitation passthrough (downstream server-initiated requests). That is a separate design discussion about whether muster should proxy interactive capabilities at all.