MCP primitives and transports
Three server primitives, and knowing which one a scenario actually calls for.
5 min read · Lesson 2 of 10 in this domain
Servers expose three kinds of thing, and choosing correctly between them is a recurring exam question. Tools are actions the model invokes — they do something. Resources are context the application reads — they are data, not verbs. Prompts are reusable templates for structuring an interaction. The tell is usually the word "available": if a scenario describes exposing what data exists so the agent can orient itself, that is a resource, and reaching for a tool means reinventing something the protocol already gives you.
- Servers expose three primitives: tools (executable functions), resources (data sources providing context), and prompts (reusable interaction templates).
- Each has discovery via
*/list, retrieval via*/get, and for tools execution viatools/call. - Discovery is a live protocol call, not a static manifest — which is why servers can notify clients when the tool list changes.
- The key judgement call: a catalogue of available data is context, so expose it as a resource. Adding a
discover_datatool to every server reinvents what the protocol already provides. - Elicitation is a client-side primitive — servers use it to request additional input or confirmation from the user.
- Two transports: stdio (local process, no network overhead, typically one client) and Streamable HTTP (HTTP POST with optional SSE, typically many clients, standard HTTP auth with OAuth recommended).
| Primitive | Side | What it is for |
|---|---|---|
| Tools | Server | Actions the model can invoke |
| Resources | Server | Context data (file contents, schemas, catalogues) |
| Prompts | Server | Reusable interaction templates |
| Elicitation | Client | Server asks the user for input or confirmation |
Tool or resource?. An agent burns three turns discovering what a documents server holds before it can query anything. The instinct is to add a list_available_datasets tool. But a catalogue of what exists is context, not an action — expose it as a resource and the client can surface it up front, so the agent orients without spending a tool call. Keep search_documents as the tool, because searching is something you do.
Reaching for a tool when the scenario describes exposing available data. That is a resource.
An agent needs to see what datasets exist before querying. Which primitive?
A catalogue of available data is context, not an action.
Which transports does MCP define?
stdio for local processes; Streamable HTTP with optional SSE for remote.
Practise this domain with 18%%-weighted questions in the study app.
Open in study appSource: MCP — Architecture overview · Independent study aid, not affiliated with or endorsed by Anthropic.