feat: add 2026-04-22 weekly meeting notes (#35)
This commit is contained in:
parent
915d234173
commit
14434c45a5
1 changed files with 90 additions and 0 deletions
90
meetings/2026-04-22_weekly.md
Normal file
90
meetings/2026-04-22_weekly.md
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
# 2026-04-22 MCP: Transport Working Group (Regular)
|
||||
|
||||
**TL;DR:** The April 22 meeting of the MCP Transport Working Group centered on
|
||||
tightening up the stateless Specification Enhancement Proposal (SEP). The tone
|
||||
shifted from routine specification updates to high urgency after the discovery
|
||||
of a critical, cross-SDK bug regarding protocol version negotiation. Major
|
||||
consensus was reached on deprecating resumable streams entirely, mapping JSON
|
||||
RPC request IDs as standard IO stream identifiers, and clarifying HTTP versus
|
||||
standard IO cancellation mechanisms.
|
||||
|
||||
### Detailed Summary
|
||||
|
||||
### Stateless SEP Cancellation Mechanisms
|
||||
* **Tension Point:** How to handle cancellation across different transports.
|
||||
Stephen Halter pointed out that the current streamable HTTP spec explicitly
|
||||
notes a stream reset is *not* a cancellation, creating a capability gap with
|
||||
standard IO.
|
||||
* **Consensus:** Mark Roth successfully argued that in a stateless
|
||||
architecture, closing the HTTP stream *is* inherently a cancellation.
|
||||
* **Consensus:** For standard IO, cancellation will rely strictly on the
|
||||
`cancel notification`. SDKs are expected to abstract these
|
||||
transport-specific differences automatically so clients have a unified
|
||||
experience.
|
||||
|
||||
### Standard IO Semantics & Stream Identifiers
|
||||
* **Tension Point:** Multiple `subscribe` calls over standard IO currently
|
||||
lack a correlation ID for returning notifications, making it ambiguous which
|
||||
notifications belong to which subscription request.
|
||||
* **Trade-off/Debate:** Mark Roth proposed formalizing the JSON RPC request ID
|
||||
as the standard IO stream identifier. Geoff Goodman and Luca Chang noted a
|
||||
strict reading of JSON RPC dictates that notifications containing an ID are
|
||||
technically treated as requests.
|
||||
* **Consensus:** The group agreed to include the original request ID in
|
||||
returning notifications (potentially tucked inside an envelope or payload to
|
||||
bypass JSON RPC violations) to effectively multiplex standard IO streams.
|
||||
Progress notifications will follow this exact same pattern.
|
||||
|
||||
### Deprecation of Resumable Streams
|
||||
* **Debate:** With connection drops now implicitly triggering cancellation,
|
||||
the existing resumable streams (SSE) feature contradicts the new stateless
|
||||
paradigm.
|
||||
* **Consensus:** Resumable streams are officially deprecated and will be
|
||||
stripped from the SEP.
|
||||
* **Trade-off:** Any workload requiring durability or resumability must now
|
||||
utilize tasks rather than relying on stream resumability.
|
||||
|
||||
### Escalation: Critical Protocol Version Negotiation Failure
|
||||
* **Escalation Point:** Peter Alexander revealed that zero official SDKs
|
||||
currently return the mandated 400 Bad Request error (with JSON RPC error
|
||||
-32602) when an unsupported protocol version is requested. Instead, they
|
||||
perform a membership check and silently fall back to the latest supported
|
||||
version.
|
||||
* **Impact:** This non-compliance will cause a "bumpy rollout" for new
|
||||
stateless features, breaking the backward compatibility fallback loop for
|
||||
new clients speaking to old servers.
|
||||
* **Consensus:** Immediate intervention is required. The team will file bugs
|
||||
across the major SDKs and enforce correct negotiation logic via mandatory
|
||||
conformance tests.
|
||||
|
||||
### Subscription Stream Final Results
|
||||
* **Tension Point:** Caitie McCaffrey challenged a line in the drafted SEP
|
||||
stating that a subscription stream "closes once a final result is sent". She
|
||||
noted there is no final result message for these streams; they simply stream
|
||||
notifications until explicitly closed or the connection dies.
|
||||
* **Consensus:** Kurtis Van Gent agreed to remove the inaccurate line
|
||||
regarding a final request/result.
|
||||
|
||||
### Next Steps & Timeline
|
||||
Between now and the June release, the priority shifts heavily toward
|
||||
implementing missing conformance tests to enforce baseline behaviors across all
|
||||
official SDKs. The stateless SEP will be updated immediately to reflect the
|
||||
removal of resumable streams, clarify the exact transport-layer cancellation
|
||||
semantics, and remove lingering stateful concepts.
|
||||
|
||||
### Action Items
|
||||
- [ ] **Kurtis Van Gent**: Update the stateless SEP to explicitly define HTTP
|
||||
stream closure and standard IO `cancel notification` as standard cancellation
|
||||
triggers.
|
||||
- [ ] **Kurtis Van Gent**: Update the stateless SEP to remove SSE stream
|
||||
resumability and event IDs, directing users to tasks for durable workloads.
|
||||
- [ ] **Kurtis Van Gent**: Remove the language regarding a "final result" being
|
||||
sent on subscription streams, clarifying they remain open until explicitly
|
||||
terminated.
|
||||
- [ ] **Kurtis Van Gent**: Check with the Go SDK team to verify their specific
|
||||
version negotiation logic implementation.
|
||||
- [ ] **Peter Alexander**: Act as DRI to investigate and file issues with
|
||||
official SDK teams regarding correct protocol version negotiation failures.
|
||||
- [ ] **Peter Alexander**: Build a conformance test validating that unsupported
|
||||
protocol versions correctly return a 32602 JSON RPC error and an HTTP 400
|
||||
response.
|
||||
Loading…
Reference in a new issue