How MCP resources, tools, and prompts split the work

All three can feed outside information into a model, but they differ in how they are called and whether they have side effects. Mixing them turns a read-only catalog into a button that changes data.

Tools are functions the model calls: arguments, a result, maybe a side effect. Resources are readable entries the server exposes, like a file or a record, for browse and cite. Prompts are ready-made conversation starters for a common task.

Listing a repo, fetching a doc or showing a table should be a resource or a clearly read-only tool. Opening a ticket, pushing a commit or sending mail is a tool, and a person should confirm. A prompt should not smuggle write arguments; it should only set the steps.

Some servers implement all three and look complete, then the model picks the wrong one. In the client, keep the resource panel and the tool list apart. Stable references belong as resources; judgment and actions belong as tools.

See MCP vs skills and when not to use MCP on this site. If one local command finishes the job, do not wrap it as a resource plus a tool.