Repository navigation
Expose live indexing progress to MCP clients #2031
Description
Activity
- addededitor/integrationEditor compatibility and CLI integrationEditor compatibility and CLI integrationparsing/qualityGraph extraction bugs, false positives, missing edgesGraph extraction bugs, false positives, missing edgesux/behaviorDisplay bugs, docs, adoption UXDisplay bugs, docs, adoption UX
on Sep 3, 2026 - addedenhancementNew feature or requestNew feature or requestpriority/normalStandard review queue; useful PR with ordinary maintainer urgency.Standard review queue; useful PR with ordinary maintainer urgency.and removedparsing/qualityGraph extraction bugs, false positives, missing edgesGraph extraction bugs, false positives, missing edges
on Sep 5, 2026 Checking before writing code, since CONTRIBUTING asks for that.
On current
mainthe pipeline events this issue mentions reach nothing except the supervisor's quiet-timeout tail: the worker runs inside the daemon and its log stays there. That makes the two halves of this request very different in cost.The
index_statushalf is small and daemon-only: pass a log callback when the daemon starts the worker, keep a per-job snapshot (phase, done/total, timestamps, terminal state), expose it fromindex_statusas an additive field. No wire change.The
notifications/progresshalf needs a new daemon-to-frontend path, since the wire is strictly request/response today. That is a protocol decision I would not make for you.Would you take the
index_statushalf as a standalone PR? Notifications I would leave for a separate issue once you have a preferred wire shape.- added a commit that references this issue
on Sep 30, 2026
What problem does this solve?
index_repositorycan run for minutes or hours on large repositories, but an MCP client currently receives no quantitative progress until the synchronous tool call completes.index_statusreports the already-published graph (nodes,edges, andready|empty), not the active indexing attempt. The UI job endpoint similarly exposes onlyindexing|done|error.The indexer already emits useful structured events such as:
pipeline.discover files=Npass.start pass=... files=Nparallel.extract.progress done=N total=MThese events are consumed by the one-shot CLI progress sink, but are not exposed through MCP progress notifications or an in-flight status snapshot. This makes a healthy long-running index indistinguishable from a stalled one.
Proposed solution
Expose live per-attempt indexing progress to MCP clients.
index_repositoryis running.index_status, so another client or session can poll it.queued,running,completed,failed, orcancelledprocessed/totalis enough initially.index_repositoryresponse and existingindex_statusfields for compatibility.Suggested acceptance criteria:
index_repositorycall emits monotonic progress updates for the extraction phase.index_statusshows the same in-flight attempt state and counters.Related work:
dbab4d37implemented the CLI presentation.Alternatives considered
Confirmations