Tools are for actions, resources are for context the model reads, and prompts are reusable workflows that structure multi-step behaviour. A practical rule is to ask whether the model is acting, knowing, or following a standard procedure. That choice determines the primitive that will be easiest for the agent to use.
How MCP server design separates actions, context, and workflows
In mcp server design, the difference is functional rather than cosmetic. Tools are the actuation layer, resources are the read-only context layer, and prompts are reusable guidance for orchestrating multi-step behaviour. That separation helps keep the model’s interface predictable: do not make a read-only artifact do an action’s job, or an action primitive do a context primitive’s job.
Seen practically, the design question is whether the server should expose a capability the model can invoke, information the model can inspect, or a structured procedure the model can follow. MCP Security Guide is a useful companion here because it shows how those primitives map to real server behaviour, authorization, and credential handling.
That distinction also shapes implementation clarity. If you expose something as a tool, the client expects an action with side effects and explicit permission boundaries. If you expose it as a resource, the client expects retrieval, not execution. If you expose it as a prompt, you are giving the model a reusable structure, not a data source and not a callable operation.
Why the wrong primitive creates design friction
Misclassifying the primitive usually shows up as confusing client behaviour. A tool disguised as a resource invites the model to infer action from text, which makes intent less explicit and can blur authorization boundaries. A resource disguised as a tool can lead to awkward user flows because the model is forced to “call” something that should simply be read. A prompt that is treated like a tool often becomes brittle because workflows are not execution endpoints.
This matters most when the server is used by agents that chain steps automatically. The better the primitive matches the task, the easier it is for the agent to choose it correctly and the less prompt engineering you need to compensate for an awkward interface. That is why a good MCP design keeps side effects, retrieval, and workflow guidance distinct rather than trying to collapse them into one abstraction.
The practical payoff is that the server becomes easier to reason about for both developers and operators. You can test tool permissions, inspect resource exposure, and review prompt logic separately instead of untangling a single mixed-purpose endpoint. That separation also makes policy decisions more legible when the same MCP server is reused across multiple clients or agents.
How to choose between tools, resources, and prompts
The simplest selection test is to ask what the model must do with the capability. Use a tool when the model must take an action, change state, or request a side effect. Use a resource when the model only needs to read facts, schemas, documents, or other context. Use a prompt when you want a reusable procedure that standardises how the model should behave across repeated tasks.
In other words, a tool is for “act,” a resource is for “know,” and a prompt is for “follow this process.” That rule is especially helpful when designing around agent workflows, because it reduces accidental overexposure. Model Context Protocol authorization specification is the clearest external reference for the trust and token model behind these design choices.
When the boundary is still unclear, prefer the least powerful primitive that satisfies the use case. If the agent only needs context, do not make it call a tool. If it needs a reusable instruction sequence, do not hide that inside a fake resource. If it needs an action, do not express it as an indirect prompt and hope the model behaves like a deterministic workflow engine.
Standards & Framework Alignment
This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.
OWASP Agentic AI Top 10 and OWASP API Security Top 10 address the attack and risk surface, while NIST SP 800-53 Rev 5 sets the governance and control requirements practitioners need to meet.
| Framework | Control / Reference | Relevance |
|---|---|---|
| OWASP Agentic AI Top 10 | ASI02 — Tool Misuse | MCP tools are the agent action layer and can be abused if mischosen. |
| ASI03 — Identity & Privilege Abuse | MCP server choices affect what an agent can do and with which authority. | |
| Recommendation — Classify side-effecting MCP capabilities as tools and bound their use to explicit intent. Separate readable context from privileged actions and enforce least privilege on tool calls. | ||
| NIST SP 800-53 Rev 5 | AC-6 — Least Privilege | Choosing the right MCP primitive helps restrict unnecessary authority and exposure. |
| CM-7 — Least Functionality | Exposing only the needed primitive reduces attack surface in MCP server design. | |
| Recommendation — Limit MCP tool permissions to the minimum needed for the action. Expose only the MCP primitives required for the use case. | ||
| OWASP API Security Top 10 | API5 — Broken Function Level Authorization | MCP tools are callable functions and need explicit authorization boundaries. |
| Recommendation — Authorize each MCP tool as a distinct function before allowing invocation. | ||
Practitioner Guidance
What to verify: Check whether each MCP capability has a single dominant purpose. If the object returns data, keep it a resource; if it causes side effects, keep it a tool; if it standardises repeated behaviour, keep it a prompt.
Common mistake: The most common design error is using prompts to simulate actions or using tools to shuttle context. That makes behaviour harder to audit and harder for agents to select correctly.
What good looks like: A well-designed MCP server makes the model’s next choice obvious from the primitive itself, so the client can act with minimal ambiguity and the operator can reason about permissions, input shape, and expected outcome separately.
Practitioner takeaway: The best MCP server designs preserve intent at the interface boundary, because a clear primitive is easier to use, easier to secure, and easier for agents to apply consistently.
Related resources from NHI Mgmt Group
- How should teams design MCP server governance when agents are calling downstream tools in production?
- What happens when resources and tools are not clearly separated in an MCP server?
- How should organizations prioritize security in their MCP implementations?
- Why do MCP tools need server-side policy checks instead of token-only controls?
Deepen Your Knowledge
Free weekly newsletter
Subscribe to the NHI & AI Identity Journal
The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.
Bonus 33% off our NHI Course when you subscribe.
Reviewed and updated by the NHIMG editorial team on October 7, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org