Skip to content

MCP 2026-07-28: subscriptions/listen is not implemented, so modern servers cannot push list or resource changes #4193

Closed

Description

@code-yeongyu

Summary

Modern-only servers cannot keep tools, prompts and resource updates current through the required opt-in stream mechanism.

Evidence (senpi main at the audit, 2026-10-24)

  • C4 (missing, medium): Modern-only servers cannot keep tools, prompts and resource updates current through the required opt-in stream mechanism.
    • Evidence: packages/coding-agent/src/core/extensions/builtin/mcp/notifications.ts:106-115; resources.ts:45-52; notification-schemas.ts:57-85; no subscriptions/listen production sender in M/
    • Spec: spec 2026-07-28 docs/specification/2026-07-28/basic/patterns/subscriptions.mdx “Opening a Stream”, “Notification Filter”, “Acknowledgment”, “Receiving Notifications”

Expected

senpi opens a subscriptions/listen stream for servers that support it and opts into toolsListChanged/promptsListChanged/resourcesListChanged/resourceSubscriptions as it needs, handling the acknowledgment and subscription ids.

Acceptance

  • A RED test that fails on current main first, then the fix.
  • Legacy (2025-11-25 and earlier) servers behave as today.

Related

Follow-up of #3304 / #3309 from the MCP 2026-07-28 spec-sync audit. Headless elicitation: #4185.

Activity

  1. code-yeongyu commented on Oct 25, 2026

    @code-yeongyu
    OwnerAuthor

    Fixed by #4234, merged as 949949c.

    Evidence:

    • Review CLEAR at 1832aec (Opus 5.5, APPROVE-WITH-NITS, 0 CRITICAL/HIGH/MEDIUM); the earlier FIX_FIRST (graceful subscription close) and its five LOWs were folded before that review. Remaining LOWs tracked in Follow-up: #4234 review LOWs (sweep pages keyed by cursor, abandoned cursor entries, backoff skipped on filter change) #4290.
    • Main merged into the branch (5a27eec) with the PR's own lines unchanged (zero-context patch-id equal); merge gate MERGE_OK_DRY ... via=carry-forward 1832aecd9b->5a27eec639, code hash unchanged.
    • Static receipt at 5a27eec: install, check, typecheck, changes, build, supervisor-import-graph all exit 0.
    • Behaviour: resource and list-changed subscriptions close gracefully on dispose, each resource sweep publishes from its own buffer (latest sweep wins), and reconnects back off without real sleeps in tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions