MCP Tools vs. Resources: Actions and Data in the MCP Protocol
4 min read
MCP servers can expose two kinds of capabilities: tools and resources. Tools are actions — the AI calls them to do something. Resources are data — the AI reads them to know something. Most servers today focus on tools, but resources are powerful for read-heavy use cases.
Tools: what the AI can do
A tool is like a function call. The AI sends arguments; the server executes logic and returns a result. Tools can have side effects — they can write to a database, send a message, or modify a file. Examples: execute_query, create_issue, send_slack_message, navigate_browser.
Resources: what the AI can read
A resource is a read-only data endpoint addressed by a URI. The AI requests a resource by URI; the server returns its content (text, JSON, binary). Resources have no side effects. Examples: file://path/to/file, postgres://mydb/public/users (table schema), mem://key (a memory entry).
Prompts
MCP also defines a third capability: prompts. A prompt is a pre-defined message template the AI client can offer to the user as a starting point. Prompts are less commonly implemented than tools, but some servers use them to expose common query patterns.
When to use tools vs. resources
If you want the AI to take an action (write, execute, send), use tools. If you want the AI to read static or semi-static data to inform its response (configuration, schemas, documentation), resources can work well. Most real-world servers combine both.
Frequently Asked Questions
Can resources be dynamic?
Yes. Resources are fetched on demand, so a resource handler can query a live database or API. The 'read-only' constraint is semantic — resources shouldn't cause side effects, but their data can change.
Do all MCP clients support resources?
Not all clients fully implement resource discovery and subscription. Tools have broader client support today. Check your client's documentation for resource support status.
Related Guides
Ready to install your first server?
Browse MCP Servers