Skip to main content

resource

Attribute Macro resource 

Source
#[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 description
  • mime_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))
}