trackmcp
All posts
MCP fundamentalsSep 12, 2026·Updated Sep 12, 2026·Last verified Sep 12, 2026·6 min read

MCP Capability Negotiation: Versions, Features, and Initialization

See how MCP clients and servers agree on protocol versions and optional capabilities, and learn how negotiation failures show up in production.

Krishna GoyalKrishna GoyalFounder, TrackMCP
trackmcpmcp-serversearchqueryemail
Key takeaways
  • Initialization establishes a protocol version and optional capabilities.
  • Both sides must use only what they negotiated.
  • Version and capability dimensions are useful compatibility signals when bounded.

Capability negotiation is the part of MCP initialization where a client and server agree on the protocol version and optional features they can use together. It prevents one side from assuming that the other side supports a feature it never advertised.

Version agreement comes first

trackmcpmcp-serversearchqueryemail
The initialization handshake aligns the client and server before normal MCP operations begin.

The client begins by sending an initialize request with a protocol version it supports. The server responds with the version that will govern the session. If the two sides cannot agree, the session should not proceed to normal operations.

Capabilities describe optional features

Capabilities are grouped by client and server responsibilities. A server can advertise tools, resources, prompts, logging, completions, or other supported features. A client can advertise support for roots, sampling, elicitation, tasks, or other features. Optional sub-capabilities can describe things such as list-change notifications or resource subscriptions.

Negotiated does not mean universal

The server may implement a feature in its codebase but still need to advertise it for the client to use it. After initialization, both sides must respect the negotiated set. A client should not send a request for an unadvertised capability, and a server should not emit feature-specific notifications without declaring the relevant support.

Diagnosing negotiation problems

  • Capture the client and server protocol versions without guessing from a product name.
  • Compare the advertised capability object with the method or notification that failed.
  • Check whether the issue is version mismatch, missing capability, invalid parameters, or a server runtime error.
  • Test more than one client when the server behaves differently across hosts.

Operational telemetry for compatibility

Version and capability dimensions can have high diagnostic value, but they should remain bounded and low-cardinality. A server team can use them to find clients that still use an older transport or a feature set that the current release no longer exercises. They should not collect raw message bodies when a small set of validated fields answers the question.

Can capabilities change during a session?

Some catalogs can change and servers can send the corresponding notifications when supported. The initial capability negotiation still establishes which feature families are available for the session.

Does a negotiated capability guarantee a successful tool call?

No. It only says that the feature is available. Authorization, validation, downstream dependencies, and application behavior can still cause a call to fail.

About the publisher

TrackMCP, also written Track MCP

TrackMCP helps teams understand which clients connect to their MCP servers, which tools agents use, and where workflows fail. Learn more about Track MCP.

See this on your own server

TrackMCP turns your MCP server's calls into adoption, workflows, and outcomes. One line to install.

Keep reading