MCP Primitives
Definition
The core building blocks of the Model Context Protocol, exchanged over JSON-RPC 2.0 — three primitives servers expose (Tools, Resources, Prompts) and three clients expose (Sampling, Elicitation, Logging).
Key points
- MCP uses JSON-RPC 2.0 as its underlying RPC protocol. Each primitive type has methods for discovery (
*/list), retrieval (*/get), and in some cases execution (tools/call). - Three core primitives that servers can expose:
- Tools: "Executable functions that AI applications can invoke to perform actions (e.g., file operations, API calls, database queries)." Methods:
tools/list,tools/call. Tool objects includename,title,description,inputSchema(JSON Schema). - Resources: "Data sources that provide contextual information to AI applications (e.g., file contents, database records, API responses)." Methods e.g.
resources/list,resources/read. - Prompts: "Reusable templates that help structure interactions with language models (e.g., system prompts, few-shot examples)."
- Tools: "Executable functions that AI applications can invoke to perform actions (e.g., file operations, API calls, database queries)." Methods:
- Primitives that clients can expose (let server authors build richer interactions):
- Sampling: "Allows servers to request language model completions from the client's AI application." Keeps servers model-independent. Method:
sampling/createMessage. - Elicitation: "Allows servers to request additional information from users" (e.g. confirmation of an action). Method:
elicitation/create. - Logging: "Enables servers to send log messages to clients for debugging and monitoring purposes."
- Sampling: "Allows servers to request language model completions from the client's AI application." Keeps servers model-independent. Method:
- Cross-cutting / utility: Tasks (Experimental) — "Durable execution wrappers that enable deferred result retrieval and status tracking for MCP requests."
- Notifications: JSON-RPC 2.0 notification messages (no
id, no response expected), e.g.notifications/tools/list_changed, sent only by servers that declared"listChanged": true.
Why it matters for the exam
- Tests which primitives are server-side (Tools/Resources/Prompts) vs client-side (Sampling/Elicitation/Logging).
- The Anthropic API MCP connector supports only Tools — the other primitives are common distractors.
Common gotchas
- Sampling/Elicitation/Logging are exposed by the client, not the server — a frequent trap.
- Roots were not present as a named primitive on the fetched architecture/introduction pages — don't assume it without verifying.
- The API connector exposes Tools only; Resources and Prompts are not supported there.
See also
Sources
Referenced by
Practice questions optional · AI
Generate fresh practice questions about this concept with AI. These are not vault-verified.