VeryGoodOpenSource / VeryGoodOpenSource/very_good_cli

feat(mcp): stream progress notifications for long-running tools

Open
#1,616 1 comment 0 reactions 1 assignee View on GitHub

@vgvbot is already working on this.

Since Aug 11, 2026.

feature
Dominant language
Dart
Stars
2.4k
Forks
244
Avg merge
1d 19h
Merged PRs (30d)
25

Description

Summary

Explore streaming MCP notifications/progress from long-running tools (test, packages_get, packages_check_licenses) so clients can show live progress while a command runs, instead of only seeing output once the tool returns.

Background

#1612 captures a command's in-process mason Logger output and returns it in CallToolResult.content. That is the reliable way to get diagnostics to the agent, because the tool result is what every client feeds back to the model.

Progress notifications are a complementary, optional UX layer on top of that — not a replacement.

Proposal

When a client includes a progressToken in a request's _meta, the server emits notifications/progress as the command runs (e.g. test counts, "Optimizing tests…", per-package steps). The MCP spec (2025-03-26+) allows an optional human-readable message field alongside progress/total.

Over the stdio transport these are valid JSON-RPC messages on the same stdout stream, so they do not conflict with the "no non-MCP content on stdout" constraint that motivated #1612 (raw logger text broke it; structured notifications are the correct channel).

Caveats / open questions
  • Only allowed when the client supplies a progressToken; otherwise the server must stay silent.
  • Progress is primarily a UX signal. Many clients render it as a spinner/bar for the human and do not inject it into the model's context, so the agent may never read it. Keep the final result (#1612) as the source of truth.
  • Streaming is fire-and-forget with no ordering guarantee relative to the final result.
  • Need to confirm whether the dart_mcp server package exposes a helper for sending progress notifications, or whether we'd send raw notifications ourselves.
Related
  • #1612
  • Refs #1599, #1600

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.