MCP Removes the ping and logging/setLevel Methods

A terminal window showing the verbatim MCP 2026-07-28 changelog entry: removed protocols ping, logging/setLevel, notifications/roots/list_changed
On this page

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 via io.modelcontextprotocol/logLevel in _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 AspectBefore (removed 2026-07-28)After
Setting log verbosityStandalone logging/setLevel call_meta.io.modelcontextprotocol/logLevel on each request
Liveness checkingStandalone ping callNo stated direct replacement
Roots list-changed notificationsnotifications/roots/list_changedTied to the broader Roots deprecation

Fix it: move log level into _meta, reconsider liveness checks

before: standalone logging/setLevel call (removed)
{
  "jsonrpc": "2.0",
  "method": "logging/setLevel",
  "params": { "level": "debug" }
}
after: log level carried per-request in _meta
{
  "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.

Frequently asked

What replaces ping as a liveness check?

The specification changelog for this entry doesn't name a direct replacement RPC for ping. Since the protocol is now stateless per request (see the removed initialize handshake), a successful response to any ordinary request may serve the same liveness-confirming purpose ping used to, but that's an inference, not a stated spec replacement; check current spec text before relying on it.

Is this the same change as the Roots/Sampling/Logging deprecation?

No. This entry is a Major Change, already effective: three specific protocol methods are removed outright. The separate Roots/Sampling/Logging deprecation is a broader, feature-level notice with a twelve-month runway before removal. Logging as a method is affected by both, but from different angles: this entry removes the specific setLevel call now, the other deprecates the whole feature area on a longer clock.

Emitted as FAQPage JSON-LD from the same frontmatter — one source, no duplicated prose.

Recent posts

Full-text search via Pagefind · ↑↓ to navigate · ↵ to open