MCP servers expose three primitives: tools, resources, and prompts. Tools are actions the AI model decides to invoke, such as send_email or fetch_sales_data, and they require user permission. Resources are read-only data the application supplies, like documents or database results. Prompts are reusable instruction templates the user activates to shape AI behavior.
What you will be able to do
- Identify whether a task needs a tool, a resource, or a prompt using the model-controlled, application-controlled, and user-controlled distinction.
- Decide when a workflow step needs explicit user permission (tools) versus when it can run automatically (resources).
- Read a tool's JSON Schema definition to see what parameters it accepts, which are required, and what types they expect.
- Design a multi-step workflow that chains a resource fetch, a prompt template, and a tool call into one flow.
- Explain to a teammate why an MCP prompt behaves differently from a hardcoded system prompt.
Before you start
- Understanding of the MCP Host, Client, Server architecture covered in the previous lesson.
- Basic familiarity with JSON Schema concepts such as parameters, required fields, and types.
- An MCP-compatible AI application to test tools, resources, and prompts against once you build a server.
Reference
| Primitive | Who controls it | Can modify data | Permission required | Example | Use it when |
|---|---|---|---|---|---|
| Tool | The AI model decides when to invoke it | Yes | Yes, the host asks the user before running it | send_email(), fetch_sales_data(), create_meeting() | The task has a real-world side effect or needs real-time data |
| Resource | The application or user selects it | No, strictly read-only | Generally not, safe to access automatically | Policy documents, database query results, file contents | The AI needs context or background information to answer accurately |
| Prompt | The user activates it by choosing a mode | No, guides behavior only | No | "Code Review Mode", "Summarization Template" | You want consistent AI behavior repeated across sessions |
Common errors and fixes
| What goes wrong | The fix |
|---|---|
| You try to have the AI modify data through a Resource | Resources are read-only by design and cannot make changes. Use a Tool for any action that writes, sends, or deletes something |
| A Tool runs without any confirmation step | Since tools can send emails, delete files, or post to social media, the host should always ask "Allow it?" before running one, keeping the user in control |
| MCP prompts get treated the same as hardcoded system prompts | System prompts are baked into the application, so changing them means updating the app. MCP prompts live on the server, so updating one instantly benefits every connected AI application |
| A tool is defined without a clear JSON Schema | Without a schema describing the inputs, required fields, and types, the AI model has no reliable way to know how to call the tool correctly |
Read the full walkthrough
The complete lesson, with screenshots and any downloads, is published on Substack as part of MCP Masterclass: Connect AI to Everything.
More in this section
Continue the course
Browse all lessons in the MCP Masterclass: Connect AI to Everything course, or subscribe to the GenAI Unplugged newsletter to get new lessons in your inbox.