APIs connect code.
MCP connects models.
A standard API is a fixed request to an endpoint you already know. The Model Context Protocol gives a language model a standard way to discover tools and call them at runtime. This is the blueprint - poke every part of it.
Flow simulators
Watch a request travel. Same goal, two paths.
Press the buttons. Left: a plain HTTP call goes straight to a known endpoint. Right: an MCP exchange where a model handshakes, lists tools, then calls one - over JSON-RPC.
Standard API
REST over HTTPS · stateless
hardcoded endpoint · the app already knows the address
Request
const res = await fetch( "https://api.example.com/api/weather?city=Lisbon");const data = await res.json();Response
{ "city": "Lisbon", "tempC": 22, "condition": "Sunny", "humidity": 0.41}› ready · press send request
Model Context Protocol
JSON-RPC 2.0 · Stdio / SSE · stateful
Prompt
Synthesized answer
The model answers here once the tool returns.
› ready · pick a prompt and ask
Comparison matrix
Where they actually differ. Tap a row to expand.
Six dimensions, side by side. MCP doesn't replace APIs - it sits a layer up and gives a model a standard way to reach them.
With an API you find endpoints by reading documentation and baking the URL into your code. An MCP client asks the server what it can do during the session, so new tools appear without a code change.
A REST API has no concept of a language model. MCP is built so an LLM can read tool schemas, decide what to call, and receive structured results back into its context.
Every API invents its own routes and payloads. MCP standardizes the envelope: the same method/params/result structure works across every server.
HTTP calls are independent. MCP opens a connection, negotiates capabilities once with initialize, then reuses that session for many messages.
When an API changes you usually ship a new version and update clients. An MCP server can notify the client that its tool list changed, and the client refetches.
Reach for an API when both ends are known software talking a stable contract. Reach for MCP when you want a model to use a growing set of tools through one protocol.
Terminal playgrounds
Run the commands. Output streams in, highlighted.
Pick a command and send it. The API terminal speaks REST/JSON; the MCP terminal speaks JSON-RPC 2.0. Notice the API has no way to ask what's available - MCP does.
mcp › pick a command below, then press send
Discovery, as a game
Finding tools the hard way vs. plugging in.
The core difference made playable. With an API you have to already know which door opens. With MCP, you plug in once and the tools announce themselves.
Door Discovery
API · you must know the endpoint
One of these endpoints exists. The server won't tell you which. Knock until you guess right.
0 wrong guesses · keep knocking
MCP Plug & Play
MCP · tools announce themselves
Plug the model into the server once. It discovers every tool, resource, and prompt on its own.
Architecture & protocol
Two stacks, top to bottom. Hover a layer.
An API is a fixed contract your code calls over HTTP. MCP is a session: a uniform JSON-RPC protocol over a chosen transport, with a model driving it.
A standard API
request / response- 05CallerYour code, written ahead of time
- 04ContractOpenAPI / hardcoded routes
- 03PayloadJSON, any shape you design
- 02StyleREST or GraphQL
- 01TransportHTTP / HTTPS
The Model Context Protocol
session- 05CallerAn LLM that discovers + decides at runtime
- 04CapabilitiesTools · Resources · Prompts
- 03ArchitectureClient ↔ Server, stateful session
- 02ProtocolJSON-RPC 2.0 messages
- 01TransportStdio · SSE / Streamable HTTP
What an MCP server actually offers
three pillarsThe one-line version
APIs are how software talks. MCP is how models reach that software.
MCP doesn't replace APIs - it sits a layer up, giving a model a standard way to discover and call them. Often an MCP tool is just a thin wrapper around a normal API.
Reach for an API
- Two systems with a known, stable contract
- You control both ends, or read the docs
- Stateless calls, predictable shapes
Reach for MCP
- A model needs to use many tools, safely
- Tools should be discoverable at runtime
- One uniform protocol across every server
Built as a single blueprint about a protocol. Press the simulators again - the order of those JSON-RPC calls is the whole idea.