addResource method
void
addResource({
- required String uri,
- required String name,
- required String description,
- required String mimeType,
- Map<
String, dynamic> ? uriTemplate, - required ResourceHandler handler,
- String? title,
- List<
Map< ? icons,String, dynamic> > - Map<
String, dynamic> ? meta,
override
Add a resource to the server
Implementation
@override
void addResource({
required String uri,
required String name,
required String description,
required String mimeType,
Map<String, dynamic>? uriTemplate,
required ResourceHandler handler,
String? title,
List<Map<String, dynamic>>? icons,
Map<String, dynamic>? meta,
}) {
if (_resources.containsKey(uri)) {
throw McpError('Resource with URI "$uri" already exists');
}
// Auto-detect template URIs (containing {param} placeholders)
if (uriTemplate == null && uri.contains('{') && uri.contains('}')) {
uriTemplate = {'isTemplate': true};
}
final resource = Resource(
uri: uri,
name: name,
title: title,
description: description,
mimeType: mimeType,
uriTemplate: uriTemplate,
icons: icons,
meta: meta,
);
_resources[uri] = resource;
_resourceHandlers[uri] = handler;
// Notify clients about resource changes if connected and supported
if (isConnected && capabilities.hasResources && capabilities.resourcesListChanged) {
_broadcastNotification('notifications/resources/list_changed', {});
}
// Emit change event
_resourcesChangedController.add(null);
}