What are prompts in MCP, and what problem do they solve?

4 minbeginnermcppromptsfundamentals

Quick Answer

A prompt in MCP is a named, reusable, parameterized message template a server exposes, meant to be explicitly selected by a user — commonly surfaced in a host's UI as a slash command or menu item, e.g. /summarize-pr number=482. They solve the problem of encoding a domain expert's best-practice interaction pattern once, on the server, instead of every user having to remember and hand-type the right multi-step instructions or the right framing for a task the server author already understands well (like "here's exactly how you should ask an LLM to review a pull request against our team's standards"). Unlike tools (model-controlled) and resources (application-controlled), prompts are explicitly user-controlled — a person deliberately invokes one rather than the model deciding to on its own.

Detailed Answer

Prompts fill a gap tools and resources don't. They let the server author package expertise about how to ask for something, not just data or actions to ask for.

A prompt from prompts/list

{
  "name": "summarize-pr",
  "description": "Summarize a pull request's changes and flag potential risks.",
  "arguments": [
    {"name": "pr_number", "description": "Pull request number", "required": true},
    {"name": "focus", "description": "Optional area to focus on, e.g. 'security'", "required": false}
  ]
}

Why this is a distinct primitive from tools

A tool called summarize_pr would let the model decide, mid-conversation, to summarize a PR. That's useful, but the exact instructions and framing baked into the request are whatever the model improvises from the tool's description. A prompt instead lets the server ship a carefully engineered template — one that instructs the model to check for missing tests, flag breaking API changes, and format output to match the team's review checklist, say. A user explicitly invokes that exact, curated interaction, instead of relying on the model to reconstruct it from a short tool description every time.

Where this shows up in practice

In a host with slash-command support, a user might type /summarize-pr 482. The host resolves that to a prompts/get call against the server that registered summarize-pr. It retrieves the fully rendered messages and injects them into the conversation as if the user had typed that much longer, more carefully worded prompt themselves.

The underlying idea

Prompts turn a server author's expertise about how to phrase a request into something reusable and shareable. No end user has to independently discover or write good prompts for a given task.

Related Resources