From 93cbe7cf59076190677e4edea813504381ef1f79 Mon Sep 17 00:00:00 2001 From: Timelovers <46080686+Timelovers@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:02:50 +0800 Subject: [PATCH 1/5] fix: read memory version from package.json, add missing zod deps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Read serverInfo.version from package.json instead of hardcoding "0.6.3", so it stays in sync with the published package version - Add missing zod dependency to server-memory and server-sequential-thinking package.json files — both import zod at runtime but it was only available transitively through the SDK Fixes #4406, fixes #4330 Co-authored-by: Timelovers <46080686+Timelovers@users.noreply.github.com> --- src/memory/index.ts | 11 +++++++++-- src/memory/package.json | 5 +++-- src/sequentialthinking/package.json | 5 +++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index 9865c5318e..ea27342cec 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -4,10 +4,17 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { promises as fs } from 'fs'; +import { promises as fs, readFileSync } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; + + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const PACKAGE_VERSION: string = JSON.parse( + readFileSync(path.join(__dirname, "..", "package.json"), "utf-8") +).version; + // Define memory file path using environment variable with fallback export const defaultMemoryPath = path.join(path.dirname(fileURLToPath(import.meta.url)), 'memory.jsonl'); @@ -256,7 +263,7 @@ const RelationSchema = z.object({ // The server instance and tools exposed to Claude const server = new McpServer({ name: "memory-server", - version: "0.6.3", + version: PACKAGE_VERSION, }); const RESOURCE_URI = "memory://knowledge-graph"; diff --git a/src/memory/package.json b/src/memory/package.json index e32d25a3e2..55e2f1d5fa 100644 --- a/src/memory/package.json +++ b/src/memory/package.json @@ -25,7 +25,8 @@ "test": "vitest run --coverage" }, "dependencies": { - "@modelcontextprotocol/sdk": "^1.29.0" + "@modelcontextprotocol/sdk": "^1.29.0", + "zod": "^3" }, "devDependencies": { "@types/node": "^22", @@ -34,4 +35,4 @@ "typescript": "^5.6.2", "vitest": "^4.1.8" } -} \ No newline at end of file +} diff --git a/src/sequentialthinking/package.json b/src/sequentialthinking/package.json index a88de803b5..d782f346c9 100644 --- a/src/sequentialthinking/package.json +++ b/src/sequentialthinking/package.json @@ -27,7 +27,8 @@ "dependencies": { "@modelcontextprotocol/sdk": "^1.29.0", "chalk": "^5.3.0", - "yargs": "^17.7.2" + "yargs": "^17.7.2", + "zod": "^3" }, "devDependencies": { "@types/node": "^22", @@ -37,4 +38,4 @@ "typescript": "^5.3.3", "vitest": "^4.1.8" } -} \ No newline at end of file +} From 59272b415775ab5bf14d3d1cee93cad21924467f Mon Sep 17 00:00:00 2001 From: Timelovers <46080686+Timelovers@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:08:06 +0800 Subject: [PATCH 2/5] fix: use node:fs for ESM import compatibility Co-authored-by: Timelovers <46080686+Timelovers@users.noreply.github.com> --- src/memory/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index ea27342cec..035f9176a5 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -4,7 +4,8 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { promises as fs, readFileSync } from 'fs'; +import { promises as fs } from 'node:fs'; +import { readFileSync } from 'node:fs'; import path from 'path'; import { fileURLToPath } from 'url'; From bb9cc1a9e929b30f075e982419c261e2786e0db9 Mon Sep 17 00:00:00 2001 From: Timelovers <46080686+Timelovers@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:11:09 +0800 Subject: [PATCH 3/5] chore: combine fs imports into single line Co-authored-by: Timelovers <46080686+Timelovers@users.noreply.github.com> --- src/memory/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index 035f9176a5..3ada7fac69 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -4,8 +4,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { promises as fs } from 'node:fs'; -import { readFileSync } from 'node:fs'; +import { promises as fs, readFileSync } from 'node:fs'; import path from 'path'; import { fileURLToPath } from 'url'; From e2049e1e90454d38e5a418014462a4316c81c805 Mon Sep 17 00:00:00 2001 From: Timelovers <46080686+Timelovers@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:11:31 +0800 Subject: [PATCH 4/5] chore: use 'fs' convention matching rest of codebase Co-authored-by: Timelovers <46080686+Timelovers@users.noreply.github.com> --- src/memory/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index 3ada7fac69..ea27342cec 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -4,7 +4,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { promises as fs, readFileSync } from 'node:fs'; +import { promises as fs, readFileSync } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; From c67d0fe5fcecb74abec3b0bedf7c11b0bb00252c Mon Sep 17 00:00:00 2001 From: Timelovers <46080686+Timelovers@users.noreply.github.com> Date: Mon, 27 Jul 2026 21:14:28 +0800 Subject: [PATCH 5/5] =?UTF-8?q?fix:=20use=20createRequire=20for=20package.?= =?UTF-8?q?json=20=E2=80=94=20safer=20than=20readFileSync?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit createRequire is the standard Node.js ESM pattern for reading JSON files and avoids file path resolution issues in CI test environments. Co-authored-by: Timelovers <46080686+Timelovers@users.noreply.github.com> --- src/memory/index.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index ea27342cec..7521ff8702 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -4,16 +4,15 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { SubscribeRequestSchema, UnsubscribeRequestSchema } from "@modelcontextprotocol/sdk/types.js"; import { z } from "zod"; -import { promises as fs, readFileSync } from 'fs'; +import { promises as fs } from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const PACKAGE_VERSION: string = JSON.parse( - readFileSync(path.join(__dirname, "..", "package.json"), "utf-8") -).version; +import { createRequire } from 'node:module'; +const require = createRequire(import.meta.url); +const PACKAGE_VERSION: string = require('../package.json').version; // Define memory file path using environment variable with fallback export const defaultMemoryPath = path.join(path.dirname(fileURLToPath(import.meta.url)), 'memory.jsonl');