- Tools are callable actions, resources are addressable context, and prompts are reusable templates.
- Their control models differ across model, application, and user decisions.
- Measure discovery separately from use and completion.
MCP servers expose three core primitives: tools, resources, and prompts. They all make useful context or capabilities available to a host, but they are not interchangeable. The most important difference is control: tools are generally model-controlled, resources are application-controlled, and prompts are user-controlled.
Tools are callable actions
A tool has a name, description, and input schema. A client can discover the catalog and request a tool call with structured arguments. Tools may read data, transform it, or take an external action. Because a tool can have side effects, its authorization, validation, idempotency, and error behavior deserve the same attention as any other action API.
Resources are addressable context
A resource is identified by a URI and represents data that a server makes available to a client or host. It might be a file, schema, record, document, or another domain object. Resource templates can describe URI patterns. The host application decides how resources are presented and when their contents become model context.
Prompts are reusable templates
Prompts are predefined interaction templates that a user can choose. A prompt can include arguments and can assemble a useful starting context for a task. The prompt primitive is not the same as a hidden system prompt. It is a server-provided template offered through the protocol and controlled by the host's user experience.
The control model matters
- Model-controlled tools should have narrow scope, clear descriptions, and safe defaults.
- Application-controlled resources should respect the host's context and consent decisions.
- User-controlled prompts should be discoverable, labeled, and explicit about their expected inputs.
How to choose a primitive
Ask what the capability represents. If it changes a system or performs a computation, it is likely a tool. If it is data that can be fetched or subscribed to, it is likely a resource. If it is a reusable way to start a task, it is likely a prompt. A server can use more than one primitive for the same domain, but each should have a clear contract.
What to measure
A server team should separate primitive discovery from use. A tool can be listed often but called rarely. A resource can be fetched without leading to a completed workflow. A prompt can be selected but never result in a server operation. Instrumentation should preserve those distinctions instead of collapsing every interaction into one activity count.
Are tools the only MCP primitive agents use?
No. Tools, resources, and prompts are all part of the MCP server feature set. The host application controls how each is exposed and used.
Can a resource change?
Yes. Servers can support resource subscriptions and list-change notifications when they advertise the relevant capabilities.
About the publisher
TrackMCP, also written Track MCP
TrackMCP helps teams understand which clients connect to their MCP servers, which tools agents use, and where workflows fail. Learn more about Track MCP.
See this on your own server
TrackMCP turns your MCP server's calls into adoption, workflows, and outcomes. One line to install.