MCP (Model Context Protocol)

Also known as: Model Context Protocol, MCP server, MCP client

TL;DR

MCP is Anthropic's open standard for connecting LLMs to tools and data sources. An MCP server exposes a catalog of tools, resources, and prompts; any MCP-aware client can use them.

MCP — the Model Context Protocol — is an open standard introduced by Anthropic in late 2024 for connecting LLMs to the tools, data, and context they need. The core idea: instead of every LLM application reimplementing every tool integration from scratch, an MCP server exposes a tool catalog over a standard protocol, and any MCP client (a model harness, an IDE, an agent runtime) can use those tools without bespoke glue code.

The M × N problem it solves

Without a standard, integrating M LLM clients with N tools is M × N integration work. Every chat app reimplements GitHub, every coding agent reimplements Postgres, every research tool reimplements web search. MCP turns this into M + N: each client speaks MCP once, each tool ships an MCP server once, and they compose.

The point of MCP is not new capability. It’s that one tool integration now flows to every agent runtime instead of rotting separately in twenty.

What an MCP server exposes

An MCP server can expose three kinds of primitives:

  • Tools — callable functions, similar in shape to tool definitions. The model invokes these to take action or fetch information.
  • Resources — readable contextual data the model can pull on demand: files, query results, API responses. Distinct from tools in that they’re declarative reads, not actions.
  • Prompts — reusable templates surfaced to the user (e.g., as slash commands) that orchestrate the server’s tools and resources.

Most MCP servers in the wild ship just tools, but the resource and prompt primitives matter for richer integrations.

MCP servers shipping in the wild
  • GitHub, Linear, Notion, Slack — SaaS platforms exposing their APIs as MCP tools
  • Postgres, SQLite, BigQuery — databases with read / query tools
  • Filesystem, shell, Git — local-process MCPs that ship with most agent runtimes
  • Web search, browser automation, Puppeteer — research and scraping primitives
  • Custom internal MCPs — companies wrapping their own services for internal agents

How a client uses it

An MCP-aware client (Claude Desktop, Cursor, an agent harness) connects to one or more MCP servers — typically over stdio for local processes or HTTP/SSE for remote ones — and dynamically loads their catalogs. The catalogs are translated into the underlying model’s format on the way in, and tool results flow back through the same standard.

The user experience is: install an MCP server, restart your client, and your agent can suddenly query your database, read your Notion, or interact with your custom internal API — without writing integration code.

Why this matters for agent ecosystems

Two reasons:

  • Tool ubiquity. The set of tools available to an expands without per-tool engineering on the agent side. New MCP servers (databases, dev tools, SaaS APIs, internal company systems) are landing weekly, and agents inherit those capabilities passively.
  • Specialized capabilities. An MCP server can expose anything that fits the protocol — including specialized models. A retrieval MCP server can host a and model behind one tool surface. Agents call it like any other tool; the server handles the specialized inference. This is the natural distribution channel for narrow models in the agent stack.

Where it’s fragile

  • Tool descriptions still matter. MCP standardizes the wire format, not the quality of tool docs. A poorly-described MCP tool gets mis-selected just as often as a poorly-described local one.
  • Auth and trust. Every MCP server has the access of the user who installed it. The ecosystem is still settling on permission UIs and audit patterns.
  • Tool sprawl. Install a dozen MCP servers and you’re back at the problem — too many tools for the model to reliably pick from.

Every MCP tool’s name and description gets serialized into the model’s context as part of the function-calling schema. Install ten servers, each exposing fifteen tools, and you’ve burned 5-10K tokens of context on tool definitions before the user’s prompt is even read. Worse, the model now has to disambiguate between near-duplicate tools across servers (github_create_issue vs linear_create_issue vs gitlab_create_issue) and tool-selection accuracy drops measurably past ~30 tools in scope. The current production pattern: scope MCP servers per task with explicit allow-lists, or use a meta-tool that lazily loads server catalogs only when a sub-task touches that domain.

Go further

How does MCP differ from regular function calling?

Function calling is the contract between one model and one runtime. MCP is the contract between one runtime and any tool provider — a separate process that exposes a tool catalog over a standard protocol. MCP solves the M-by-N problem: M clients × N tool integrations becomes M + N instead of M × N.

What does an MCP server actually expose?

Three primitives: tools (functions the model can call), resources (data the model can read, like files or query results), and prompts (templates the user can invoke). A single server can expose all three; most ship just tools.

Is MCP just for Claude?

MCP was introduced by Anthropic but is an open spec — and the broader ecosystem (Cursor, Windsurf, OpenAI's Agents SDK, third-party clients) has adopted it. Any model that supports tool use can be wired to an MCP server with thin adapter code.

ZeroEntropy
The best AI teams build with ZeroEntropy models
Follow us on
GitHubTwitterSlackLinkedInDiscord