What’s actually changing, and the real migration path for each
The specification changelog states the deprecation plainly:
“Roots, Sampling, and Logging features deprecated; suggested migrations provided”
Each deprecated feature has a distinct, real replacement, not a vague “figure it out later”:
- Roots: move to tool parameters, resource URIs, or plain configuration instead of the dedicated Roots mechanism.
- Sampling: replaced by the Multi Round-Trip Requests pattern (tracked under SEP-2322). A server that used to initiate a sampling call back to the client now returns an
InputRequiredResultcarryinginputRequests, and the client gathers answers and re-issues the original call withinputResponses, the same mechanism this pillar’sresultTypepost covers in depth. - Logging: move to stderr and OpenTelemetry instead of the protocol-level logging feature, which connects to the removal of the
logging/setLevelmethod already covered in this pillar.
Structural Comparison Matrix
| Feature | Deprecated Mechanism | Suggested Migration |
|---|---|---|
| Roots | Dedicated Roots protocol feature | Tool parameters, resource URIs, or config |
| Sampling | Server-initiated sampling calls | Multi Round-Trip Requests (InputRequiredResult) |
| Logging | Protocol-level logging feature | stderr and OpenTelemetry |
Fix it: audit which of the three an implementation actually uses
Twelve months is a planning window, not a reason to wait
There’s no forced deadline yet, but the migrations here are real architectural changes, especially Sampling’s move to Multi Round-Trip Requests. Auditing now, while there’s no time pressure, is a better use of the runway than starting the migration in month eleven.
grep -rln "\"method\": \"roots/\|\"method\": \"sampling/\|logging/" --include="*.py" --include="*.ts" --include="*.mjs" .For each match, confirm which of the three features is actually in use and start planning against its specific suggested migration rather than treating all three as one generic “logging and stuff” cleanup task; the three replacements are genuinely different in shape.
Confirmed version
Sourced from the official Model Context Protocol specification changelog, 2026-07-28 revision, published 2026-07-28, and the specification’s governance policy defining the minimum twelve-month deprecation window. Browse more posts like this in the AI Productivity archive.







