#[resource]Expand description
Marks an async function as an MCP resource handler and generates a companion
{fn_name}_resource_def() function that returns a mcp::ResourceDef.
§Attributes
uri = "..."— Resource URI (required). Use{variable}for templates.name = "..."— Human-readable name (required)description = "..."— Optional descriptionmime_type = "..."— Optional MIME type (e.g., “application/json”)
§Examples
Static resource:
ⓘ
use mcp_kit::prelude::*;
#[resource(uri = "config://app", name = "App Config", description = "Application configuration")]
async fn app_config(_req: ReadResourceRequest) -> McpResult<ReadResourceResult> {
Ok(ReadResourceResult::text("config://app", r#"{"version": "1.0"}"#))
}Template resource:
ⓘ
use mcp_kit::prelude::*;
#[resource(uri = "file://{path}", name = "File System")]
async fn read_file(req: ReadResourceRequest) -> McpResult<ReadResourceResult> {
let path = req.uri.trim_start_matches("file://");
let content = tokio::fs::read_to_string(path).await?;
Ok(ReadResourceResult::text(req.uri.clone(), content))
}