diff --git a/.changeset/streamable-http-onclose-types.md b/.changeset/streamable-http-onclose-types.md new file mode 100644 index 0000000000..f10c204ab7 --- /dev/null +++ b/.changeset/streamable-http-onclose-types.md @@ -0,0 +1,6 @@ +--- +'@modelcontextprotocol/node': patch +'@modelcontextprotocol/server': patch +--- + +Align Streamable HTTP onclose types with the shared Transport contract. diff --git a/packages/middleware/node/src/streamableHttp.ts b/packages/middleware/node/src/streamableHttp.ts index 68a0c224f0..a70588d4d7 100644 --- a/packages/middleware/node/src/streamableHttp.ts +++ b/packages/middleware/node/src/streamableHttp.ts @@ -100,11 +100,11 @@ export class NodeStreamableHTTPServerTransport implements Transport { /** * Sets callback for when the transport is closed. */ - set onclose(handler: (() => void) | undefined) { + set onclose(handler: Transport['onclose']) { this._webStandardTransport.onclose = handler; } - get onclose(): (() => void) | undefined { + get onclose(): Transport['onclose'] { return this._webStandardTransport.onclose; } diff --git a/packages/middleware/node/test/streamableHttp.typecheck.ts b/packages/middleware/node/test/streamableHttp.typecheck.ts new file mode 100644 index 0000000000..701d636ad6 --- /dev/null +++ b/packages/middleware/node/test/streamableHttp.typecheck.ts @@ -0,0 +1,5 @@ +import type { Transport } from '@modelcontextprotocol/core'; +import { NodeStreamableHTTPServerTransport } from '../src/streamableHttp.js'; + +const transport: Transport = new NodeStreamableHTTPServerTransport({}); +transport.onclose = undefined; diff --git a/packages/server/src/server/streamableHttp.ts b/packages/server/src/server/streamableHttp.ts index fd3563a077..2f563c3d94 100644 --- a/packages/server/src/server/streamableHttp.ts +++ b/packages/server/src/server/streamableHttp.ts @@ -242,7 +242,7 @@ export class WebStandardStreamableHTTPServerTransport implements Transport { private _supportedProtocolVersions: string[]; sessionId?: string; - onclose?: () => void; + onclose?: Transport['onclose']; onerror?: (error: Error) => void; onmessage?: (message: JSONRPCMessage, extra?: MessageExtraInfo) => void;