MCP SEP-2577 — Three deprecations and a one-year migration window

Agent
L
MCP SEP-2577 hero animation — the MCP spec surface holds six features on the left; the three on the bottom row (Roots, Sampling, Logging) get DEPRECATED stamps with reason tags. Amber arrows then draw from each deprecated feature to its new home on the right — out-of-band config, standard LLM APIs, and stderr / OpenTelemetry — which light up indigo as they receive their migrated feature. A top-center pill announces the new lifecycle stage: Deprecated, with a one-year migration window, then Removed.
learnaivisually.com/ai-explained/mcp-sep-2577-feature-deprecation

The news. On May 15, 2026, MCP SEP-2577 was merged by the Model Context Protocol core contributors. It deprecates three early MCP features — Roots, Sampling, and Logging — and introduces a new Deprecated lifecycle status. Deprecated features stay fully functional in every spec version released within one year of the deprecating version, then move to Removed. The migration paths are deliberately mundane: Roots → out-of-band server config, Sampling → standard LLM APIs, Logging → stderr / OpenTelemetry.

Picture the shared apartment. Six roommates moved in two years ago — Tools, Resources, Prompts, Roots, Sampling, Logging. The first three are still doing what the apartment was for: they are how an agent actually uses an MCP server. The last three barely use the kitchen. Roots keeps a small box of stuff in the hallway that everyone walks around. Sampling asks the household to drive them to errands and to pick which grocery store, every single time. Logging keeps a shared diary nobody reads because they already have their own. The lease is up for renewal. SEP-2577 posts a twelve-month notice on the fridge: the three quiet roommates need to find their own place by then.

The reason isn't drama — it's overlap. Roots was a way for a server to say "here is the workspace I operate on," but in practice every server already passes paths as parameters to tools/call. The same information was being plumbed twice, once through the Roots channel and once through ordinary tool inputs, with most hosts ignoring the former. Sampling asked the client to invoke an LLM on the server's behalf, which sounded clean until every client realized it now had to prompt the user for consent on each call and pick a model the server didn't know about. Two human-in-the-loop ceremonies per sampling/createMessage, when the same client could just call the LLM provider directly. Logging sent typed log events from server to client over JSON-RPC, but every host already had stderr capture, OpenTelemetry, or its own log pipeline — the protocol-level path was a fourth log surface nobody routed.

The real teaching here isn't which three features got cut. It's the lifecycle mechanism the SEP introduces. The old MCP spec had two states for any feature: shipped and supported, or gone. There was no graceful exit. SEP-2577 inserts a third state — Deprecated — with a hard contract: a feature that enters Deprecated in spec version N stays fully specified and supported in every spec version released within one year of N. After that window it moves to Removed and can be dropped. The clock is on spec-release time, not wall-clock time, so an unusually fast release cadence shortens the practical migration window and an unusually slow one extends it; either way the rule is unambiguous for an implementer.

Deprecated featureWhat it didWhy it didn't earn its keepWhere you do it instead
RootsServer declares workspace / filesystem roots over JSON-RPCOverlapped with tool parameters; most servers passed the same paths through tools/call anywayOut-of-band server config (env vars, config files, startup args)
Sampling (sampling/createMessage)Server asks the client to invoke an LLM on its behalfRequired consent + model selection ceremonies per call — two human-in-the-loop hops the server could not avoidStandard LLM APIs (OpenAI, Anthropic, etc.) called directly from wherever the work already runs
LoggingServer sends typed log events to the client over JSON-RPCEvery host already had stderr capture, OpenTelemetry, or its own log surface — protocol-level logging was a fourth path nobody routedstderr / OpenTelemetry

A worked-example sense of the migration cost. Say a host vendor ships an MCP client today and has, hypothetically, 40 connected MCP servers, of which 6 use Sampling, 3 declare Roots, and 5 emit Logging events (illustrative). After SEP-2577 lands, none of those connections breaks for at least a year. During that year the vendor changes their client wiring once: stop calling LLMs on behalf of servers; tell the 6 Sampling servers to call providers directly. Strip the Roots channel from the connection setup; ask the 3 Roots servers to read their workspace from a config field. Drop the Logging route; tell the 5 Logging servers to write to stderr. One refactor, 14 server upgrade requests, zero broken connections during the migration window (illustrative). Then in year two, the host can finally delete the deprecated handlers from the client.

There is a sibling SEP worth knowing about. MCP SEP-2663 lands the Tasks extension in the same release window — adding async task handles so long-running tool calls don't pin the connection. The two SEPs are the same protocol-design instinct from opposite directions: SEP-2663 adds the capability the protocol genuinely needs, SEP-2577 removes the three the protocol shouldn't have insisted on. What belongs in the spec are the things every host and server have to coordinate on. What doesn't belong are the things they'd each rather do their own way. Roots is config. Sampling is an API call. Logging is a logging library. None of those needed a protocol surface.

The boundary of what SEP-2577 changes is narrow on purpose. Existing servers that use Roots / Sampling / Logging keep working until the one-year clock expires. New servers shouldn't reach for those features. Host implementers can plan their deletion work knowing exactly when the spec contract releases them. That third state — Deprecated, with a clock attached — is the actual protocol-design lesson the SEP is teaching, and it's a state every long-lived protocol eventually wishes it had introduced earlier.

Goes deeper in: AI Agents → Tool Use → MCP, Two Ways

Frequently Asked Questions