How does the MCP Prompts primitive differ from the Tools primitive in terms of who controls invocation?
Prompts are user-initiated templates the host surfaces in its UI, often as slash-commands; Tools are model-initiated functions the LLM decides to call on its own.
Picture a kitchen. Tools are the appliances the chef reaches for whenever a recipe needs them; the chef decides, in the moment, to grab the blender. Prompts are the printed recipe cards pinned to the wall: a person walks up, picks the card they want, fills in the blanks like how many servings, and hands it to the chef to start. With MCP, the LLM is the chef and the user is the person at the wall. Tools get grabbed by the model when it judges they're useful. Prompts get chosen by the user from a menu the app shows them, usually as a slash-command they type. Both can take parameters, but who reaches first is completely different.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
3 min: state the initiator axis, lay out the three control rails, connect prompts to slash-commands, then knock down each distractor.
| Aspect | Tools | Prompts |
|---|---|---|
| Initiator | Model-controlled, LLM decides | User-controlled, person selects |
| Where it surfaces | Model's tool list in context | Host UI, often a slash-command |
| Discovery method | tools/list | prompts/list |
| Invocation method | tools/call | prompts/get |
| Parameters | Yes, model supplies arguments | Yes, user supplies arguments |
| Side effects | Often side-effectful actions | Returns messages to seed the chat |
Real products, models, and research that use this idea.
- Claude Code surfaces MCP server prompts as slash-commands the user types to launch a parameterized workflow on demand.
- Claude Desktop renders a connected server's prompts in a template picker, distinct from the tools the model calls itself.
- The official MCP spec defines prompts/list and prompts/get with arguments, confirming prompts are parameterized user-driven templates.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy does MCP deliberately keep prompts on the user rail instead of letting the model select them?
QWalk through the JSON-RPC flow when a user fires a slash-command backed by an MCP prompt.
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Assuming the LLM picks Prompts the way it picks Tools. Prompts are user-controlled and surfaced in the host UI; the model never auto-selects one.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.