A support engineer debugging a fleet of MCP servers wants every result to show which server implementation and version produced it, without relying on any earlier exchange. Where should servers put this information?
Select an answer to reveal the explanation.
Short Explanation
With no handshake anymore, every reply has to introduce itself. Servers put their name and version in each result's _meta as serverInfo, which is exactly what you want when you're chasing a bug across a fleet. Just don't treat that name tag as proof of identity.
Full Explanation
Revision 2026-07-28 is stateless, so servers identify themselves on every result rather than once at connection time. The base protocol says servers SHOULD include io.modelcontextprotocol/serverInfo, an Implementation object with name and version, in every result's _meta unless configured not to. The specification notes that clientInfo and serverInfo are self-reported and unverified, intended for display, logging and debugging, and should not be used to change behavior or for security decisions. Pointing to the initialize response describes the legacy handshake that modern servers no longer use; there is no session in which to keep it. Mcp-Name is a request header that mirrors the tool name or resource URI for intermediaries, not a response header carrying server identity. Embedding version data in tool descriptions pollutes text the model reads, and clients do not copy descriptions into results. Servers must also implement server/discover, which returns serverInfo alongside supported versions and capabilities, but that is a separate call rather than identification on every result. Exam caveat: serverInfo's name is not guaranteed unique across servers and should not be used to disambiguate tool names. Operational check: capture results from several servers and confirm each carries serverInfo with a name and version in its _meta.