---
title: 'MCP capability negotiation'
description: 'The MCP initialization exchange in which a client and server declare the optional protocol features they support.'
canonical_url: 'https://darkfactory.dev/glossary/mcp-capability-negotiation'
markdown_url: 'https://darkfactory.dev/glossary/mcp-capability-negotiation.md'
collection: glossary
date_published: '2026-08-04T00:00:00-04:00'
date_modified: '2026-08-26T00:00:00-04:00'
---

# MCP capability negotiation


## Definition

**MCP capability negotiation** is the initialization exchange in which a client and server declare the optional protocol features they support. The client sends an initialize request with its protocol version, capabilities, and implementation information. The server responds with its selected protocol version, its own capabilities, and server information before normal operation begins.

Capabilities tell each participant which optional messages and behaviors are valid for that connection. A server may declare tools, resources, or prompts and optional features within them. A client may declare features such as sampling, roots, or elicitation, depending on the protocol version. Implementations must use the specification for the negotiated version rather than assuming that a capability from a newer release exists.

## Support is not permission

Negotiation establishes protocol compatibility. It does not authenticate every underlying data source, authorize a model to call every tool, or prove that an advertised operation is safe. Authentication, user consent, local policy, resource authorization, and runtime checks remain outside or above this exchange.

## Distinguish it from nearby terms

Feature detection may happen through ad hoc probing. Capability negotiation is the protocol-defined declaration made during initialization. Tool discovery lists individual tools after the connection exists. A participant can support the tools capability while exposing no tools to this user or session.

## Check your understanding

The client knows how to request sampling, but the server did not negotiate that capability. May the server send a sampling request anyway? No. Local implementation support on one side is insufficient; the connection must establish compatible support under the negotiated protocol version.

## Also called

capability negotiation

## Related terms

- [Capability](https://darkfactory.dev/glossary/capability)
- [Model Context Protocol (MCP)](https://darkfactory.dev/glossary/model-context-protocol)
- [MCP client](https://darkfactory.dev/glossary/mcp-client)
- [MCP server](https://darkfactory.dev/glossary/mcp-server)

## Related factory areas

- [Tools & project interfaces](https://darkfactory.dev/factory/tools-interfaces)

## Evidence and further reading

- [Model Context Protocol Specification](https://modelcontextprotocol.io/docs/learn/architecture)
