import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import type { Transport as SdkTransport } from "@modelcontextprotocol/sdk/shared/transport.js"; /** Paired SDK transport + {@link McpServer} representing one MCP session. */ export interface SessionEntry { readonly transport: T; readonly server: McpServer; } /** * Registry of {@link SessionEntry} pairs keyed by MCP session id. Multi-client transports need * one {@link McpServer} per session because the SDK binds each server to a single transport. * * {@see https://github.com/modelcontextprotocol/typescript-sdk/blob/main/examples/server/src/simpleStreamableHttp.ts} * {@see https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#session-management} */ export declare class SessionRegistry { private readonly sessions; set(sessionId: string, entry: SessionEntry): void; get(sessionId: string): SessionEntry | undefined; /** * Connects {@linkcode server} to {@linkcode transport}; closes both on rejection. The pair * is not in the registry yet at this point (the SDK's {@linkcode T.onsessioninitialized} * callback fires later, during {@linkcode T.handleRequest}), so failure here is an orphan * cleanup, not a registry mutation. */ bindServer(server: McpServer, transport: T): Promise; /** Closes the {@link SessionEntry} for {@linkcode sessionId} (if any) and removes it. */ closeAndRemove(sessionId: string): Promise; /** Closes every registered transport + server pair and clears the registry. */ closeAll(): Promise; /** Closes both halves of {@linkcode entry}, logging (not propagating) any failures. */ private closeEntry; } //# sourceMappingURL=session-registry.d.ts.map