Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Cognitive memory for coding agents: hybrid recall, remember/forget, knowledge graph, nightly dreams.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
ENGRAM_DB_PATH, ENGRAM_MCP_PORT, ENGRAM_MCP_TOKEN, ENGRAM_MCP_STANDALONEValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"engram": {
"command": "npx",
"args": [
"-y",
"@devinmlowe/engram",
"mcp"
],
"env": {
"ENGRAM_DB_PATH": "your-value",
"ENGRAM_MCP_PORT": "your-value",
"ENGRAM_MCP_TOKEN": "your-value",
"ENGRAM_MCP_STANDALONE": "your-value"
}
}
}
}Run this in your terminal
claude mcp add engram --env ENGRAM_DB_PATH=your-value --env ENGRAM_MCP_PORT=your-value --env ENGRAM_MCP_TOKEN=your-value --env ENGRAM_MCP_STANDALONE=your-value -- npx -y @devinmlowe/engram mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"engram": {
"command": "npx",
"args": [
"-y",
"@devinmlowe/engram",
"mcp"
],
"env": {
"ENGRAM_DB_PATH": "your-value",
"ENGRAM_MCP_PORT": "your-value",
"ENGRAM_MCP_TOKEN": "your-value",
"ENGRAM_MCP_STANDALONE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"engram": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@devinmlowe/engram",
"mcp"
],
"env": {
"ENGRAM_DB_PATH": "your-value",
"ENGRAM_MCP_PORT": "your-value",
"ENGRAM_MCP_TOKEN": "your-value",
"ENGRAM_MCP_STANDALONE": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
ENGRAM_DB_PATH envENGRAM_MCP_PORT envENGRAM_MCP_STANDALONE envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account devinmlowe, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: ENGRAM_MCP_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.5.0) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
*An engram is the hypothetical physical trace of memory in neural tissue — the biochemical change that encodes what we've learned.*
Local-first cognitive memory system that transforms raw LLM conversation history into structured, consolidated knowledge. Unlike traditional conversation search (which treats sessions as documents to retrieve), Engram mimics human memory architecture: episodic memories are captured, consolidated into semantic knowledge during "dream state" processing, and emergent connections surface through graph analysis — much like how a Zettelkasten's backlinks reveal Maps of Content that no individual note anticipated.
Designed as an MCP server for Claude Code and other LLM agents, with CLI and web visualization interfaces.
Prerequisites
node --version)engram sync to ingest your conversation history from ~/.claude/projectsremember, and the web visualizer work without one.Quick start — three commands
npx @devinmlowe/engram preflight # is this node/platform/arch/libc covered by prebuilt native modules? (fix per OS if not)
npm install -g @devinmlowe/engram # puts engram on your PATH; the postinstall hook runs the same preflight engram setup # doctor → init → sync (asked) → register every host present → install the three services → doctor --fix → one real extraction → summary
engram setup walks a bare install to running and ends by telling you which LLM tier did the extraction (extraction smoke: tier=ollama memories=3). Every step prints what it did and the manual command it stands for, so nothing is hidden. It installs all three services — the MCP HTTP daemon, the nightly dream timer and the web visualizer (port 3001, loopback) — by default (decision #62); --no-daemons or --daemons=mcp,dream narrows that, --host claude narrows host registration, --no-sync / --sync skip or force indexing, --no-smoke skips the extraction, --yes answers every question for scripts (the Linux loginctl enable-linger prompt is never implied), --json prints the result. With no LLM provider configured the dream timer is still installed and setup ends with [warn] dream timer installed but no LLM tier is reachable … naming the variables to set — exit 0; only a required doctor failure (or a failed init) exits 1. Later, engram doctor --fix repairs whatever is red — the service env file, a model cache inside node_modules, a missing Ollama model (asked first), a stopped MCP daemon, an unregistered host — printing the manual equivalent of each; a second run says nothing to fix. See CLI and docs/api-reference.md.
The same, by hand
engram mcp install claude # registers engram with Claude Code (codex | cursor | hermes | --all); restart the host
engram mcp install edits the host's own config for you — ~/.claude.json (--project: .mcp.json), ~/.codex/config.toml, ~/.cursor/mcp.json, or deploys the Hermes plugin — atomically, with the previous content kept in .bak, never touching other servers, and re-running is a no-op. It prefers the HTTP daemon (http://127.0.0.1:9907/mcp) when GET /health answers and falls back to stdio (node …/dist/interfaces/cli/index.js mcp, which bridges to the daemon itself once one runs), printing which and why; --transport http|stdio overrides, --dry-run shows the path and diff. A daemon token is referenced as an environment variable (${ENGRAM_MCP_TOKEN} / bearer_token_env_var / ${env:ENGRAM_MCP_TOKEN}), never written; engram mcp status reports every host, whether it points at this install, whether its daemon answers and whether the variable resolves. See Registering hosts below.
From source
git clone https://github.com/devinmlowe/engram.git
cd engram node scripts/preflight.cjs # optional: the native-dependency verdict before anything is installed npm install # runs the same preflight as postinstall, then builds via the "prepare" script npm link # puts engram on your PATH (or run node dist/interfaces/cli/index.js directly)
Either way, continue with engram setup — or step by step:
engram preflight # prebuilt / compiled locally / unsupported per native module, with the fix for this OS
engram doctor # node, platform/arch, native modules, model cache, ollama tier, llm providers, data dir, env file, install path, mcp daemon, hosts, extraction smoke — all [ok]? engram doctor --fix # apply the known remediations (env file, durable model cache, ollama pull with confirmation, start a stopped daemon, register a host) and re-check engram init # creates engram.db in the data dir (default ~/.local/share/engram; see Configuration) and downloads the embedding model engram sync # index conversations from ~/.claude/projects (optional) engram search "what did I decide about caching" engram mcp install --all # from a checkout: register every host present (~/.claude, ~/.codex, ~/.cursor, ~/.hermes) scripts/install-mcp-daemon.sh install; scripts/install-daemon.sh install; scripts/install-visualizer.sh install # the three services (what setup runs)
engram doctor ends with an extraction smoke line: one real extraction over your most recent conversation (or a bundled fixture when nothing is indexed yet) under a 60 s budget with a capped input, reporting tier= memories=N or every tier's reason when none answers. Memories it extracts from a real conversation are written like any other, stamped source=smoke (find them with engram memories list, remove them with forget); the fixture is never written. --no-smoke skips it; --strict exits 1 when any line is not [ok] (CI).
First run downloads models once.
engram init(or the first search) pulls several hundred
MB of model weights into
~/.local/share/engram/models(or$ENGRAM_MODEL_CACHE_DIR/
$HF_HOME/hub), where they survive reinstalls and upgrades; see Model cache.
Set
ENGRAM_RERANK_ENABLED=falseto skip the reranker model.
Install as a Claude Code plugin (recommended)
No clone, no absolute paths. In Claude Code:
/plugin marketplace add devinmlowe/engram
/plugin install engram@engram
This repo is its own marketplace (.claude-plugin/marketplace.json); the plugin (.claude-plugin/plugin.json) runs the published npm package as a stdio MCP server — npx -y @devinmlowe/engram@ mcp, version pinned to the release — and adds the /engram:recall, /engram:remember, /engram:explore-graph, /engram:reflect and /engram:engram-connect commands (bundled from commands/; their tools are mcp__plugin_engram_engram__ ). /mcp should list engram with 16 tools; the first recall downloads the embedding model once (see the note above). The plugin updates through the marketplace (/plugin update engram@engram after a release); engram update keeps handling the CLI, daemons and the Hermes plugin.
The very first start is slow. The first
npxrun installs the package and its prebuilt
native modules into the npm cache — once per pinned version, then it is a cache hit. If Claude
Code reports the server timed out during that install, raise its startup timeout (milliseconds):
MCP_TIMEOUT=120000 claude. Two warm paths:npm install -g @devinmlowe/engramfirst, so the
package (and
engram doctor/engram init) is already on the machine; or run the HTTP daemon
(
scripts/install-mcp-daemon.sh install, below) —engram mcpthen bridges to it and the host
process never opens the database or loads the model (see Transports).
Registering hosts (`engram mcp install`)
engram mcp install claude # ~/.claude.json (--project: ./.mcp.json)
engram mcp install codex # ~/.codex/config.toml (--project: ./.codex/config.toml) engram mcp install cursor # ~/.cursor/mcp.json (--project: ./.cursor/mcp.json) engram mcp install hermes # deploys interfaces/hermes-plugin to ~/.hermes (+ profiles that already have it) engram mcp install --all --dry-run # every host whose config dir exists; print path + unified diff, write nothing engram mcp status # registered? this install? daemon answering? ENGRAM_MCP_TOKEN resolving? engram mcp uninstall codex # removes only the engram entry; .bak keeps the previous content
Decisions: HTTP when the daemon answers /health, else stdio (#51); the token is referenced by environment variable and never written unless you pass --inline-token (#52). With the Claude Code plugin installed, mcp install claude skips the user-scope entry (it would register the server twice) unless --force; mcp status lists the plugin as a registered Claude host. A GUI-launched host does not inherit a fish/zsh login shell, so when the daemon requires a token mcp status prints the platform fix (launchctl setenv ENGRAM_MCP_TOKEN … on macOS, ~/.config/environment.d/ on Linux, setx on Windows). No host process is restarted, and the command needs no network beyond the loopback probe.
Manual configuration (if you would rather edit the file yourself)
Add the server to your Claude Code MCP config (~/.claude.json, or a project-level .mcp.json). From npm:
{
"mcpServers": { "engram": { "command": "npx", "args": ["-y", "@devinmlowe/engram", "mcp"] } } }
or, for a source checkout, point at the compiled server with an absolute path:
{
"mcpServers": { "engram": { "command": "node", "args": ["/absolute/path/to/engram/dist/interfaces/mcp/server.js"], "env": {} } } }
The .mcp.json shipped in this repo does the same thing with a repo-relative path and is picked up automatically when you open the engram checkout itself in Claude Code (it is for developing engram; the plugin does not use it).
Optional: background consolidation and visualization
./scripts/install-mcp-daemon.sh install # MCP HTTP daemon on 127.0.0.1:9907 via launchd (what the Hermes plugin talks to)
./scripts/install-daemon.sh install # nightly engram dream at 02:00 via launchd ./scripts/install-visualizer.sh install # macOS launchd visualizer
On Linux the same scripts detect uname -s and install systemd *user* units instead (no root; loginctl enable-linger $USER if you want them to run while logged out):
./scripts/install-mcp-daemon.sh install # renders systemd/engram-mcp.service, enables it (Restart=always)
./scripts/install-mcp-daemon.sh status # unit state, GET /health, effective data dir, last log lines ./scripts/install-daemon.sh install # renders systemd/engram-dream.{service,timer}, enables engram-dream.timer ./scripts/install-daemon.sh status # systemctl --user list-timers + last log lines ./scripts/install-daemon.sh run-now # systemctl --user start engram-dream.service
macOS/Linux: MCP HTTP daemon lifecycle
scripts/install-mcp-daemon.sh has the same six verbs as its Windows sibling (install, uninstall, start, `stop
Only the beginning is shown; read the rest in the repo