Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .changeset/exact-optional-property-types.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
"@modelcontextprotocol/core": patch
"@modelcontextprotocol/server": patch
---

fix: support `exactOptionalPropertyTypes` TypeScript config

Adds `| undefined` to optional callback properties in the `Transport` interface
and `WebStandardStreamableHTTPServerTransportOptions` to support projects using
`exactOptionalPropertyTypes: true` in their tsconfig.

This allows explicitly passing `undefined` for optional callbacks like
`sessionIdGenerator`, `onclose`, `onerror`, and `onmessage`.

Fixes #1397
6 changes: 3 additions & 3 deletions packages/core/src/shared/transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,14 @@ export interface Transport {
*
* This should be invoked when close() is called as well.
*/
onclose?: () => void;
onclose?: (() => void) | undefined;

/**
* Callback for when an error occurs.
*
* Note that errors are not necessarily fatal; they are used for reporting any kind of exceptional condition out of band.
*/
onerror?: (error: Error) => void;
onerror?: ((error: Error) => void) | undefined;

/**
* Callback for when a message (request or response) is received over the connection.
Expand All @@ -114,7 +114,7 @@ export interface Transport {
*
* The requestInfo can be used to get the original request information (headers, etc.)
*/
onmessage?: <T extends JSONRPCMessage>(message: T, extra?: MessageExtraInfo) => void;
onmessage?: (<T extends JSONRPCMessage>(message: T, extra?: MessageExtraInfo) => void) | undefined;

/**
* The session ID generated for this connection.
Expand Down
6 changes: 3 additions & 3 deletions packages/server/src/server/streamableHttp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export interface WebStandardStreamableHTTPServerTransportOptions {
*
* If not provided, session management is disabled (stateless mode).
*/
sessionIdGenerator?: () => string;
sessionIdGenerator?: (() => string) | undefined;

/**
* A callback for session initialization events
Expand All @@ -88,7 +88,7 @@ export interface WebStandardStreamableHTTPServerTransportOptions {
* and need to keep track of them.
* @param sessionId The generated session ID
*/
onsessioninitialized?: (sessionId: string) => void | Promise<void>;
onsessioninitialized?: ((sessionId: string) => void | Promise<void>) | undefined;

/**
* A callback for session close events
Expand All @@ -100,7 +100,7 @@ export interface WebStandardStreamableHTTPServerTransportOptions {
* session open/running.
* @param sessionId The session ID that was closed
*/
onsessionclosed?: (sessionId: string) => void | Promise<void>;
onsessionclosed?: ((sessionId: string) => void | Promise<void>) | undefined;

/**
* If true, the server will return JSON responses instead of starting an SSE stream.
Expand Down
Loading