mcp: aim at the draft spec #414
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#414
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
latest draft changes here:
https://modelcontextprotocol.io/specification/draft/changelog
Digest of the draft changelog as of 2026-07-14 (changes since 2025-11-25). It is a large, breaking revision. Several planned madtea features aim at surfaces the draft removes or replaces. Impact per issue:
Directly re-aims open issues
elicitation/createis replaced by the Multi Round-Trip Requests (MRTR) pattern (SEP-2322). The server returns anInputRequiredResult(resultType: "input_required") whoseinputRequestscarries what it needs, and the client retries the original request withinputResponses.notifications/elicitation/completeandelicitationId(both added 2025-11-25) are already removed again. Design confirmation flows MRTR-shaped, not against old elicitation.resources/subscribe/unsubscribeand the HTTP GET stream are replaced by a singlesubscriptions/listenstream with per-type opt-in (toolsListChanged, ...). For stdio today the old notification still matters, but the guarantee we build should isolate the "announce tool-list change" seam, so the transport swap stays contained.initializehandshake (version, identity, and capabilities ride in_metaper request), a new mandatoryserver/discoverRPC, protocol-level sessions andMcp-Session-Idremoved, SSE resumability removed.Deprecations that constrain design (SEP-2577)
Logging, Sampling, and Roots are deprecated. Migration guidance: stderr (stdio) or OpenTelemetry instead of Logging. Two consequences here: (a) never build features on
notifications/message(relevant to #70's error-surfacing workaround, whose stderr choice is the spec-sanctioned one; this also validates the #410 serve.log/stderr instrumentation); (b)logging/setLevelis gone, so log level rides in_meta(io.modelcontextprotocol/logLevel), and servers MUST NOT emit log notifications for requests that did not set it.Smaller items worth tracking
resultTypefield ("complete"/"input_required").tools/listSHOULD return tools in deterministic order (client caching plus LLM prompt-cache hits). This is cheap to guarantee now, and worth a test.CacheableResultinterface:ttlMspluscacheScoperequired on tools/list, prompts/list, resources/list, and read results.-32000..-32019implementation-defined,-32020..-32099reserved for the spec. Resource-not-found moved-32002to-32602.extensionsfield on capabilities. Tasks moved out of core into theio.modelcontextprotocol/tasksextension (pollingtasks/get, no more blockingtasks/result)._meta(traceparent/tracestate/baggage).Caveat for sequencing: this is a DRAFT. The client I target speaks 2025-06-18/2025-11-25 today, and the go-sdk tracks released revisions. "Aim at draft" should mean: keep seams where the draft moves (elicitation to MRTR, notifications to
subscriptions/listen, no new Logging/Sampling/Roots surface), pick up the free wins now (deterministic tool order), and avoid building anything the draft already deletes.Dependency check (2026-07-14): madtea builds against go-sdk v1.6.1, the latest stable (
go list -m -uoffers no upgrade). Upstream hasv1.7.0-pre.1and-pre.2cut. Diffing the module payloads shows the pre-releases are the draft-spec vehicle: newmcp/mrtr.go(Multi Round-Trip Requests, SEP-2322, the surface #6's confirmations should target), newmcp/cache.go(CacheableResultttlMs/cacheScope), SEP-2596 deprecation markers (Logging/Sampling/Roots), and broad churn across server, streamable, and protocol.Plan: stay on stable for shipped binaries (pre-releases do not belong in release artifacts, and today's clients do not speak the draft revision anyway). Adopt v1.7.0 the moment it goes stable. That upgrade is the natural kickoff for #6 (MRTR-shaped confirmations) and for re-verifying #7's list_changed guarantee against the new subscription model.