Skip to content

Commit 02ff244

Browse files
chore: awaitable connection manager factory
1 parent 5dd6948 commit 02ff244

File tree

5 files changed

+31
-20
lines changed

5 files changed

+31
-20
lines changed

src/lib.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
export { Server, type ServerOptions } from "./server.js";
2-
export { Telemetry } from "./telemetry/telemetry.js";
32
export { Session, type SessionOptions } from "./common/session.js";
4-
export { type UserConfig, defaultUserConfig } from "./common/config.js";
5-
export { StreamableHttpRunner } from "./transports/streamableHttp.js";
3+
export { defaultUserConfig, type UserConfig } from "./common/config.js";
64
export { LoggerBase, CompositeLogger, type LogPayload, type LoggerType, type LogLevel } from "./common/logger.js";
7-
export * from "./common/connectionManager.js";
5+
export { StreamableHttpRunner } from "./transports/streamableHttp.js";
6+
export { type CreateConnectionManagerFn } from "./transports/base.js";
7+
export {
8+
ConnectionManager,
9+
type MCPConnectParams,
10+
type AnyConnectionState,
11+
type ConnectionState,
12+
type ConnectionStateConnected,
13+
type ConnectionStateConnecting,
14+
type ConnectionStateDisconnected,
15+
type ConnectionStateErrored,
16+
} from "./common/connectionManager.js";
17+
export { Telemetry } from "./telemetry/telemetry.js";

src/transports/base.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { DeviceId } from "../helpers/deviceId.js";
1313
export type CreateConnectionManagerFn<ConnectParams extends MCPConnectParams> = (createParams: {
1414
logger: CompositeLogger;
1515
deviceId: DeviceId;
16-
}) => ConnectionManager<ConnectParams>;
16+
}) => ConnectionManager<ConnectParams> | Promise<ConnectionManager<ConnectParams>>;
1717

1818
export abstract class TransportRunnerBase<ConnectParams extends MCPConnectParams> {
1919
public logger: LoggerBase;
@@ -43,7 +43,7 @@ export abstract class TransportRunnerBase<ConnectParams extends MCPConnectParams
4343
this.deviceId = DeviceId.create(this.logger);
4444
}
4545

46-
protected setupServer(): Server {
46+
protected async setupServer(): Promise<Server> {
4747
const mcpServer = new McpServer({
4848
name: packageInfo.mcpServerName,
4949
version: packageInfo.version,
@@ -56,7 +56,7 @@ export abstract class TransportRunnerBase<ConnectParams extends MCPConnectParams
5656

5757
const logger = new CompositeLogger(...loggers);
5858
const exportsManager = ExportsManager.init(this.userConfig, logger);
59-
const connectionManager = this.createConnectionManager({ logger, deviceId: this.deviceId });
59+
const connectionManager = await this.createConnectionManager({ logger, deviceId: this.deviceId });
6060

6161
const session = new Session({
6262
apiBaseUrl: this.userConfig.apiBaseUrl,

src/transports/stdio.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export class StdioRunner<ConnectParams extends MCPConnectParams> extends Transpo
5656

5757
async start(): Promise<void> {
5858
try {
59-
this.server = this.setupServer();
59+
this.server = await this.setupServer();
6060

6161
const transport = createStdioTransport();
6262

src/transports/streamableHttp.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ export class StreamableHttpRunner<ConnectParams extends MCPConnectParams> extend
108108
return;
109109
}
110110

111-
const server = this.setupServer();
111+
const server = await this.setupServer();
112112
const transport = new StreamableHTTPServerTransport({
113113
sessionIdGenerator: (): string => randomUUID().toString(),
114114
onsessioninitialized: (sessionId): void => {

tests/integration/build.test.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,17 @@ describe("Build Test", () => {
4141
const esmKeys = Object.keys(esmModule).sort();
4242

4343
expect(cjsKeys).toEqual(esmKeys);
44-
expect(cjsKeys).toContainEqual([
45-
"CompositeLogger",
46-
"ConnectionManager",
47-
"LoggerBase",
48-
"Server",
49-
"Session",
50-
"StreamableHttpRunner",
51-
"Telemetry",
52-
"defaultUserConfig",
53-
"LoggerBase",
54-
]);
44+
expect(cjsKeys).toEqual(
45+
expect.arrayContaining([
46+
"CompositeLogger",
47+
"ConnectionManager",
48+
"LoggerBase",
49+
"Server",
50+
"Session",
51+
"StreamableHttpRunner",
52+
"Telemetry",
53+
"defaultUserConfig",
54+
])
55+
);
5556
});
5657
});

0 commit comments

Comments
 (0)