| Filename | Latest commit message | Latest commit date |
|---|---|---|
A subscription (especially a no-expiry webhook one) can outlive the
events/list response it was created from, and nothing on the wire told the
client when its contract went stale. This adds:
- a Schema evolution note: inputSchema/payloadSchema SHOULD evolve additively
for the lifetime of an event name; breaking changes go under a new name;
- an Event Type Removal and Breaking Changes subsection: the server SHOULD end
affected push/webhook subscriptions via the existing terminated signal, with
NotFound{kind:event} for removal and Unsupported{reason:schema_changed} for
in-place change (not Forbidden), and an honest note that poll has no
server-side subscription to terminate;
- list_changed now explicitly covers descriptor changes, and no-expiry clients
are pointed at an occasional events/list alongside their refresh;
- a NOT-in-v1 bullet recording that schemaVersion/negotiation and an in-band
schema fingerprint are deferred.
Also rewords the Streamable HTTP push bullet so it no longer refers to the
transport's GET SSE stream, which SEP-2575 removed.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nj99r48USCY7S4xKoHD1Df
|
||
| .github | ||
| docs | ||
| .gitignore | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| README.md | ||
Triggers & Events Working Group
⚠️ Experimental — This repository is an incubation space for the Triggers & Events Working Group. Contents are exploratory and do not represent official MCP specifications or recommendations.
Mission
The Triggers & Events Working Group exists to define how MCP servers proactively notify clients of state changes. Today, clients learn about server-side updates by polling or holding an SSE connection open. This WG will specify a standardized callback mechanism — webhooks or similar — that lets servers push notifications when new data is available, with defined ordering guarantees that hold across all transports.
See the full Working Group Charter for scope, authority, and operations.
Scope
In Scope
- Specification work: SEPs defining the trigger/callback mechanism, subscription lifecycle, delivery semantics, and event ordering guarantees
- Reference implementations: SDK components demonstrating server-initiated notifications and client-side callback handling
- Cross-cutting concerns: Coordination with the Transports WG on transport-specific delivery behavior, and with the Agents WG where task completion notifications intersect with event triggers
- Documentation: Specification sections covering event-driven patterns and migration guidance from polling-based approaches
Out of Scope
- Changes to the transport wire format or session model (owned by the Transports WG)
- General-purpose pub/sub infrastructure beyond what the MCP protocol requires
- Modifications to existing notification primitives (
notifications/resources/updated,notifications/tools/list_changed, etc.) that do not relate to proactive server-initiated delivery
Related Groups
| Group | Overlap |
|---|---|
| Transports WG | Delivery and ordering guarantees depend on transport capabilities; callback semantics must be coherent across stdio, Streamable HTTP, and future transports |
| Agents WG | SEP-1686 (Tasks) identifies webhook-style task completion notifications as a future consideration; this WG owns that mechanism |
Leadership
| Role | Name | Organization | GitHub |
|---|---|---|---|
| Lead | Clare Liguori | Amazon Web Services | @clareliguori |
| Lead | Peter Alexander | Anthropic | @pja-ant |
Repository Contents
This repository will hold proposals, reference implementations, and experimental findings as the WG's work progresses. See CONTRIBUTING.md for how to participate.