createStreamableHttpTransport

Result<StreamableHttpTransport, String> createStreamableHttpTransport({

  1. String sessionIdGenerator()?,
  2. void onSessionInitialized(
    1. String sessionId
    )?,
})

Create a stateful Streamable HTTP transport.

Each call creates a new transport for one session. Use onSessionInitialized to capture the session ID.

Implementation

Result<StreamableHttpTransport, String> createStreamableHttpTransport({
  String Function()? sessionIdGenerator,
  void Function(String sessionId)? onSessionInitialized,
}) {
  try {
    final sdkModule = requireModule(
      '@modelcontextprotocol/sdk/server/streamableHttp.js',
    );
    final transportClass =
        (sdkModule as JSObject)['StreamableHTTPServerTransport'] as JSFunction;

final options = JSObject(); if (sessionIdGenerator != null) { options['sessionIdGenerator'] = (() => sessionIdGenerator().toJS).toJS; } if (onSessionInitialized != null) { options['onsessioninitialized'] = ((JSString sid) => onSessionInitialized( sid.toDart, )).toJS; }

final transport = transportClass.callAsConstructor<StreamableHttpTransport>( options, ); return Success(transport); } catch (e) { return Error('Failed to create StreamableHTTP transport: $e'); } }