After a subscriptions/listen reconnect, how does a client learn about transitions it missed?
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- typescript
- Domain
- api, backend-api-design
Research direction
Start with the cited task subscription requirements in specification/2026-07-28/tasks.md, then read the reconnection behavior in basic/patterns/subscriptions.mdx and the SSE note in changelog.mdx. Compare the server-side and client-side proposals, resolve which requirement the specification should adopt, and update the relevant task subscription text so missed transitions are handled after reconnecting.
Written by the indexing model from the issue text.
Description
Context
notifications/taskscarries a completeDetailedTask, "identical to whattasks/getwould have returned at that moment" (specification/2026-07-28/tasks.md:477). Clients "MAY continue pollingtasks/getin addition to subscribing … but need not do so" (:505).- In core MCP 2026-07-28, an abrupt transport drop ends a subscription (
basic/patterns/subscriptions.mdx:125). The client "MAY treat [it] as a trigger to reconnect" (:157-158). On stdio it "MUST re-sendsubscriptions/listen", and the server "holds no subscription state across reconnections" (:160-162). - SSE resumability was removed on purpose in this revision (SEP-2575,
changelog.mdx:28). This issue doesn't ask to bring it back. Snapshot notifications make it unnecessary for tasks, with one exception, below.
The gap
A client that follows :505 and relies on notifications alone can do this:
subscriptions/listenwithtaskIds: [T], and the ack confirmsT.- The transport drops.
Tmovesworking → completed(or→ input_required) while no stream exists. The notification has nowhere to go.- The client reconnects and re-sends
subscriptions/listenforT, and the server acks. Tis terminal, so nothing further ever changes. The client never receives a notification and waits untilttlMsexpires.
For input_required, the task also stalls server-side, because the client never sees inputRequests.
Proposal (either line settles it)
- Server side: "After acknowledging a
subscriptions/listenthat includestaskIds, the server SHOULD send onenotifications/taskscarrying the currentDetailedTaskfor each acknowledged task ID." This is snapshot-on-subscribe, the same shape A2A'sSubscribeToTaskuses. - Client side: "A client that (re-)establishes a subscription MUST call
tasks/getonce for each task ID in the acknowledgement before relying on notifications alone." This needs no server change and fits the "need not poll" text as long as that text gets this qualifier.
lastUpdatedAt (tasks.md:133) already lets a client discard a stale snapshot if both a poll and a notification arrive, so either option is safe to combine with polling.
- Dominant language
- TypeScript
- Stars
- 50
- Forks
- 9
- Avg merge
- 14d 1h
- Merged PRs (30d)
- 1
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/ext-tasks
-
Difficulty 1/5 Under an hour Newbie friendliness 95/100
modelcontextprotocol/ext-tasks#23 · 1 comment ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/ext-tasks#22 · 1 comment ·
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
modelcontextprotocol/ext-tasks#20 · 2 comments ·
-
Stalled tasksOpen
Difficulty 5/5 Over a week Newbie friendliness 35/100
modelcontextprotocol/ext-tasks#11 · 2 comments ·
All issues in modelcontextprotocol/ext-tasks
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
external-issue to-triage
Difficulty 1/5 Under an hour Newbie friendliness 90/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
diegosouzapw/OmniRoute#15401 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
code-yeongyu/oh-my-openagent#9454 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
smart-village-solutions/sva-studio#1654 ·
Maintainers usually reply within 1 day