Skip to main content

What Are MCP Resources?

Resources are data that an MCP server exposes for reading. Each resource has a URI and can include a MIME type. Unlike tools, which execute code, resources represent data that a client can fetch, such as files, records, or MCP App HTML.
This page follows the core MCP 2025-11-25 specification. MCP Apps uses the same resource protocol and adds the ui:// URI scheme, an HTML profile MIME type, and UI metadata. See MCP 2026-07-28 for MCP Apps for the newer caching and subscription model.

Declare the Resources Capability

A server that exposes resources declares the resources capability during initialization:
  • subscribe means clients can subscribe to resource updates.
  • listChanged means the server can notify clients when the available resource list changes.

Discover Resources with resources/list

The client calls resources/list to discover available resources. This operation supports opaque cursor pagination, so clients must continue while the response contains nextCursor.
Each resource can declare:

Use URIs and URI Templates

Servers can use any URI scheme they know how to read. MCP Apps reserves ui:// for View resources. Parameterized resources use URI templates. Servers list them with resources/templates/list, which also supports cursor pagination. A template such as weather://forecast/{city} describes a family of readable resource URIs without listing every possible city.

Read Resources with resources/read

The client calls resources/read with a resource URI. The server returns one or more content items. Text resources use text; binary resources use base64-encoded blob.

Add Resource Annotations

Resources, resource templates, and resource content can carry annotations: Annotations are hints. Clients decide whether to filter, rank, or display resources based on them.

Subscribe to Changes

When the server advertises subscribe: true, clients can send resources/subscribe for a URI. The server then sends notifications/resources/updated when that resource changes. Clients stop updates with resources/unsubscribe. When the server advertises listChanged: true, it can send notifications/resources/list_changed after resources are added or removed. The client should call resources/list again instead of assuming what changed.

Deliver MCP App Views

MCP Apps requires the MIME type text/html;profile=mcp-app, exported as RESOURCE_MIME_TYPE, for HTML Views. Resource content can include _meta.ui for CSP, iframe permissions, rendering preferences, and stable sandbox origins:
UI-only resources may be omitted from resources/list because MCP Apps hosts primarily discover them through the calling tool’s _meta.ui.resourceUri. The resource must still exist, and the host must be able to fetch that exact URI with resources/read.

registerAppResource

Register HTML resources on the MCP server.

Resource _meta

Configure CSP, permissions, domain, and rendering metadata.

Core MCP Resources Specification

Read the normative resource protocol, templates, subscriptions, and annotations.