Protocol

Model Context Protocol Specification

The MCP specification lives at modelcontextprotocol.io/specification. It defines a JSON-RPC 2.0 wire protocol, three server-side primitives, three client-side capabilities, and three transport variants. The schema ships as TypeScript (schema.ts) under LF AAIF governance.

Spec organization

Base Protocol

JSON-RPC 2.0 message shapes (Requests, Responses, Notifications), the initialize handshake, capability negotiation, stateful connections.

Server Features

Resources (URIs with content-type metadata), Tools (JSON-Schema-defined verbs with structured output), Prompts (parameterized message templates).

Client Features

Sampling (server-requested LLM completions), Roots (filesystem boundaries advertised to servers), Elicitation (server-requested user input).

Architecture

Three actors: Host, Client, Server. Three transport variants: stdio, SSE, HTTP. The session lifecycle from handshake through cleanup.

Utilities

Configuration, progress tracking, cancellation, error reporting, logging. Cross-cutting concerns that any implementation can adopt.

The deliberate gaps

The spec specifies a wire protocol. It does not specify authentication or authorization at the protocol layer. Servers and transports handle auth themselves: OAuth 2.1 with PKCE for HTTP, OS process isolation for stdio.

The spec also does not include sandboxing. A server runs with the host process's privileges. Trust is the host application's responsibility; the protocol defines only the wire contract.

There is no central trust authority. No PKI, no signed-publisher tier at the spec level. Per-publisher trust is delegated to the implementing client or to third-party services like MCPowered.

The _meta extension mechanism

Both Requests and Responses carry an optional _meta property. Servers and clients use it to attach out-of-band metadata without breaking the JSON-RPC schema. The MCP Apps extension (rich UI delivery from servers) builds on this through the _meta.ui.resourceUri field.

Versioning

The spec versions by date (current at writing: 2025-06-18). Backward compatibility commitments fall under LF AAIF governance. Each major version corresponds to a stable schema snapshot in the schema.ts source.

Related on MCPowered