T16 - server notification publisher and subscriptions/listen
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 42/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- scala
- Domain
- api, backend, documentation
Research direction
Start by reading the 2026-07-28 subscription and transport specifications, then inspect the existing server implementations for ZIO, Ox, and Pekko and the prerequisite issues 244 and 246. Update docs/server/capabilities.md and docs/server/resources.md, and run the named server-stateless conformance scenarios; done means the listed subscription checks pass while legacy behavior remains unchanged.
Written by the indexing model from the issue text.
Description
Target branch: 2026-07-28-protocol-support
Requires:
A chimp server can tell its clients that the list of tools, prompts or resources changed, and that a given resource was updated. On the 2026-07-28 wire this happens through subscriptions/listen, the one long-lived stream that replaces the GET stream and resources/subscribe. A server author publishes these events from application code.
Publishing
- A server author can publish four kinds of events from anywhere in the application, not only from inside a tool call: tools list changed, prompts list changed, resources list changed, and resource updated for a given URI.
- The capabilities a server advertises match what it can publish.
tools.listChanged,prompts.listChanged,resources.listChangedandresources.subscribeare true only when the server is set up to publish the matching events. The fixedfalseof today goes away.
Opening a subscription
- A
subscriptions/listenrequest with a notification filter opens a stream that stays open until one side ends it. - The first message on the stream is
notifications/subscriptions/acknowledged. Its filter is the subset the server honours. Types the server cannot publish are left out. The server never sends a notification type the client did not ask for or the server did not acknowledge. - Every message on the stream carries
_meta["io.modelcontextprotocol/subscriptionId"]equal to the id of the listen request. - Resource updates are sent only for the URIs listed in
resourceSubscriptions. - Progress and log notifications never travel on a listen stream. They stay on the response stream of the request they belong to.
- A client can hold several subscriptions at once. On stdio they share one channel and are told apart by the subscription id.
Ending a subscription
- Over HTTP, the subscription ends when the client closes the response stream. The server stops publishing to it.
- Over stdio, the subscription ends when the client sends
notifications/cancelledwith the id of the listen request. - When the server shuts down, it ends each subscription with a successful
subscriptions/listenresult that carries the subscription id, and on stdio it also sendsnotifications/cancelledfor the listen request. Both spec pages are satisfied this way. - A server on the sync HTTP transport cannot hold a stream open and answers
subscriptions/listenwith-32601. The harness then skips its listen checks.
Coverage
- The rules above hold for the streaming servers over HTTP and stdio on ZIO, Ox and Pekko.
- Legacy behaviour does not change.
resources/subscribeandresources/unsubscribekeep working for legacy clients as they do today. - The conformance server offers the fixture tools
test_trigger_tool_changeandtest_trigger_prompt_change, which publish a list change, and advertiseslistChangedfor tools and prompts.
Spec:
- Subscriptions - Opening a Stream
- Subscriptions - Acknowledgment
- Subscriptions - Receiving Notifications
- Subscriptions - Multiple Concurrent Subscriptions
- Subscriptions - Cancellation
- Subscriptions - Graceful Closure
- Cancellation - Transport-Specific Cancellation
- Streamable HTTP - Receiving Messages
- stdio - Receiving Messages
- Tools - List Changed Notification
- Prompts - List Changed Notification
- Resources - List Changed Notification
- Resources - Subscriptions
Conformance scenarios that must pass after this task:
- The
server-statelesschecks that were skipped until now turn to pass:sep-2575-server-sends-subscription-ack,sep-2575-server-tags-subscription-id,sep-2575-server-honors-notification-filter,sep-2575-server-sends-prompts-list-changed-on-subscription,sep-2575-server-sends-tools-list-changed-on-subscription. The scenario stays out of the baseline.
Docs: yes.
docs/server/capabilities.md: how to publish list changes and resource updates, which capabilities follow from it, and that a streaming transport is required.docs/server/resources.md: subscriptions on the 2026-07-28 wire, where theresourceSubscriptionsfilter replacesresources/subscribe.
- Dominant language
- Scala
- Stars
- 102
- Forks
- 10
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 19
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- No pull request template
- No 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 softwaremill/chimp
-
tier:2 SDK
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
softwaremill/chimp#145 ·
Maintainers usually reply within 1 day
-
2026-07-28 version support
Difficulty 5/5 Over a week Newbie friendliness 35/100
softwaremill/chimp#255 ·
Maintainers usually reply within 1 day
-
2026-07-28 version support
Difficulty 5/5 Over a week Newbie friendliness 45/100
softwaremill/chimp#253 ·
Maintainers usually reply within 1 day
-
2026-07-28 version support
Difficulty 5/5 Over a week Newbie friendliness 42/100
softwaremill/chimp#252 ·
Maintainers usually reply within 1 day
-
2026-07-28 version support
Difficulty 5/5 Over a week Newbie friendliness 35/100
softwaremill/chimp#251 ·
Maintainers usually reply within 1 day
All issues in softwaremill/chimp
Similar issues
-
[Rust][Flaky Test] multiple_deadlines_fire_in_order asserts a wall-clock gap instead of firing orderOpenCI/CD ⚒️ Flaky-tests 🐦
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
valkey-io/valkey-glide#7255 ·
Maintainers usually reply within 3 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
lichess-org/lila#21905 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 3 days
-
documentation HiWiStart
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
ie3-institute/simona#1934 ·
Maintainers usually reply within 1 day