start method

Future<void> start()

Start the MCP server (stdio mode)

Implementation

Future<void> start() async {
  stderr.writeln('[$_serverName v$_serverVersion] MCP Server starting...');

  // Send server info
  _sendNotification('initialized', {
    'serverName': _serverName,
    'version': _serverVersion,
    'capabilities': {
      'tools': true,
      'resources': true,
    },
  });

  // Listen to stdin
  await for (final line in stdin.transform(utf8.decoder).transform(const LineSplitter())) {
    if (line.trim().isEmpty) continue;

    try {
      final json = jsonDecode(line) as Map<String, dynamic>;
      await _handleRequest(json);
    } catch (e, stack) {
      stderr.writeln('Error processing request: $e');
      stderr.writeln(stack);
    }
  }
}