v0.10.0: Parameterized Resources Support
π 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
OnceLockfor 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_servermacro 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