F3.2 F3

Tools, Resources, and Prompts: MCP's Three Primitives

MCP defines three primitives — three types of capabilities that a server can expose to AI applications. Each serves a different purpose.

Tools: execute actions

Tools are the action primitive. The client invokes a tool, the server executes an operation, and a result comes back. Creating a GitHub issue, querying a database, sending a Slack message — these are all tool operations.

Tools flow from client to server: the AI application initiates, the server performs. They may have side effects (creating, modifying, deleting things in the external system).

Resources: browse data

Resources are the data primitive. They let the AI application browse what’s available in an external system without taking action. Listing open issues, viewing a project’s file structure, browsing database schemas — these are resource operations.

Resources flow from server to client: the server exposes a catalog of available content, and the client reads items from it. The key difference from tools: resources are read-only. Browsing a list of issues doesn’t create, modify, or delete anything.

Resources reduce exploratory tool calls. Instead of the model blindly calling search_issues with various parameters to discover what exists, it can browse the resource catalog first, see what’s available, and then make targeted tool calls.

Prompts: template text

Prompts are pre-defined prompt templates that servers can provide. They’re not executable code — they’re structured text that the AI application can use as starting points for interactions. Think of them as canned workflows or recommended approaches that the server suggests.

This is the least intuitive primitive. Prompts don’t do anything on their own. They provide text that shapes how the AI application interacts with the server’s tools and resources.

The distinction that matters most

Tools vs Resources is the question you’ll see most often. The dividing line: does it change something in the external system? If yes, it’s a tool. If it’s purely reading/browsing, it’s a resource.


One-liner: Tools execute actions (may have side effects), Resources browse data (read-only catalog), Prompts provide templates — the tool vs resource distinction is about action vs observation.