diff --git a/.changeset/cfworker-out-of-barrel.md b/.changeset/cfworker-out-of-barrel.md new file mode 100644 index 000000000..9a35b845d --- /dev/null +++ b/.changeset/cfworker-out-of-barrel.md @@ -0,0 +1,6 @@ +--- +'@modelcontextprotocol/server': patch +'@modelcontextprotocol/client': patch +--- + +Stop bundling `@cfworker/json-schema` into the main package barrel. Previously `CfWorkerJsonSchemaValidator` was re-exported from the core internal barrel, so tsdown inlined the `@cfworker/json-schema` dev dependency into every consumer's bundle even when it was never used. The validator is now reachable only via the `_shims` conditional (workerd/browser) and the explicit `@modelcontextprotocol/{server,client}/validators/cf-worker` subpath, so consumers that don't opt into it no longer ship that code. No public API change. diff --git a/packages/client/src/shimsBrowser.ts b/packages/client/src/shimsBrowser.ts index bfaa67a2e..de126d53b 100644 --- a/packages/client/src/shimsBrowser.ts +++ b/packages/client/src/shimsBrowser.ts @@ -3,7 +3,7 @@ * * This file is selected via package.json export conditions when running in a browser. */ -export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core'; +export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; /** * Whether `fetch()` may throw `TypeError` due to CORS. Only true in browser contexts diff --git a/packages/client/src/shimsWorkerd.ts b/packages/client/src/shimsWorkerd.ts index f8374597e..9e6660b9a 100644 --- a/packages/client/src/shimsWorkerd.ts +++ b/packages/client/src/shimsWorkerd.ts @@ -3,7 +3,7 @@ * * This file is selected via package.json export conditions when running in workerd. */ -export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core'; +export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; /** * Whether `fetch()` may throw `TypeError` due to CORS. CORS is a browser-only concept — diff --git a/packages/client/src/validators/cfWorker.ts b/packages/client/src/validators/cfWorker.ts index b068e69a1..8d66770e0 100644 --- a/packages/client/src/validators/cfWorker.ts +++ b/packages/client/src/validators/cfWorker.ts @@ -6,5 +6,5 @@ * import { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/client/validators/cf-worker'; * ``` */ -export { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/core'; -export type { CfWorkerSchemaDraft } from '@modelcontextprotocol/core'; +export type { CfWorkerSchemaDraft } from '@modelcontextprotocol/core/validators/cfWorker'; +export { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; diff --git a/packages/client/tsconfig.json b/packages/client/tsconfig.json index f0772820a..a40ee9fd5 100644 --- a/packages/client/tsconfig.json +++ b/packages/client/tsconfig.json @@ -7,6 +7,9 @@ "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/exports/public/index.ts"], + "@modelcontextprotocol/core/validators/cfWorker": [ + "./node_modules/@modelcontextprotocol/core/src/validators/cfWorkerProvider.ts" + ], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"], "@modelcontextprotocol/client/_shims": ["./src/shimsNode.ts"] } diff --git a/packages/client/tsdown.config.ts b/packages/client/tsdown.config.ts index 6afda65d1..500987c8e 100644 --- a/packages/client/tsdown.config.ts +++ b/packages/client/tsdown.config.ts @@ -26,7 +26,8 @@ export default defineConfig({ baseUrl: '.', paths: { '@modelcontextprotocol/core': ['../core/src/index.ts'], - '@modelcontextprotocol/core/public': ['../core/src/exports/public/index.ts'] + '@modelcontextprotocol/core/public': ['../core/src/exports/public/index.ts'], + '@modelcontextprotocol/core/validators/cfWorker': ['../core/src/validators/cfWorkerProvider.ts'] } } }, diff --git a/packages/core/package.json b/packages/core/package.json index b5858ff00..201773736 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -32,6 +32,10 @@ "./public": { "types": "./src/exports/public/index.ts", "import": "./src/exports/public/index.ts" + }, + "./validators/cfWorker": { + "types": "./src/validators/cfWorkerProvider.ts", + "import": "./src/validators/cfWorkerProvider.ts" } }, "scripts": { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index e707d9939..e70b62e20 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -19,7 +19,11 @@ export * from './util/standardSchema.js'; // experimental exports export * from './experimental/index.js'; export * from './validators/ajvProvider.js'; -export * from './validators/cfWorkerProvider.js'; +// cfWorkerProvider is intentionally NOT re-exported here: it statically imports +// `@cfworker/json-schema` (an optional peer), and bundling it into the main barrel +// would force that import on all Node consumers. Import via `@modelcontextprotocol/core/validators/cfWorker` +// (used by the workerd/browser `_shims` and the public `/validators/cf-worker` subpaths). +export type { CfWorkerSchemaDraft } from './validators/cfWorkerProvider.js'; export * from './validators/fromJsonSchema.js'; /** * JSON Schema validation @@ -30,7 +34,7 @@ export * from './validators/fromJsonSchema.js'; * - {@linkcode AjvJsonSchemaValidator}: Best for Node.js (default, fastest) * Bundled — no additional dependencies required. * - * - {@linkcode CfWorkerJsonSchemaValidator}: Best for edge runtimes + * - `CfWorkerJsonSchemaValidator`: Best for edge runtimes * Import from: `@modelcontextprotocol/server/validators/cf-worker` or `@modelcontextprotocol/client/validators/cf-worker` * Bundled — no additional dependencies required. * diff --git a/packages/server/src/shimsWorkerd.ts b/packages/server/src/shimsWorkerd.ts index 565908be8..dc23da808 100644 --- a/packages/server/src/shimsWorkerd.ts +++ b/packages/server/src/shimsWorkerd.ts @@ -3,7 +3,7 @@ * * This file is selected via package.json export conditions when running in workerd. */ -export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core'; +export { CfWorkerJsonSchemaValidator as DefaultJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; /** * Stub process object for non-Node.js environments. diff --git a/packages/server/src/validators/cfWorker.ts b/packages/server/src/validators/cfWorker.ts index 9a3a88405..f804b768e 100644 --- a/packages/server/src/validators/cfWorker.ts +++ b/packages/server/src/validators/cfWorker.ts @@ -6,5 +6,5 @@ * import { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/server/validators/cf-worker'; * ``` */ -export { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/core'; -export type { CfWorkerSchemaDraft } from '@modelcontextprotocol/core'; +export type { CfWorkerSchemaDraft } from '@modelcontextprotocol/core/validators/cfWorker'; +export { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 0b3ab7600..7ab6d79a5 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -7,6 +7,9 @@ "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/exports/public/index.ts"], + "@modelcontextprotocol/core/validators/cfWorker": [ + "./node_modules/@modelcontextprotocol/core/src/validators/cfWorkerProvider.ts" + ], "@modelcontextprotocol/test-helpers": ["./node_modules/@modelcontextprotocol/test-helpers/src/index.ts"], "@modelcontextprotocol/server/_shims": ["./src/shimsNode.ts"] } diff --git a/packages/server/tsdown.config.ts b/packages/server/tsdown.config.ts index fb0cd8a93..553ad7372 100644 --- a/packages/server/tsdown.config.ts +++ b/packages/server/tsdown.config.ts @@ -26,7 +26,8 @@ export default defineConfig({ baseUrl: '.', paths: { '@modelcontextprotocol/core': ['../core/src/index.ts'], - '@modelcontextprotocol/core/public': ['../core/src/exports/public/index.ts'] + '@modelcontextprotocol/core/public': ['../core/src/exports/public/index.ts'], + '@modelcontextprotocol/core/validators/cfWorker': ['../core/src/validators/cfWorkerProvider.ts'] } } }, diff --git a/test/integration/test/server/elicitation.test.ts b/test/integration/test/server/elicitation.test.ts index 55c989da0..640e7b637 100644 --- a/test/integration/test/server/elicitation.test.ts +++ b/test/integration/test/server/elicitation.test.ts @@ -9,7 +9,8 @@ import { Client } from '@modelcontextprotocol/client'; import type { ElicitRequestFormParams } from '@modelcontextprotocol/core'; -import { AjvJsonSchemaValidator, CfWorkerJsonSchemaValidator, InMemoryTransport } from '@modelcontextprotocol/core'; +import { AjvJsonSchemaValidator, InMemoryTransport } from '@modelcontextprotocol/core'; +import { CfWorkerJsonSchemaValidator } from '@modelcontextprotocol/core/validators/cfWorker'; import { Server } from '@modelcontextprotocol/server'; const ajvProvider = new AjvJsonSchemaValidator(); diff --git a/test/integration/tsconfig.json b/test/integration/tsconfig.json index 2f927336a..163877960 100644 --- a/test/integration/tsconfig.json +++ b/test/integration/tsconfig.json @@ -7,6 +7,9 @@ "*": ["./*"], "@modelcontextprotocol/core": ["./node_modules/@modelcontextprotocol/core/src/index.ts"], "@modelcontextprotocol/core/public": ["./node_modules/@modelcontextprotocol/core/src/exports/public/index.ts"], + "@modelcontextprotocol/core/validators/cfWorker": [ + "./node_modules/@modelcontextprotocol/core/src/validators/cfWorkerProvider.ts" + ], "@modelcontextprotocol/client": ["./node_modules/@modelcontextprotocol/client/src/index.ts"], "@modelcontextprotocol/client/_shims": ["./node_modules/@modelcontextprotocol/client/src/shimsNode.ts"], "@modelcontextprotocol/server": ["./node_modules/@modelcontextprotocol/server/src/index.ts"],