← All questions
Agent Protocols & ToolsMedium· MCP (Model Context Protocol)

What are the three core primitives an MCP server can ex...

An MCP server can expose three distinct kinds of capability, and each one is controlled by a different party in the system:

  • Tools — functions the model itself can decide to call, like run_query or send_email. This is model-controlled: the model looks at the situation and chooses whether and when to invoke it.
  • Resources — data the application decides to load as context, like a file’s contents or a database’s schema. This is application- controlled: the host decides what gets pulled in, not the model mid-conversation.
  • Prompts — reusable templates for a specific workflow, like an “analyze this dataset” starting prompt. This is user-controlled: a person selects which one to invoke, rather than the model reaching for it on its own.

The value of splitting these three apart rather than treating everything as “a tool” is the control it gives you over exactly what the model can act on versus what it merely gets shown versus what a human explicitly initiates — a database server, for instance, might expose a query tool the model can call freely, a schema resource the app always loads for context, and an “analyze data” prompt template a user picks from a menu, each governed by a different actor for good reason.

Code playground (Python)