recall
# recall
A **zero-dependency MCP server** for cross-session memory recall in Claude Code. It exposes lexical `search` / `list` / `get` over your Claude memory files so a new session can find what past sessions decided and learned, without re-explaining.
No native deps, no SDK: pure Node stdlib implementing the MCP stdio JSON-RPC protocol by hand. It installs and runs anywhere Node 18+ exists.
## Why
Context is fragile across sessions; power users build their own (Chronicle, Recall-with-Redis) to recall files, decisions, and chats. Memory consolidation work (RecMem, agentmemory) shows the value of distilling recurring knowledge rather than re-loading everything. recall is the minimal, dependency-free first step: make the memory you already write searchable from any session.
## Tools
- `recall_search(query, limit=5)`: ranked lexical search over memory files, returns name, score, snippet, file.
- `recall_list()`: all memory entries (name, description, file).
- `recall_get(name)`: full content of one entry by frontmatter name or filename.
Read-only by design in v0.1. It never writes or deletes.
## Install (Claude Code)
Add to your MCP config (`~/.claude/settings.json`, or wherever you manage MCP servers):
```jsonc
"mcpServers": {
"recall": {
"command": "node",
"args": ["C:\\Users\\<you>\\recall\\server.js"],
"env": { "RECALL_MEMORY_DIR": "" }
}
}
```
- `RECALL_MEMORY_DIR` (optional): point at a specific memory folder. If unset, recall scans every `~/.claude/projects/<slug>/memory/` directory.
- As a plugin, `.claude-plugin/plugin.json` already declares the server via `${CLAUDE_PLUGIN_ROOT}/server.js`.
Restart Claude Code; the `recall_*` tools appear.
## Verify it yourself (no network needed)
```bash
printf '%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | node server.js
```
You should get an `initialize` result with `serverInfo` and a `tools/list` with three tools.
## Limits / roadmap
- v0.1 is **lexical** (term-frequency). It does not do semantic/embedding search yet.
- v0.2 (planned): optional embeddings + hybrid retrieval (e.g. sqlite-vec + BM25/FTS5) behind a flag, plus confidence/lifecycle tags. Those add native deps; v0.1 stays dependency-free on purpose.
## License
MIT
---
Part of the **[claude-code-skills](https://github.com/Zavelinski/claude-code-skills)** collection: a one-line [Claude Code](https://claude.com/claude-code) plugin marketplace of focused skills, plugins, and MCP servers.
```
/plugin marketplace add Zavelinski/claude-code-skills
```
TDQS
Scored across 3 tools
Each tool serves a clearly distinct purpose: recall_get retrieves a single entry by name, recall_list enumerates all entries, and recall_search performs lexical search. No functional overlap exists.
All tools follow a consistent 'recall_verb' pattern with clear, imperative verbs (get, list, search). The naming is predictable and easy to understand.
With only 3 tools, the surface is minimal but appropriate for a read-only memory retrieval server. It covers the essential retrieval operations without unnecessary bloat.
The server provides complete coverage for reading memories (get by name, list all, search). Missing write operations (create, update, delete) are likely intentional, making the set complete for its stated purpose.