diff --git a/.changeset/mcp-cli-dynamic-require-shims.md b/.changeset/mcp-cli-dynamic-require-shims.md new file mode 100644 index 000000000..f73bc8f7f --- /dev/null +++ b/.changeset/mcp-cli-dynamic-require-shims.md @@ -0,0 +1,5 @@ +--- +'@tanstack/ai-mcp': patch +--- + +Fix `@tanstack/ai-mcp` CLI crashing on startup with `Error: Dynamic require of "fs" is not supported`. The CLI ships as an ESM bundle with `json-schema-to-typescript` inlined, which uses CJS `require()` internally. Enabling tsup's `shims` option injects a `createRequire(import.meta.url)` shim so those `require()` calls resolve correctly. diff --git a/packages/ai-mcp/tsup.bin.config.ts b/packages/ai-mcp/tsup.bin.config.ts index e5635420d..d038360cd 100644 --- a/packages/ai-mcp/tsup.bin.config.ts +++ b/packages/ai-mcp/tsup.bin.config.ts @@ -10,5 +10,8 @@ export default defineConfig({ noExternal: ['json-schema-to-typescript', 'jiti'], // Keep the heavy SDK + workspace pkg external (installed alongside). external: ['@modelcontextprotocol/sdk', '@tanstack/ai'], + // json-schema-to-typescript uses CJS dynamic require(); shims injects + // createRequire so those calls work inside this ESM bundle. + shims: true, banner: { js: '#!/usr/bin/env node' }, })