Keymem MCP server
io.github.donggyun112/keymem·v0.17.0·3 starsAssociative key-graph memory for LLM agents — recall by association, not vector similarity.
3 stars404 downloads/wk
Reviews
Write oneNobody has reviewed Keymem yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Keymem tools (14, 2 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
cleanup_expiredwrite actionDelete all memories past their ttl. Returns count of deleted memories. Call periodically to keep memory clean.
correctwrite actionUpdate outdated information. Use when user corrects you or info changes (e.g. moved cities, changed job). Old version is preserved but weakened — never lost. Omit keys to keep the same search terms. related_to links the updated memory to other memory IDs.
forgetPermanently delete a memory. Only use for completely wrong information. For outdated info, use correct() instead — it preserves history.
get_conversationLoad the original conversation turns for a past session when a recalled memory lacks the detail you need and you want the verbatim exchange. Reads the host coding agent's own on-disk transcript (Claude Code, Codex) — call list_sessions first to find a session_id. Falls back to keymem's own conversation log if a host integration wrote one. Pass turn to fetch a focused ±2-turn window (5 turns total)
list_memoriesList all stored memories. namespace filters by project/context. Expired memories are excluded. Prefer recall() for normal retrieval.
list_sessionsList recent conversation sessions recorded by host coding agents (Claude Code, Codex) on this machine, most recently modified first. Use this to discover a session_id (and its working directory) before calling get_conversation to read the verbatim transcript. Returns [{agent, session_id, cwd, modified, preview}] where preview is the first user message. Returns an empty array if no agent transcript
memory_statsGet counts of keys, memories, and links in the system.
read_keyList the memories stored under one key (concept), ranked. Returns the canonical key, its aliases, and hub metadata plus ranked memory IDs and metadata — never memory content. Call read_memory on promising handles. Use limit/offset to page through hub keys without flooding context. Pass the original query: handles are then ranked by content relevance to it, which is essential for hub keys so the ta
read_memoryRead the full content of one stored memory (selected via read_key). Returns the memory and all connected key clusters so exploration can continue Key → Memory → Key. Pass via_key_id from the selected key: only that traversed edge is Hebbian-reinforced, and depth/access count increase only when this full read occurs.
recallSearch long-term memory for what is already known about the user, project, or topic — call this before your first reply and whenever the topic shifts. Returns matching key clusters only (not memory content): canonical concept, aliases, key type, match score, linked-memory count, hub status, and specificity. Follow up with read_key(key_id) then read_memory(memory_id, via_key_id) to read a stored fa
recall_memoriesOptional compatibility mode: directly return ranked memories using BM25+dense+RRF and graph expansion. Disabled unless KEYMEM_DIRECT_RECALL=true. Prefer recall → read_key → read_memory for agent-driven navigation.
relatedFind other memories associated with a memory you already have (by ID). Returns neighboring memories connected by shared keys or explicit links. For normal agent-driven navigation prefer read_memory(), inspect its returned keys, then call read_key().
rememberSave important information to memory. Keys are search terms — think 'what would I search to find this later?' Use 3-6 diverse keys. Before coining new keys, recall() the topic and reuse returned canonical concepts or aliases. Semantically merged synonyms become aliases in one key cluster; shared broad keys become navigable hubs. CROSS-LINGUAL: add keys in both languages. namespace groups memories
remember_batchSave multiple memories in one call. Each item: {content, keys, key_types?, namespace?, ttl_seconds?, related_to?}. Returns list of saved IDs. More efficient than multiple remember() calls.
Public scan report
scanner v0.1.9 · 2026-09-25 · same rubric, same numbers if you re-run it
- Code scan29 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 5 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Keymem compares
Against every graded AI and agents MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 90% of 4,461 AI and agents servers
- Tools
- 14
- the typical AI and agents server has 6
- Tools that change things
- 14%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 3
- more than 75% of 2,713 AI and agents servers
- Downloads a week
- 404
- more than 84% of 1,554 AI and agents servers with a package
What its tools let an agent do: 12 read · 2 change
Install Keymem in Claude Code, Cursor or VS Code
Runs npx -y keymem on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add keymem -- npx -y keymem
What the publisher says
From the Keymem repository's README, as published. We do not edit it. Read it on GitHub
keymem
The associative memory layer for LLM agents — recall by association, not just similarity.
Most agent memory is a vector store. It surfaces what sounds like your query — and misses everything your query is connected to.
keymem stores memories in a key graph instead. A search for "Newton" can still reach "strawberries" — Newton → apple → fruit → strawberry. The path lives in the graph, not in embedding space. It runs locally as an MCP server, so any MCP-compatible agent gets human-like associative recall with no external database.
Works with: Claude Desktop · Claude Code · any MCP-compatible LLM agent
Why associative memory?
Vector-store memory retrieves by embedding similarity. That works until the thing you need isn't similar to the words you typed:
Query: "Newton"
Similarity search finds: "Newton discovered gravity" ✅
Similarity search misses: "user likes strawberries" ❌A person makes the leap anyway — Newton reminds them of the apple, apples are fruit, they like strawberries. keymem makes that same leap because the path exists in the key graph: Newton → apple memory → fruit key → strawberry memory. No embedding distance connects "Newton" and "strawberry"; a chain of shared keys does.
This is the core idea: memories are not islands ranked by distance. They are nodes in an N:M key/value graph that an agent can walk.
How it works
Key Space (concepts) Value Space (memories)
[apple] ────────┬─────────→ ↑ same memory
[gravity] ────────┘
│
[apple] ────────┼─────────→ "apples are red fruit"
[fruit] ──────┬─┘
[red] ──────┤
│
[fruit] ──────┼─────────→ "user likes strawberries"
[strawberry]────┘Memories live in a Value Space, reached through a separate Key Space — one memory reachable via many keys, one key leading to many memories.
recall("Newton") returns matching key clusters such as [Newton] and [apple] plus one passive Top-1 memory under the strongest key. That memory carries matchedkey, validity, and connectedkeys, so the agent can answer immediately or continue through read_key(fruit).
The default MCP flow remains Key → Memory → Key, but its first Key → Memory hop is completed in one call. Only one memory enters context automatically; later hops remain deliberate.
The animation at the top shows this on a real store: three recall() calls walk from a profile key to a verification philosophy, loading three memories (~2.4k tokens). The branches the agent skipped are still one call away, and auto-expanding the same 12-memory hub would have cost ~8k tokens. The graph knows the roads; the agent decides the steps. Source: docs/demo/chain-walk.html.
Quick Start
keymem is an MCP server (a CLI), not a library. Run it with npx -y keymem (recommended —
always the latest) or install the command globally with npm i -g keymem. Do not add it to
your app with npm i keymem as a dependency: it bundles openai, zod, and the MCP SDK, so
inside an existing project it just duplicates those trees (and can clash with your app's zod/
openai versions). The npm i keymem line npm shows on the package page is for libraries — it
doesn't apply here.
# Optional global install (npx needs none). This puts a `keymem` command on PATH that
# MCP clients can spawn. Run bare, it starts a stdio MCP server and waits for a client —Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Keymem: common questions
- Is Keymem MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Keymem safety report
- How do I install Keymem?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Keymem need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Keymem maintained?
- The last commit was 46 days ago (2026-09-20). The latest release is v0.17.0.
- What can I use instead of Keymem?
- Servers from other publishers that do the same job: MCP AutoMem MCP server, Total Agent Memory MCP server and Mnemoverse Memory MCP server. Compare all Keymem alternatives.
- How does Keymem compare with other AI and agents MCP servers?
- safety score 92/100 (higher than 90% of 4,461 AI and agents servers); tools 14 (the typical AI and agents server has 6); tools that change things 14% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Keymem
Same job from other publishers: the closest match first, then the best rated.
- MCP AutoMemGraph-vector memory for AI assistants using FalkorDB and Qdrantnot reviewedEstablishedC
- Total Agent MemoryPersistent local memory for coding agents: temporal knowledge graph, procedural and episodic recallnot reviewedEstablishedA
- Mnemoverse MemoryHosted agent memory that learns from outcomes, with shared rooms. No key: mcp.mnemoverse.com/mcpnot reviewedEstablishedA
- Agent RecallCorrection-first agent memory. Precision KPI tracks if agents heed warnings. 5 layers, local-only.not reviewedEstablishedA
- Basic MemoryLocal-first knowledge management with bi-directional LLM sync via Markdown files.not reviewedWidely usedB