MCP Review

Core MCP Server Primitives

Tools, resources and prompts compared: Claude controls tools, our app controls resources, the user controls prompts.

Each primitive is controlled by a different part of your application stack.

ToolsResourcesPrompts
Controlled byThe model (Claude)The app (your code)The user
Who decides when it’s usedClaude decides to call it during a taskYour code decides when to fetch it and what to do with the dataThe user starts it with a button, a menu item or a slash command
What it’s forGiving Claude new things it can doGetting data into the app, for the UI or as extra contextReady-made workflows the user can run when needed
Use it when you…want Claude to be able to do somethingneed data shown in the UI or added to a promptwant to offer the user tested, repeatable workflows
Course projectread_doc_contents, edit_documentDocument list for autocomplete, and document content added to promptsPredefined commands the user picks
Example in Claude’s appRunning JavaScript to work out √3“Add from Google Drive”, where the app chooses which documents to showWorkflow buttons under the chat input
ServesThe modelThe appThe user

Choosing the Right Primitive

Quick decision guide:

  • Need to give Claude new capabilities? -> Use tools
  • Need to get data into your app for UI or context? -> Use resources
  • Want to create predefined workflows for users? -> Use prompts
docs