subscribeResource method

Future<void> subscribeResource(
  1. String uri, {
  2. Map<String, dynamic>? meta,
  3. RequestOptions? options,
})

Subscribe to a resource

Implementation

Future<void> subscribeResource(
  String uri, {
  Map<String, dynamic>? meta,
  RequestOptions? options,
}) async {
  if (!_initialized) {
    throw McpError('Client is not initialized');
  }

  if (!_statelessMode && _serverCapabilities?.resources != true) {
    throw McpError('Server does not support resources');
  }

  if (_statelessMode) {
    // 2026-07-28: the same subscription, on that revision's mechanism.
    if (_listenedResources.add(uri)) await _relistenResources(added: uri);
    return;
  }
  await _sendRequest('resources/subscribe', _withMeta({'uri': uri}, meta), options);
}