diff --git a/.changeset/node-only-normalize-headers.md b/.changeset/node-only-normalize-headers.md new file mode 100644 index 0000000000..73a4ffca34 --- /dev/null +++ b/.changeset/node-only-normalize-headers.md @@ -0,0 +1,5 @@ +--- +'@modelcontextprotocol/sdk': patch +--- + +Avoid referencing the DOM-only `HeadersInit` global in emitted transport declarations so Node-only TypeScript projects can compile with `skipLibCheck: false`. diff --git a/src/client/sse.ts b/src/client/sse.ts index f0e91ff258..fe797538a8 100644 --- a/src/client/sse.ts +++ b/src/client/sse.ts @@ -114,7 +114,7 @@ export class SSEClientTransport implements Transport { } private async _commonHeaders(): Promise { - const headers: HeadersInit & Record = {}; + const headers: RequestInit['headers'] & Record = {}; if (this._authProvider) { const tokens = await this._authProvider.tokens(); if (tokens) { diff --git a/src/client/streamableHttp.ts b/src/client/streamableHttp.ts index 5ec6fdde8d..2bb7660ac8 100644 --- a/src/client/streamableHttp.ts +++ b/src/client/streamableHttp.ts @@ -181,7 +181,7 @@ export class StreamableHTTPClientTransport implements Transport { } private async _commonHeaders(): Promise { - const headers: HeadersInit & Record = {}; + const headers: RequestInit['headers'] & Record = {}; if (this._authProvider) { const tokens = await this._authProvider.tokens(); if (tokens) { diff --git a/src/shared/transport.ts b/src/shared/transport.ts index f9b21bed32..32539628a7 100644 --- a/src/shared/transport.ts +++ b/src/shared/transport.ts @@ -3,10 +3,10 @@ import { JSONRPCMessage, MessageExtraInfo, RequestId } from '../types.js'; export type FetchLike = (url: string | URL, init?: RequestInit) => Promise; /** - * Normalizes HeadersInit to a plain Record for manipulation. + * Normalizes request headers to a plain Record for manipulation. * Handles Headers objects, arrays of tuples, and plain objects. */ -export function normalizeHeaders(headers: HeadersInit | undefined): Record { +export function normalizeHeaders(headers: RequestInit['headers'] | undefined): Record { if (!headers) return {}; if (headers instanceof Headers) {