mcp_server_dart 1.2.0
mcp_server_dart: ^1.2.0 copied to clipboard
A developer-friendly MCP (Model Context Protocol) framework for Dart with annotations and code generation.
1.2.0 #
- ๐ฏ @MCPParam Implementation: The
@MCPParamannotation is now fully functional! Add rich metadata to your parameters with custom descriptions, examples, type overrides, and required/optional control. - ๐ Enhanced Parameter Documentation: Generate professional API documentation with meaningful parameter descriptions instead of generic "Parameter parameter" text.
- ๐ Parameter Examples: Include examples in your JSON schemas to help API consumers understand expected values.
- โ๏ธ Fine-grained Control: Override Dart's type inference and required/optional detection with explicit
@MCPParamsettings. - ๐ Backward Compatible: Existing code without
@MCPParamannotations continues to work exactly as before.
What's New #
- @MCPParam Annotation Processing: The code generator now reads and processes
@MCPParamannotations on method parameters - Rich JSON Schemas: Generated input schemas include custom descriptions, examples, and type information from
@MCPParam - Parameter Metadata: Support for
description,example,type, andrequiredfields in parameter annotations - Type Override Support: Explicitly specify JSON Schema types that differ from Dart types
- Required/Optional Control: Override Dart's optional parameter detection with explicit
required: true/false
Example Usage #
@MCPTool('weather', description: 'Get weather information')
Future<Map<String, dynamic>> getWeather(
@MCPParam(description: 'City name or coordinates', example: 'San Francisco')
String location,
@MCPParam(
required: false,
description: 'Temperature unit',
example: 'celsius',
type: 'string'
)
String unit = 'celsius',
) async {
// Your implementation
}
Generated Schema Enhancement #
Before:
"location": {"type": "string", "description": "Location parameter"}
After:
"location": {
"type": "string",
"description": "City name or coordinates",
"example": "San Francisco"
}
1.1.2 #
- โจ No More @override: Revolutionary extension-based code generation eliminates the need for
@overrideannotations - ๐ง Resource Generation Fix: Fixed critical issue where generator incorrectly passed
uriparameter to resource methods that don't expect it - ๐งช Enhanced Testing: Added comprehensive resource test example demonstrating both URI-based and simple data provider resources
- ๐ Better Resource Patterns: Generator now intelligently detects if resource methods expect URI parameters and handles both patterns correctly
- ๐๏ธ Cleaner Architecture: Extension-based registration provides cleaner inheritance and method declarations
What's New #
- Extension-Based Registration: Generated code now creates extensions on your class instead of abstract base classes
- No @override Required: Your methods can be declared without
@overrideannotations for cleaner code - Automatic Registration: Call
registerGeneratedHandlers()in your constructor for seamless setup - Cleaner Inheritance: Simply extend
MCPServerdirectly without abstract method constraints
What's Fixed #
- Resource methods without URI parameters now work correctly (e.g.,
getServerStats()instead ofgetServerStats(uri)) - Generator automatically wraps simple return values in
MCPResourceContentfor URI-less resources - Both traditional URI-based resources and simple data providers are now fully supported
- Eliminated inheritance complexity with extension-based approach
Example Usage #
// Clean method declarations - no @override needed!
class MyMCPServer extends MCPServer {
MyMCPServer() : super(name: 'my-server', version: '1.0.0') {
registerGeneratedHandlers(); // Extension method from generated code
}
@MCPTool('greet', description: 'Greet someone')
Future<String> greet(String name) async { // No @override!
return 'Hello, $name!';
}
// Traditional resource with URI parameter
@MCPResource('userProfile')
Future<MCPResourceContent> getUserProfile(String uri) async { ... }
// Simple resource without URI parameter (now works!)
@MCPResource('serverStats')
Future<Map<String, dynamic>> getServerStats() async { ... }
}
1.1.1 #
- ๐ง Critical Fix: Resolved build_runner collision between
source_gen:combining_builderandmcp_generator - ๐ File Extension Change: Generated files now use
.mcp.dartextension to avoid conflicts with other builders - ๐ Documentation Update: Updated README and examples to reflect new file extension pattern
Breaking Changes #
- Generated files now use
.mcp.dartextension instead of.g.dart - Update your
partdirectives frompart 'filename.g.dart';topart 'filename.mcp.dart';
1.1.0 #
- ๐ Auto-registration: Automatic handler registration using reflection - no need to manually call
registerGeneratedHandlers() - ๐ง Enhanced code generation: Improved MCP generator with better parameter extraction and JSON schema generation
- ๐ Smarter annotations: Code generator now uses annotation names instead of method names for tool/resource/prompt registration
- ๐ฅ Health check: Added
pingmethod support for health monitoring - ๐ Protocol upgrade: Updated to MCP protocol version 2025-06-18
- ๐ฏ Better validation: Improved input schema generation from method parameters with proper type mapping
- ๐ Enhanced documentation: Generated code includes better descriptions from annotations
- ๐ ๏ธ New examples: Added advanced calculator example with comprehensive tool demonstrations
- ๐ Improved usability: Added
stdio()method as alias forstart()for better clarity - โ๏ธ Configuration updates: Updated MCP config with localhost to 127.0.0.1 for better compatibility
- ๐งน Code cleanup: Removed excessive comments from generated code for cleaner output
Breaking Changes #
- Protocol version updated from
2024-11-05to2025-06-18 - Generated handlers now use annotation names instead of method names by default
- Origin validation now defaults to
falseinstead oftruefor easier development
1.0.1 #
- ๐ง Fixed origin validation: Resolved production deployment issues with CORS origin checking
- ๐๏ธ Modular architecture: Split monolithic server file into focused modules for better maintainability
- โ๏ธ Configurable origin validation: Added
allowLocalhostandvalidateOriginsparameters for flexible security - ๐งน Code organization: Separated concerns into
middleware.dart,http_handlers.dart,session_manager.dart, andserver_utils.dart - ๐ฆ Package name: Changed from
dart_mcptomcp_server_dartfor better pub.dev availability - ๐ Enhanced security: Better HTTPS origin support and customizable allowed origins
Breaking Changes #
- Package name changed from
dart_mcptomcp_server_dart - Origin validation now allows HTTPS origins by default (can be disabled with
validateOrigins: false)
1.0.0 #
- ๐ Initial release of MCP Dart Framework
- ๐ท๏ธ Annotation-based development:
@MCPTool,@MCPResource,@MCPPromptannotations - ๐ง Code generation: Automatic boilerplate generation using
build_runner - ๐ก Multiple transports: Support for stdio, HTTP, and WebSocket connections
- ๐ Type-safe: Full Dart type safety with automatic parameter extraction
- ๐ JSON Schema: Automatic input schema generation from method signatures
- ๐ Complete example: Google Maps MCP server demonstrating all features
- ๐งช Testing support: Built-in support for testing MCP servers
- ๐ Comprehensive docs: Detailed README with examples and API reference
Features #
- MCPServer base class with full MCP protocol implementation
- Automatic parameter extraction from method signatures
- JSON Schema generation for tool input validation
- WebSocket and stdio transport support
- Resource and prompt management alongside tools
- Error handling and logging built-in
- Type-safe context access for tool parameters
Examples #
- Simple MCP server example
- Google Maps MCP server with multiple tools, resources, and prompts
- Comprehensive test suite demonstrating framework usage