Skip to content

v0.10.0: Parameterized Resources Support

Choose a tag to compare

@avrabe avrabe released this 15 Aug 04:25
· 42 commits to main since this release

πŸš€ New Features

Parameterized Resource Support

  • 🎯 URI Template Processing: Added support for parameterized resources using URI templates (RFC 6570)
  • ⚑ High-Performance Routing: Implemented matchit-based URI routing with radix trie for efficient resource resolution
  • πŸ”§ Automatic Parameter Extraction: Resources can now extract parameters from URIs like timedate://current-time/{timezone}
  • πŸ“ Enhanced Macro Support: Updated #[mcp_resource] attribute to handle parameterized URIs seamlessly

Technical Improvements

  • πŸ› οΈ Router Generation: Static router generation with OnceLock for optimal performance
  • πŸ”€ Pattern Matching: Convert URI templates to matchit patterns for precise routing
  • βš™οΈ Parameter Mapping: Automatic extraction and mapping of URI parameters to method arguments

πŸ› Bug Fixes

  • βœ… Resource Delegation: Fixed critical bug in mcp_server macro where resources weren't properly delegated
  • 🎨 Code Quality: Resolved clippy warnings and formatting issues
  • πŸ”§ Dependency Updates: Added matchit dependency for URI routing

πŸ“– Examples

Resources can now handle dynamic URIs:

#[mcp_resource("timedate://current-time/{timezone}")]
pub async fn get_current_time(&self, timezone: String) -> Result<TimeResponse> {
    // timezone parameter is automatically extracted from the URI
}

πŸŽ‰ What's Next

  • Type-safe parameter conversion (planned for future release)
  • Enhanced parameter validation
  • Support for complex URI patterns

Full Changelog: v0.9.1...v0.10.0