links-enos
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
links-enos
A dependency-free MCP memory server over stdio — one process, one JSON-RPC pipe, one SQLite file.
中文摘要:links-enos 是一个零第三方依赖的 MCP 记忆服务器,走 stdio 传输,用单个 SQLite 文件按项目保存记忆。装好即可被 Claude Desktop、VS Code、Cursor、ZooCode 等 MCP 客户端直接拉起。
What it does
Gives an MCP client durable memory: write a fact once, then search or recall it in later sessions.
Keeps one SQLite database per project (
<cwd>/.enos/memory.db), so unrelated projects never share memories.Exposes eight
memory_*tools, uses the standard library only, and degrades full-text search toLIKEwhen SQLite lacks FTS5.
Related MCP server: ctxmem
Install
Only Python >= 3.8 is required, and only for the Python forms. Pick one path:
Can the machine that runs the server use Python >= 3.8?
├─ yes ─┬─ working from a source checkout ─────► A. editable install
│ └─ want a pinned artifact ────────────► B. wheel
└─ no ──┬─ a container runtime is available ──► C. Docker image
└─ no runtime available ──────────────► D. single-file binaryA. Editable install (source checkout)
git clone https://github.com/manageryone-cmd/links-enos.git
cd links-enos
python3 -m pip install -e .
links-enos --selftestB. Wheel
python3 -m pip install build
python3 -m build --wheel
python3 -m pip install dist/links_enos-*.whl
links-enos --selftestC. Docker
docker build -t links-enos:latest .
docker run -i --rm -v "$PWD/.enos:/data" links-enos:latest-i is required (-t must not be used): stdin/stdout is the transport.
D. Single-file binary
Build on a machine that has Python and PyInstaller; the result needs neither.
python3 -m pip install "pyinstaller>=6.0"
./scripts/build_binary.sh # -> dist/links-enos
./dist/links-enos --selftestInstall non-interactively
install_mcp.py merges one server entry into each client's own config file, backs the file up first,
and never touches other entries. It assumes no interaction: it never prompts, so scripts and
agents can run it unattended.
python3 install_mcp.py --yes --target all
python3 install_mcp.py --yes --target cursor,claude-desktop
python3 install_mcp.py --yes --target zoocode --mode docker --image links-enos:latestflag | effect |
|
|
|
|
| print the JSON entry that would be written; writes nothing |
| show every file that would change; writes nothing |
| list detected clients and their config paths; writes nothing |
| non-interactive flag, accepted so automation can state it explicitly |
| key used inside the client config (default |
Exit codes: 0 success, 1 one or more targets failed (their files were left untouched),
2 invalid launch options. The examples below use the key links-enos; pass
--server-name links-enos if you want the installer to write the same key.
Use with an MCP client
Claude Desktop
Config file: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS),
%APPDATA%\Claude\claude_desktop_config.json (Windows), ~/.config/Claude/claude_desktop_config.json (Linux).
Full file: examples/claude_desktop_config.json.
{
"mcpServers": {
"links-enos": {
"command": "python3",
"args": ["-m", "enos.mcp_server"],
"env": { "PYTHONPATH": "<path-to-links-enos>" }
}
}
}Replace <path-to-links-enos> with your checkout, or, after a wheel install, drop env and use
"command": "links-enos", "args": [].
VS Code
Workspace file .vscode/mcp.json. Full file: examples/vscode-mcp.json.
{
"servers": {
"links-enos": {
"type": "stdio",
"command": "python3",
"args": ["-m", "enos.mcp_server", "--db", "${workspaceFolder}/.enos/memory.db"],
"env": { "PYTHONPATH": "${workspaceFolder}" }
}
}
}Cursor
Config file ~/.cursor/mcp.json, same mcpServers shape as Claude Desktop. Cursor expands
${workspaceFolder}, so one global config follows the open project:
{
"mcpServers": {
"links-enos": {
"command": "python3",
"args": ["-m", "enos.mcp_server", "--db", "${workspaceFolder}/.enos/memory.db"],
"env": { "PYTHONPATH": "${workspaceFolder}" }
}
}
}ZooCode
MCP settings JSON. Full file: examples/zoocode-mcp_settings.json.
{
"mcpServers": {
"links-enos": {
"command": "python3",
"args": ["-m", "enos.mcp_server"],
"env": { "PYTHONPATH": "<path-to-links-enos>" },
"disabled": false,
"autoApprove": [],
"timeout": 60
}
}
}For all of the above, python3 install_mcp.py --yes --target all writes the entry for you.
Verify install
Run the same self-check before and after wiring a client:
python3 -m enos --selftestIt writes, searches and deletes one probe memory, prints a single JSON line, and exits:
{"ok": true, "version": "1.0.0", "db_path": "/path/to/project/.enos/memory.db", "fts5": true, "python": "3.12.0"}exit code | meaning |
| round-trip OK (the probe was written, found, then removed) |
| round-trip failed (the probe was not found) |
| the database could not be opened (bad path or permissions) |
The flag is the same in every form: links-enos --selftest, ./dist/links-enos --selftest,
docker run --rm --entrypoint python links-enos:latest -m enos.mcp_server --selftest.
Tools
All eight tools are namespaced memory_*. The wire-level JSON Schemas live in
examples/tools.snapshot.json; the short contract card is
docs/PROTOCOL.md.
tool | what it does | main arguments |
| Persist a durable memory (fact, decision, preference, snippet); idempotent for the same content in the same scope |
|
| Full-text search (FTS5 when available, |
|
| Fetch one memory by id, including full content |
|
| List recent memories, newest / most important first |
|
| Soft delete by default; |
|
| Build a compact Markdown context block from relevant memories |
|
| Database path, entry counts per scope, top tags, FTS availability | — |
| Export memories as portable JSON for backup or migration |
|
Data
Resolution order, first match wins:
--db /path/to/memory.db$ENOS_MEMORY_DB<cwd>/.enos/memory.db— the default, created on first launch
The default is deliberately project-scoped: a client that starts the server inside a repository gets
that repository's database, so memories never bleed between projects. .enos/ and *.db are
git-ignored. WAL mode is enabled when the filesystem supports it; the database is a single file, so
backup or move it with ordinary file copies.
Legacy: ~/.enos
Older builds used a fixed ~/.enos/memory.db. Nothing reads that path automatically anymore. To keep
old memories, copy the file to your project's .enos/memory.db or pass --db ~/.enos/memory.db.
Not in this repository
Scope is deliberately narrow: this repository ships the memory MCP server only. Anything beyond storing and recalling memories is out of scope here.
Development
PYTHONPATH=. python3 -m unittest discover -s tests -t . -p 'test_*.py'The suite covers storage and project isolation, the stdio JSON-RPC round-trip, and installer config
merging. Packaging metadata lives in setup.cfg; the shell and Docker entry points are setup.sh,
scripts/build_binary.sh and scripts/build_docker.sh.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted agent memory: store, search, and recall facts across sessions from any MCP client.
Cross-tool persistent memory and context for AI assistants over MCP.
Persistent personal memory for AI assistants — save, search, and recall across every MCP client.
Persistent memory shared across Claude, ChatGPT, Grok and other MCP clients.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides a persistent project memory for AI assistants via MCP tools, enabling querying and teaching of concepts, decisions, and patterns stored in an SQLite database.4 npmMIT
- AlicenseNot gradedqualityAmaintenanceProvides AI agents with persistent, local, and shareable project memory by storing decisions and code context in a searchable SQLite index, supporting keyword and semantic search via MCP.3MIT
- AlicenseBqualityCmaintenanceProvides local, explicitly scoped memory for coding agents via MCP, storing durable project knowledge in a per-repository SQLite database with tools to record, search, and retrieve context.5MIT
- AlicenseAqualityBmaintenanceProvides persistent, searchable memory for AI agents across any MCP-compatible client, storing project context, user preferences, and session learnings locally in SQLite with tools to save, retrieve, search, and manage them.129 npmMIT