Resources
Resources in MCP provide a way to expose data, files, and content that clients can discover and read. Unlike tools which execute functions, resources represent accessible content with URIs.Understanding Resources
Resources are:- Discoverable: Clients can list and browse available resources
- Readable: Content can be retrieved via URI
- Typed: Each resource has a MIME type
- Annotated: Metadata helps clients understand resource purpose
Resource Types
Static Resources
Fixed content that doesn’t change based on parameters:Dynamic Resource Templates
Resources with parameterized URIs for dynamic content:URI Schemes
Choose meaningful URI schemes for your resources:MIME Types
Specify appropriate MIME types for content:Resource Annotations
Provide metadata to help clients use resources effectively:Implementing Resources
Text Resources
Simple text-based content:JSON Resources
Structured data resources:Binary Resources
Resources with binary content:Multiple Content Items
Resources can return multiple content items:Dynamic Resource Templates
Basic Template
Templates with single parameter:Multiple Parameters
Templates with multiple parameters:Dynamic MIME Types
Determine MIME type based on content:Advanced Patterns
Caching Resources
Implement caching for expensive operations:Streaming Large Resources
For large resources, consider chunking:Computed Resources
Resources that aggregate or compute data:Resource Versioning
Support multiple versions of resources:Error Handling
Handle errors gracefully in resource callbacks:Testing Resources
Unit Testing
Testing with Inspector
- Start server with inspector
- Navigate to Resources tab
- Browse available resources
- Click to read resource content
- Verify content and MIME type
Best Practices
- Clear URI Schemes: Use intuitive, consistent URI patterns
- Appropriate MIME Types: Always specify correct MIME types
- Useful Annotations: Provide audience and priority metadata
- Error Handling: Return errors as content, not exceptions
- Caching: Cache expensive resources appropriately
- Documentation: Document resource URIs and expected content
- Versioning: Support versioning for evolving resources
- Validation: Validate parameters in template callbacks
Common Patterns
Configuration Resources
Documentation Resources
Status Resources
Next Steps
- UI Widgets - Creating interactive UI components
- Tools Guide - Building executable tools
- API Reference - Complete API documentation
- Examples - Real-world resource implementations