MCP
Components
The host process acts as the container and coordinator. It creates and manages multiple client instances, controls client connection permissions and lifecycle, enforces security policies and user consent requirements, and coordinates LLM integration and sampling.
Official
Each client is created by the host and maintains a stateful, isolated 1:1 session with a specific server. It handles protocol negotiation, capability exchange, bidirectional message routing, and subscription management.
Servers provide specialized context and capabilities via three primitives: Resources (context data), Prompts (templated workflows), and Tools (executable functions). Servers operate independently with focused responsibilities and can be local processes or remote services.
Official
Server-side primitives define the capabilities a server can offer: Resources provide structured data for the model's context window; Prompts are templated messages and workflow instructions; Tools are executable functions the model can invoke to retrieve information or perform actions.
Client-side primitives define capabilities the client exposes to servers: Roots give servers access to filesystem or URI boundaries on the client side; Sampling allows servers to request LLM completions, enabling agentic and recursive behaviors.
MCP uses JSON-RPC 2.0 as its base message format. The transport layer is pluggable: initial versions used stdio streams; later versions added HTTP with Server-Sent Events (SSE). The protocol is stateful within a session.
Official
During session initialization, clients and servers explicitly declare their supported features. This capability-based negotiation determines which protocol features and primitives are available for the session, ensuring forward and backward compatibility.
Implementation
Tool descriptions and server-provided annotations are untrusted by default. A malicious or compromised MCP server can attempt to inject instructions into the model's context via resource content or tool descriptions (prompt injection). Hosts must treat all server-provided content as untrusted.
Early MCP versions (pre-2025-11-25) lacked a standardized mechanism for server identity verification, making it possible for a malicious process to impersonate a trusted server.
When many MCP servers with many tools are connected simultaneously, the tool declarations inserted into the model's context window can consume a significant portion of the available token budget, reducing the space available for actual task context.
If a host implements the Sampling primitive without requiring explicit user approval for each sampling request, servers can trigger LLM completions without user awareness, enabling potentially uncontrolled agentic behaviors.
Evolution
Anthropic open-sourced Model Context Protocol on November 25, 2024 (spec version 2024-11-05) with SDKs for Python and TypeScript and reference server implementations for Google Drive, Slack, GitHub, Postgres, Git, and Puppeteer.
In March 2025, OpenAI officially adopted MCP across its Agents SDK, Responses API, and ChatGPT desktop app. In April 2025, Google DeepMind confirmed MCP support in Gemini models. Over 1,000 community-built MCP servers were available by early 2025.
The specification received major updates including asynchronous operations, statelessness support, server identity, Elicitation primitive (server-initiated user queries), and an official community-driven server registry.
In December 2025, Anthropic donated MCP governance to the Agentic AI Foundation (AAIF), a directed fund under the Linux Foundation, co-founded by Anthropic, Block, and OpenAI.
Technical details
Hyperparameters (configurable axes)
The communication transport between client and server. Initial MCP supported stdio (local subprocess); later versions added HTTP with SSE for remote servers.
Which server-side (Resources, Prompts, Tools) and client-side (Roots, Sampling, Elicitation) primitives are enabled. Capability negotiation at session start determines which are active.
Whether servers are permitted to request LLM completions from the client side. Requires explicit user consent and client declaration of sampling capability.
Parallelism
Each client maintains an independent session with a single server; a host can run multiple parallel client-server sessions simultaneously with no interdependencies between them.
Hardware requirements
MCP is a communication protocol and interface specification; it has no requirements or preferences regarding specific hardware. It runs on any environment capable of executing a process that handles JSON-RPC 2.0.