--- title: resource sidebarTitle: resource --- # `fastmcp.resources.resource` Base classes and interfaces for FastMCP resources. ## Classes ### `ResourceContent` Wrapper for resource content with optional MIME type and metadata. Accepts any value for content - strings and bytes pass through directly, other types (dict, list, BaseModel, etc.) are automatically JSON-serialized. **Methods:** #### `to_mcp_resource_contents` ```python to_mcp_resource_contents(self, uri: AnyUrl | str) -> mcp.types.TextResourceContents | mcp.types.BlobResourceContents ``` Convert to MCP resource contents type. **Args:** - `uri`: The URI of the resource (required by MCP types) **Returns:** - TextResourceContents for str content, BlobResourceContents for bytes ### `ResourceResult` Canonical result type for resource reads. Provides explicit control over resource responses: multiple content items, per-item MIME types, and metadata at both the item and result level. **Methods:** #### `to_mcp_result` ```python to_mcp_result(self, uri: AnyUrl | str) -> mcp.types.ReadResourceResult ``` Convert to MCP ReadResourceResult. **Args:** - `uri`: The URI of the resource (required by MCP types) **Returns:** - MCP ReadResourceResult with converted contents ### `Resource` Base class for all resources. **Methods:** #### `from_function` ```python from_function(fn: Callable[..., Any], uri: str | AnyUrl, name: str | None = None, title: str | None = None, description: str | None = None, icons: list[Icon] | None = None, mime_type: str | None = None, tags: set[str] | None = None, annotations: Annotations | None = None, meta: dict[str, Any] | None = None, task: bool | TaskConfig | None = None) -> FunctionResource ``` #### `set_default_mime_type` ```python set_default_mime_type(cls, mime_type: str | None) -> str ``` Set default MIME type if not provided. #### `set_default_name` ```python set_default_name(self) -> Self ``` Set default name from URI if not provided. #### `read` ```python read(self) -> str | bytes | ResourceResult ``` Read the resource content. Subclasses implement this to return resource data. Supported return types: - str: Text content - bytes: Binary content - ResourceResult: Full control over contents and result-level meta #### `convert_result` ```python convert_result(self, raw_value: Any) -> ResourceResult ``` Convert a raw result to ResourceResult. This is used in two contexts: 1. In _read() to convert user function return values to ResourceResult 2. In tasks_result_handler() to convert Docket task results to ResourceResult Handles ResourceResult passthrough and converts raw values using ResourceResult's normalization. #### `to_mcp_resource` ```python to_mcp_resource(self, **overrides: Any) -> SDKResource ``` Convert the resource to an SDKResource. #### `key` ```python key(self) -> str ``` The globally unique lookup key for this resource. #### `register_with_docket` ```python register_with_docket(self, docket: Docket) -> None ``` Register this resource with docket for background execution. #### `add_to_docket` ```python add_to_docket(self, docket: Docket, **kwargs: Any) -> Execution ``` Schedule this resource for background execution via docket. **Args:** - `docket`: The Docket instance - `fn_key`: Function lookup key in Docket registry (defaults to self.key) - `task_key`: Redis storage key for the result - `**kwargs`: Additional kwargs passed to docket.add() ### `FunctionResource` A resource that defers data loading by wrapping a function. The function is only called when the resource is read, allowing for lazy loading of potentially expensive data. This is particularly useful when listing resources, as the function won't be called until the resource is actually accessed. The function can return: - str for text content (default) - bytes for binary content - other types will be converted to JSON **Methods:** #### `from_function` ```python from_function(cls, fn: Callable[..., Any], uri: str | AnyUrl, name: str | None = None, title: str | None = None, description: str | None = None, icons: list[Icon] | None = None, mime_type: str | None = None, tags: set[str] | None = None, annotations: Annotations | None = None, meta: dict[str, Any] | None = None, task: bool | TaskConfig | None = None) -> FunctionResource ``` Create a FunctionResource from a function. #### `read` ```python read(self) -> str | bytes | ResourceResult ``` Read the resource by calling the wrapped function. #### `register_with_docket` ```python register_with_docket(self, docket: Docket) -> None ``` Register this resource with docket for background execution. FunctionResource registers the underlying function, which has the user's Depends parameters for docket to resolve.