connect method

  1. @override
Future<KernelClientConnection> connect({
  1. required String id,
  2. required KernelTransportKind transport,
  3. String? endpoint,
  4. Map<String, dynamic>? options,
})
override

Open a connection to a remote MCP server. The connection is identified by id (host-assigned URL, label, or other handle).

Implementation

@override
Future<KernelClientConnection> connect({
  required String id,
  required KernelTransportKind transport,
  String? endpoint,
  Map<String, dynamic>? options,
}) async {
  final existing = _connections[id];
  if (existing != null && existing.isConnected) return existing;

  final client = cli.Client(
    name: name,
    version: version,
    capabilities: const cli.ClientCapabilities(),
  );

  final cli.ClientTransport wire = await _openTransport(
    transport: transport,
    endpoint: endpoint,
    options: options ?? const <String, dynamic>{},
  );
  await client.connect(wire);

  final conn = _McpClientConnection(id: id, client: client);
  _connections[id] = conn;
  return conn;
}