From 0958510b2be039edaf7727c20b0b537167db9e40 Mon Sep 17 00:00:00 2001 From: cyq <15000851237@163.com> Date: Mon, 25 May 2026 08:35:42 +0800 Subject: [PATCH 1/2] fix: align streamable HTTP onclose type --- packages/middleware/node/src/streamableHttp.ts | 4 ++-- packages/middleware/node/test/streamableHttp.typecheck.ts | 5 +++++ packages/server/src/server/streamableHttp.ts | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 packages/middleware/node/test/streamableHttp.typecheck.ts 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; From 6693b49ce8ea3f3a45e35480f4ca4bce48b5b6ad Mon Sep 17 00:00:00 2001 From: cyq <15000851237@163.com> Date: Mon, 25 May 2026 08:38:14 +0800 Subject: [PATCH 2/2] chore: add changeset for streamable HTTP onclose type --- .changeset/streamable-http-onclose-types.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/streamable-http-onclose-types.md 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.