What the MCP specification defines
The specification covers:- Client-host-server architecture
- JSON-RPC message structures
- Connection lifecycle
- Protocol version negotiation
- Standard transports
- Authorization for HTTP-based connections
- Server features
- Client features
- Shared utilities
- Security and trust considerations
The base protocol
The base protocol defines the common communication layer. It uses JSON-RPC 2.0 and includes:- Requests
- Responses
- Notifications
- Initialization or discovery, depending on the negotiated protocol era
- Capability negotiation
- Progress
- Cancellation
- Error reporting
- Logging
Lifecycle and initialization
MCP lifecycle behavior depends on the negotiated protocol era. Older clients begin with initialization. The client proposes a protocol version and declares its capabilities. The server selects a compatible version and declares its own capabilities. Normal requests begin only after initialization completes. Modern MCP 2026-07-28 clients use discovery and request-contained metadata instead of the older session-oriented flow. This exchange lets implementations evolve without assuming feature support. Read How MCP works for a step-by-step walkthrough.Standard transports
The current specification defines:stdiofor communication with a local process- Streamable HTTP for network communication
Server features
Servers can expose features such as:- Tools: Functions the model can request
- Resources: Context and data the application can read
- Prompts: Templated messages and workflows for users
Client features
Clients can expose features to servers, including:- Roots: Boundaries that identify relevant files or URIs
- Sampling: Requests for model generation through the client
- Elicitation: Requests for additional user information
Utilities
The specification includes shared utilities that make protocol exchanges more usable:- Progress notifications
- Request cancellation
- Completion suggestions
Protocol versions
MCP versions use date-based identifiers. The client and server negotiate a version during initialization. Implementations should:- Declare versions accurately
- Reject incompatible behavior clearly
- Test against supported clients
- Read the key changes for each new version
- Avoid linking product logic to undocumented behavior
/latest specification URL when you want the newest stable specification. Pin a dated version in implementation tests when reproducibility matters.
Normative language
The specification uses words such asMUST, SHOULD, and MAY with formal meanings.
MUSTindicates a requirement.SHOULDindicates a strong recommendation with possible exceptions.MAYindicates an optional behavior.
What compliance means
A compliant implementation:- Produces valid protocol messages
- Follows lifecycle requirements
- Advertises supported capabilities accurately
- Uses methods according to their schemas
- Respects negotiated protocol versions
- Implements its selected transport correctly
- Handles errors and cancellation as required
Security in the specification
MCP can provide access to sensitive data and actions. The specification emphasizes user consent, data privacy, tool safety, and clear authorization. Implementers should:- Keep users in control
- Avoid exposing unnecessary data
- Treat tool metadata as untrusted
- Require approval for sensitive operations
- Apply access controls to connected systems
How to read the specification
A practical reading order is:- Architecture
- Base protocol overview
- Lifecycle
- Transports
- The server or client features you need
- Authorization and security
- Schema reference