Resources let MCP servers expose data for the host application to read and use as context.
URIs
Each resource has a URI, such as file:///project/README.md or a custom scheme like crm://customers/123, plus a name, description and MIME type.
Listing and Reading
Clients can list available resources and read their contents, returned as text or binary data.
Resource Templates
Templates describe parameterised URIs, like crm://customers/{id}, so clients can construct URIs for specific items without the server listing millions of them.
Subscriptions
Servers can notify clients when a resource changes, keeping context fresh — useful for logs, dashboards or documents being edited.
When to Use Resources
- Content the user chooses to attach: a document, a schema, a record.
- Read-only context that doesn't need model-initiated actions.
Use tools instead when the model should decide to fetch something dynamically, or when an action has side effects.
Design Tips
- Give resources human-readable names; hosts often show them in pickers.
- Keep individual resources a sensible size.
- Apply the user's access permissions when listing and reading.