memory: persistence EISDIR test fails on Node 26.7 (the path suffix depends on the Node minor, not the major)
Maintainers usually reply within 1 day
@ace-ify is already working on this.
Since Oct 19, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 83/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- node.js, typescript
- Domain
- testing
Research direction
Read src/memory/__tests__/persistence.test.ts, especially the test "reports a graph file that cannot be read as a tool error" and the version-based expectation introduced by #5076. Run npm test -w src/memory -- __tests__/persistence.test.ts to reproduce the failure on Node 26.7. Update the assertion to accept the bare EISDIR message or that message followed by the file path, then confirm the test passes.
Written by the indexing model from the issue text.
Description
Problem
src/memory/__tests__/persistence.test.ts, "reports a graph file that cannot be read as a tool error", fails again locally, this time on Node 26.7.0 (macOS), so npm run local:gate exits 1 on a machine whose default Node is 26.7:
Expected: "EISDIR: illegal operation on a directory, read '/var/folders/.../memory.jsonl'"
Received: "EISDIR: illegal operation on a directory, read"
#5076 made the expectation follow the Node major: the path appended on >= 26, the bare message before. That matched the Node 26 release #5076 was filed against, but Node 26.7.0 no longer appends the path:
$ node -v && node -e 'require("fs").promises.readFile("/tmp").catch(e=>console.log(e.message))'
v26.7.0
EISDIR: illegal operation on a directory, read
CI's Node 26 leg (#5068) passes on v2/main, so the format differs by Node minor (or platform), not by major. The server is correct on every version: it returns an isError result carrying Node's message. Only the test's expectation is wrong.
Found while running the gate for #5161, on v2/main at 38569bd5.
Reproduce
On Node 26.7.0, on v2/main:
npm ci
npm test -w src/memory -- __tests__/persistence.test.ts
1 failed. Passes on Node 22.
Change
Stop keying the expectation on the Node version. Assert the message is exactly the bare text, or the bare text followed by '<filePath>': for example expect([bare, \${bare} '${filePath}'`]).toContain(textOf(result))`. That still pins the full text the client receives, and holds whichever form the running Node produces.
- Dominant language
- TypeScript
- Stars
- 91.4k
- Forks
- 11.8k
- Avg merge
- 7h 51m
- Merged PRs (30d)
- 121
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/servers
-
documentation v2
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
modelcontextprotocol/servers#5170 ·
Maintainers usually reply within 1 day
-
documentation v2
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
modelcontextprotocol/servers#5164 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
modelcontextprotocol/servers#5156 ·
Maintainers usually reply within 1 day
-
memory: create_entities, create_relations and add_observations could declare idempotentHint: truePossibly taken @syedmustafan claimed this 2 days ago. Openenhancement v2
Difficulty 1/5 Under an hour Newbie friendliness 78/100
modelcontextprotocol/servers#5153 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
modelcontextprotocol/servers#5134 · 1 comment ·
Maintainers usually reply within 1 day
All issues in modelcontextprotocol/servers
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
ccch1mneyyy/dsh-TUI#1631 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
MiniMax-AI/minimax-code#507 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Transient OAuth login failure persists in getLoginStatus and masks active account in dashboardMay be free again A pull request for this issue was closed without being merged. Openaccount-pool bug gui
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
lidge-jun/opencodex#7378 · 2 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day