createAndConnect static method
Future<Result<Client, Exception> >
createAndConnect({
- required McpClientConfig config,
- required TransportConfig transportConfig,
Create and connect a client using the provided configuration
Implementation
static Future<Result<Client, Exception>> createAndConnect({
required McpClientConfig config,
required TransportConfig transportConfig,
}) async {
return Results.catchingAsync(() async {
final client = createClient(config);
await client.connectWithRetry(
() => _createTransport(transportConfig),
maxRetries: config.maxRetries,
delay: config.retryDelay,
era: config.era,
);
// Heartbeat: the specification's connection health check is `ping`
// (none exists in 2026-07-28, which has no connection to keep).
final (interval, maxMissed) = switch (transportConfig) {
SseTransportConfig(:final heartbeatInterval, :final maxMissedHeartbeats) =>
(heartbeatInterval, maxMissedHeartbeats),
StreamableHttpTransportConfig(:final heartbeatInterval, :final maxMissedHeartbeats) =>
(heartbeatInterval, maxMissedHeartbeats),
StdioTransportConfig() => (null, 0),
};
if (interval != null && !client.isStateless) {
client.startKeepAlive(interval, timeout: interval, maxMissed: maxMissed < 1 ? 1 : maxMissed);
}
return client;
});
}