Why does MCP have a 'prompt' primitive separate from tools and resources?
Prompts are user-invoked reusable templates; tools are model-invoked; resources are host-pulled. Each primitive owns a distinct invocation pattern, and overloading one for another's job fights the protocol.
Imagine the AI app has a small menu of pre-written request templates, like recipe cards. Each card has a name (like /code-review or /summarize-meeting) and a few blanks the user fills in. When the user picks a card and fills in the blanks, the app sends a polished request to the model. The user never needs to remember the perfect wording; the template handles that. MCP prompts are these cards, but instead of the app inventing them, they come from MCP servers. A GitHub server can ship a /pr-review card. A Notion server can ship a /weekly-summary card. The user picks them from the same menu, and any MCP-aware app reads them the same way. The key difference from tools is that the model does not pick prompts; the user does.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
MCP defines three primitive families: tools, resources, and prompts. Each maps to a different invocation pattern and a different actor in the system. Of the three, prompts are the most easily misunderstood because the word 'prompt' already carries heavy meaning in LLM contexts. In MCP, it has a specific technical definition: a reusable, parameterized template the server ships, that the user invokes by name through a host UI affordance.
This explanation walks through why the third primitive exists, what it looks like at the protocol level, how its rendered output differs from a flat string, how it contrasts with system prompts and tools, and where prompts add the most value in real deployments.
The three-way invocation split
MCP's three primitive families exist because three distinct invocation patterns matter enough to standardize separately.
Tools are model-invoked. The model reads tool descriptions during inference and emits structured function calls. The host routes the call through the client to the server. Tools may have side effects (write a file, send a message, run a query). The model decides when and which tool to call.
Resources are host-pulled. The host enumerates available resources (identified by URI) and injects their content into the conversation. Resources are read-only. The host decides which resources to include.
Prompts are user-invoked. The user picks a named template from a slash-command menu, supplies arguments, and the host fetches a rendered message list from the server. The model never picks a prompt autonomously; it sees the rendered result as a high-quality structured request.
The split exists because each invocation pattern produces a different UX. Collapsing prompts into tools would mean the model could invoke workflow templates without user intent. Collapsing prompts into resources would lose the parameterized, rendered-output shape. Keeping them separate gives each actor (model, host, user) a clean primitive to work with.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- GitHub MCP server: a `pr-review` prompt that takes a PR number and renders a structured review request with diff and context.
- Postgres server: an `explain-query` prompt that takes a SQL statement and renders a request asking the model to explain the query plan.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow is an MCP prompt different from a system prompt?
A system prompt is static host configuration: a fixed instruction set the host sends at the start of every session. An MCP prompt is a user-invoked template a server ships: the user picks it by name, supplies arguments, and the server renders a message list. They coexist; the MCP prompt does not replace the system prompt, it adds a per-invocation structured request on top of it.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Confusing MCP prompts with system prompts or with tools. MCP prompts are user-invoked reusable templates; tools are model-invoked functions; system prompts are static host configuration.
60 second bullets to scan on the way to the call.
State the three-way invocation split: tools (model), resources (host), prompts (user).
Name the two JSON-RPC methods that operate on prompts (prompts/list, prompts/get).
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.