Skip to content

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 include name, 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)."
  • 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."
  • 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