What’s actually changing
The specification changelog states it directly:
“Removed protocols:
ping,logging/setLevel,notifications/roots/list_changed; log level now set per-request viaio.modelcontextprotocol/logLevelin_meta”
Two of these three removals have a clear migration path; one doesn’t. logging/setLevel’s replacement is explicit: a _meta field on each request instead of a dedicated call. notifications/roots/list_changed’s removal connects to the broader Roots feature deprecation, which has its own migration guidance. ping simply has no stated replacement in this entry.
Structural Comparison Matrix
| Operational Aspect | Before (removed 2026-07-28) | After |
|---|---|---|
| Setting log verbosity | Standalone logging/setLevel call | _meta.io.modelcontextprotocol/logLevel on each request |
| Liveness checking | Standalone ping call | No stated direct replacement |
| Roots list-changed notifications | notifications/roots/list_changed | Tied to the broader Roots deprecation |
Fix it: move log level into _meta, reconsider liveness checks
{
"jsonrpc": "2.0",
"method": "logging/setLevel",
"params": { "level": "debug" }
}{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search",
"arguments": { "query": "example" },
"_meta": {
"io.modelcontextprotocol/logLevel": "debug"
}
}
}Don't assume a health-check request works the same
If monitoring or orchestration code calls ping on an interval to confirm a
server is alive, that call has no direct replacement here. Consider whether
any ordinary low-cost request (like server/discover) serves the same purpose
in practice, and verify that assumption against the current spec rather than
treating this post’s inference as confirmed guidance.
Confirmed version
Sourced from the official Model Context Protocol specification changelog, 2026-07-28 revision, published 2026-07-28. The lack of a stated ping replacement is confirmed by its absence from this changelog entry, not an independent claim that no replacement exists anywhere in the spec; check current spec text directly if liveness checking is critical to your integration. Browse more posts like this in the AI Productivity archive.







