Turning Point Academy · MCP Engineering

Server primitives — Cheat Sheet

Curso MCP Engineering · M1


This guide explains, from scratch and taking nothing for granted, the three primitives that every MCP server exposes: tools, resources and prompts. Read it slowly: if you understand what each one is and —above all— who controls it, you've already understood the heart of Module 1.

In one sentence

An MCP server doesn't expose "just anything": it offers exactly three types of capabilities, and we call those three types primitives. A primitive is simply a basic building block of the protocol. The most important idea in the whole lesson is this: each primitive has a different controller — the model, the application or the user. That separation is no accident: it's the design.

The three primitives at a glance

PrimitiveWho controls itWhat it's forProtocol methods
ToolsThe model (the LLM decides to invoke it)Actions: run functions (create an event, send a message)tools/list, tools/call
ResourcesThe application (the host decides)Read-only data (files, images, JSON) addressed by URIresources/list, resources/read
Prompts (templates)The user (triggers them on purpose)Reusable templates of instructions, e.g. a slash command /…prompts/list, prompts/get

1. Tools — controlled by the model

A tool is a function that the server makes available and that the LLM decides to invoke on its own when it thinks it needs it. They are actions: they do something (search an API, write to a database, send a message). The model reads the list of available tools, picks one and runs it with whatever data is needed.

2. Resources — controlled by the application

A resource is read-only data: a file, an image, a JSON, a text. It runs no actions; it only delivers information to provide context. Each resource is identified by a URI (a unique address, similar to a web address).

3. Prompts (templates) — controlled by the user

A prompt is a reusable template of instructions, designed for the user to trigger on purpose. The typical case is a slash command (a command that starts with /) that assembles a ready-made message.

The key idea: three different controllers

Notice the pattern. The three primitives differ above all by who decides to use them:

Why does this separation matter so much?

Because it makes a server predictable and safe. If everything were decided by the model, you'd never know what it's going to touch or when. By splitting control, each actor has its lane: the user triggers templates when they want, the app decides what data enters as context, and the model can only act through tools someone exposed to it. That clarity of "who can do what" is exactly what makes an MCP server trustworthy.

⚠️ Watch out for tool design: exposing too many tools inflates the model's context and confuses it — less is more. How many and which to expose is a debated topic among those who build servers; it's covered in depth in an advanced module. For now, keep it on your radar.

One-line examples

Glossary

To remember

  1. A server exposes three primitives: tools, resources and prompts.
  2. What distinguishes them is who controls them: Tools = model, Resources = application, Prompts = user.
  3. Each one has its pair of methods: list what's available + use a specific one.
  4. That separation of control is on purpose: it's what makes the server predictable and safe.

Turning Point Academy · MCP Engineering Course · Module 1 · Server primitives