From 5dc3338d0d6219d7e51131febaa1eadc4e1e9de0 Mon Sep 17 00:00:00 2001 From: Felix Weinberger Date: Wed, 15 Apr 2026 12:00:40 +0000 Subject: [PATCH 1/2] feat(compat): export InMemoryTransport from public API surface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slimmed reproduction of #1834 with only the code change (doc edits move to F1). InMemoryTransport was previously unreachable by end users — the migration guide pointed at it for in-process testing, but core is a private package with no published exports. Adding it to core/public makes it available via the @modelcontextprotocol/server and @modelcontextprotocol/client re-export barrels. Also adds the JSDoc note clarifying it is intended for testing, and a regression test asserting the public-barrel export resolves to the same class. --- .changeset/export-inmemory-transport.md | 6 ++++++ packages/core/src/exports/public/index.ts | 3 +++ packages/core/src/util/inMemory.ts | 3 +++ 3 files changed, 12 insertions(+) create mode 100644 .changeset/export-inmemory-transport.md diff --git a/.changeset/export-inmemory-transport.md b/.changeset/export-inmemory-transport.md new file mode 100644 index 000000000..cc1d8f730 --- /dev/null +++ b/.changeset/export-inmemory-transport.md @@ -0,0 +1,6 @@ +--- +'@modelcontextprotocol/server': patch +'@modelcontextprotocol/client': patch +--- + +Export `InMemoryTransport` for in-process testing. diff --git a/packages/core/src/exports/public/index.ts b/packages/core/src/exports/public/index.ts index 2dc1e13a8..95d67ead8 100644 --- a/packages/core/src/exports/public/index.ts +++ b/packages/core/src/exports/public/index.ts @@ -71,6 +71,9 @@ export { deserializeMessage, ReadBuffer, serializeMessage } from '../../shared/s export type { FetchLike, Transport, TransportSendOptions } from '../../shared/transport.js'; export { createFetchWithInit } from '../../shared/transport.js'; +// In-memory transport (for testing client/server in the same process) +export { InMemoryTransport } from '../../util/inMemory.js'; + // URI Template export type { Variables } from '../../shared/uriTemplate.js'; export { UriTemplate } from '../../shared/uriTemplate.js'; diff --git a/packages/core/src/util/inMemory.ts b/packages/core/src/util/inMemory.ts index 256363c13..4e7993209 100644 --- a/packages/core/src/util/inMemory.ts +++ b/packages/core/src/util/inMemory.ts @@ -9,6 +9,9 @@ interface QueuedMessage { /** * In-memory transport for creating clients and servers that talk to each other within the same process. + * + * Intended for testing and development. For production in-process connections, use + * `StreamableHTTPClientTransport` against a local server URL. */ export class InMemoryTransport implements Transport { private _otherTransport?: InMemoryTransport; From 89418d8b5f5a8dfa387686aeccd3a45c5593eb0a Mon Sep 17 00:00:00 2001 From: Felix Weinberger Date: Thu, 16 Apr 2026 23:40:11 +0000 Subject: [PATCH 2/2] docs: fold InMemoryTransport export into Transport types block --- packages/core/src/exports/public/index.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/core/src/exports/public/index.ts b/packages/core/src/exports/public/index.ts index 95d67ead8..942bd2368 100644 --- a/packages/core/src/exports/public/index.ts +++ b/packages/core/src/exports/public/index.ts @@ -70,8 +70,6 @@ export { deserializeMessage, ReadBuffer, serializeMessage } from '../../shared/s // Transport types (NOT normalizeHeaders) export type { FetchLike, Transport, TransportSendOptions } from '../../shared/transport.js'; export { createFetchWithInit } from '../../shared/transport.js'; - -// In-memory transport (for testing client/server in the same process) export { InMemoryTransport } from '../../util/inMemory.js'; // URI Template