-
#5291
91d3745@cliffhall - A failedmemory.jsontomemory.jsonlmigration now stops startup with an error naming both paths and the cause, instead of being silently ignored and starting the server on an empty graph. -
#5292
df743d4@cliffhall - Keep the fields the server does not model on stored entities and relations (acreatedAtwritten by an older version or another client, say) when a write saves the graph. Before, every write dropped them from the memory file, even an emptycreate_entitiescall, socreate_entities,create_relationsandadd_observationsdestroyed data despite declaringdestructiveHint: false. A record a delete tool removes still goes with its fields, and the fields never appear in tool results.
- #5118
5b400a6@cliffhall - Move to the TypeScript SDK v2 packages (@modelcontextprotocol/server) from@modelcontextprotocol/sdk1.x (#4856). Breaking for clients: the server now requires Node.js 24 or later; over stdio, a single incoming JSON-RPC message larger than 10 MiB now closes the connection (the SDK v2 default read-buffer cap; SDK 1.x buffered without a limit); an unknown tool name is rejected with JSON-RPC error-32602instead of returning anisErrorresult; error messages no longer carry theMCP error <code>:prefix, and input-validation messages name the field first (field: message); tool schemas intools/listdeclare JSON Schema 2020-12 instead of draft-07; and tools no longer advertiseexecution.taskSupport.
- #5131
419200b@cliffhall - Serve the 2026-07-28 protocol revision alongside the 2025 era on stdio, through the SDK'sserveStdioentry (#4852). A 2026-07-28 client getsnotifications/resources/updatedformemory://knowledge-graphon asubscriptions/listenstream whoseresourceSubscriptionsname it; 2025-era clients still subscribe withresources/subscribe.
The first semantic version, resuming semver after the date-stamped releases (last 2026.8.31). It describes everything since 2026.8.31, and is the last release of the legacy-era server, on the 1.x MCP SDK.
-
#5008
bb8aa6f@cliffhall -create_entitiesnow reports the entities it skipped because their name already exists (or repeats earlier in the same call): the structured result lists them in a new optionalskippedarray, a second text item names them and points toadd_observations, and the tool description says so. Skipped entities are still not created and their observations are still not added (#4887). -
#4970
a8127ba@cliffhall - Build the server with an exportedcreateServer()factory and start stdio only when the package is run as a program, so importing the module no longer starts a server. Behavior over stdio is unchanged. -
#5037
7be08e9@cliffhall - Two server processes sharing one memory file no longer silently discard each other's writes: every write tool now holds an exclusive lock file (<memory file>.lock) while it reads, changes and saves the graph, and a lock left by a crashed server is recovered automatically (#4797). -
#4937
478db6a@cliffhall - Internal:ensureMemoryFilePathaccepts the directory its default files live in, so the server's tests no longer write into the package directory. No change to how the server chooses or migrates its memory file. -
#5035
2b1305f@cliffhall - Lines in the memory file that the server cannot read (malformed JSON, an entity or relation that fails validation, an unknown record type) are no longer deleted by the next write. They are still left out of the graph, and are now written back unchanged after the graph's own lines. -
#5053
c63255a@cliffhall - Stop shipping the compiled test helperdist/__tests__/helpers.jsin the published package: the build now excludes everything under__tests__/, not just*.test.ts. -
#5013
819ae90@cliffhall - Saving the knowledge graph keeps the memory file's permission bits (an operator's0600no longer comes back0644), and a write to a read-only memory file now fails withEACCESinstead of silently replacing it (#4827). -
#5087
09edf63@cliffhall - Require@modelcontextprotocol/sdk1.31.0 or later (was^1.30.0), so an install can no longer resolve an SDK version affected by GHSA-6qxp-vccf-f47h. The advisory concerns the SDK's OAuth client, which this server does not use.