RE-call MCP Memory Server
io.github.GiulioDER · Updated
Agent memory on your own Postgres that flags superseded facts and abstains instead of guessing.
At a glance
RE-call MCP Memory Server is an MCP server in the AI & Memory category. It runs locally over stdio via `uvx recall-rag`, and needs RECALL_SERVING_DSN. It scores B (76/100) on the MCP Skills Hub health score as of Oct 28, 2026.
One-click install
Opens your editor and pre-fills the config. Your editor will ask before adding it.
How to install RE-call MCP Memory Server in your AI client
Setup for Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Cline and VS Code — copy-paste ready.
How to install RE-call MCP Memory Server in Claude CodeAnthropic's agentic CLI
Add the server
bashclaude mcp add re-call -e 'RECALL_SERVING_DSN=<RECALL_SERVING_DSN>' -- uvx recall-ragFill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Verify it's connected
bashclaude mcp listSharing it with your team?
Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).
Use it in a session
Ask Claude to use the tools this server exposes. It discovers them automatically.
How to install RE-call MCP Memory Server in Claude DesktopDesktop app (MCP config)
Open your MCP config
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json
Add this server
json{ "mcpServers": { "re-call": { "command": "uvx", "args": [ "recall-rag" ], "env": { "RECALL_SERVING_DSN": "<RECALL_SERVING_DSN>" } } } }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Restart Claude Desktop
The tools appear under the 🔌 menu once the app reloads.
How to install RE-call MCP Memory Server in CursorAI-first code editor
Create / edit .cursor/mcp.json in your project
json{ "mcpServers": { "re-call": { "command": "uvx", "args": [ "recall-rag" ], "env": { "RECALL_SERVING_DSN": "<RECALL_SERVING_DSN>" } } } }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Enable it
Cursor Settings → MCP → toggle the server on. Tools become available to the Composer/Agent.
How to install RE-call MCP Memory Server in Codex CLIOpenAI coding agent
Add to ~/.codex/config.toml
toml[mcp_servers.re-call] command = "uvx" args = ["recall-rag"] env = { RECALL_SERVING_DSN = "<RECALL_SERVING_DSN>" }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Run Codex
Codex loads MCP servers from config.toml on startup and exposes their tools to the agent.
How to install RE-call MCP Memory Server in WindsurfCodeium's agentic IDE
Edit ~/.codeium/windsurf/mcp_config.json
json{ "mcpServers": { "re-call": { "command": "uvx", "args": [ "recall-rag" ], "env": { "RECALL_SERVING_DSN": "<RECALL_SERVING_DSN>" } } } }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Reload
Windsurf → Cascade → refresh MCP servers. Cascade can now call the tools.
How to install RE-call MCP Memory Server in ClineVS Code autonomous agent
Open Cline → MCP Servers → Configure
Adds to cline_mcp_settings.json.
Add the server
json{ "mcpServers": { "re-call": { "command": "uvx", "args": [ "recall-rag" ], "env": { "RECALL_SERVING_DSN": "<RECALL_SERVING_DSN>" } } } }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
How to install RE-call MCP Memory Server in VS CodeCopilot / MCP support
Create .vscode/mcp.json
json{ "servers": { "re-call": { "type": "stdio", "command": "uvx", "args": [ "recall-rag" ], "env": { "RECALL_SERVING_DSN": "<RECALL_SERVING_DSN>" } } } }Fill in your credentials
Replace <RECALL_SERVING_DSN> with your real value. Keep secrets out of any config file you commit.
Start it
VS Code shows a ▶ Start action above the server entry. Agent mode (Copilot Chat) can then use the tools.
What does RE-call MCP Memory Server need from you?
API key — PostgreSQL serving DSN for the RE-call memory store.
RECALL_SERVING_DSNrequiredsecretEnvironment variablePostgreSQL serving DSN for the RE-call memory store.
RECALL_TENANToptionalEnvironment variableTenant id served by this local stdio server.
RECALL_TRUST_MODEoptionalEnvironment variableSet to development only for local uncalibrated corpora.
RECALL_EMBEDDERoptionalEnvironment variableThe embedder the corpus was BUILT with, for example voyage:voyage-4 or BAAI/bge-large-en-v1.5. It must match: several models emit 1024 dimensions, so a mismatch does not error, it returns a confidently ranked list that means nothing.
RECALL_TABLEoptionalEnvironment variableThe chunk table inside that database. `recall quickstart` indexes into quickstart_chunks so its sample corpus can never be retrieved beside real memory; `recall setup` uses chunks. The wrong value returns no hits and no error.
RECALL_MCP_TOOLSoptionalEnvironment variableOptional. Serve a subset of the tools: a preset (all, search, read) or explicit names. Every tool definition is re-sent every turn, so serving ones nobody calls costs input tokens on every turn. Unset serves them all.
Pass secrets through your shell environment rather than committing them into a config file.
What tools does RE-call MCP Memory Server expose?
This server runs as a local package. We only query remote servers for their tool list — asking this one would mean executing it, so its tools are listed in the documentation below.
What the code can do
Source analysis currently covers npm packages only. This server ships as a Python package, which needs a different parser.
Before you install
Signals gathered from the source repo and package registry — not a safety verdict.
What it can reach
- Runs code on your machine — Executes as a local process with your user's permissions, including filesystem access.
- Downloads at launch — The package is fetched from its registry each run unless you pin a version.
- Last commit today — Actively maintained.
- 6 GitHub stars — Very little community usage so far.
Client compatibility
Health score
B · 76Maintenance, adoption, transparency and packaging — not a safety audit. How this is calculated
- Maintenance30%100%
Last commit 0 days ago.
- Adoption20%26%
6 stars.
- Transparency20%75%
3/4: ✓ public source repo, ✓ declared license, ✓ documentation, ✗ discoverable tool list.
- Provenance15%75%
Links to its own repository; package linkage unverified.
- Packaging15%100%
Publishes a pinned version (0.14.0).
Documentation
Full README<b>Memory that abstains instead of guessing.</b> RE-call is agent memory in a local SQLite file or your own PostgreSQL with pgvector. Each result carries a verdict, confidence, and provenance, while unsupported questions are refused instead of answered by the nearest match.
What it is · For agents · How it works · Start with Lite · Install and integrate
What is RE-call
RE-call is agent memory in a local SQLite file or your own PostgreSQL database. It indexes source documents and keeps validity, lineage, confidence, and provenance attached to every result.
Vector search returns nearby text. RE-call also checks whether that text is current, supported, and trustworthy enough for the query. A superseded claim is marked superseded; a result that does not clear the calibrated trust gate becomes ABSTAIN with a reason. Declared supersession makes the current memory win over stale but similar memory.
The default path uses local embeddings plus hybrid dense and keyword retrieval. PostgreSQL uses its full text search; Lite uses SQLite FTS5. It needs no memory-layer LLM call. Additional retrieval, reasoning, and structured-fact modules are optional.
For the agent reading this, RE-call for agents explains the experience loop and how to use persistent memory as a trustworthy past rather than an unverified scratchpad.
How it works
On PostgreSQL, RE-call builds an immutable, calibrated generation and serves queries against that pinned generation. Lite binds calibration to its single-file corpus. Every search, including the reasoning and fact paths, goes through trusted search and the trust gate.
The diagram is interactive on the project site: click any box to see the source lines it describes. A step by step view of one `recall_search` call follows a single search through its refusal, abstention and answer paths. Both are generated from the sources in docs/diagrams.
<details> <summary>Text version of the diagram, with each box linked to its file</summary>
Solid arrows are the default path. Dashed arrows are opt in or reasoning only: the reranker, graph expansion, and the answer provider. Each box links to the file that implements it.
flowchart LR
subgraph group_entry["Entry points"]
node_cli["recall CLIcommands"]
node_mcp["MCP servertool handlers"]
node_sdk["Agent SDKin process"]
end
subgraph group_build["Generation build"]
node_manifest["Source manifestimmutable input"]
node_generations["Generation managerbuild, validate, promote"]
node_parser["Parse and chunkdocuments to chunks"]
node_embedder["Embedderlocal or hosted API"]
node_graph_build["Semantic graphentities, relations"]
node_calibration["Calibrationcertified threshold"]
end
subgraph group_serve["Trusted retrieval"]
node_trusted_search["Trusted searchquery orchestrator"]
node_gen_store["Generation storepinned generation"]
node_retriever["Hybrid retrieverdense, full text, RRF"]
node_reranker["Rerankeropt in"]
node_trust_gate{{"Trust gateverdict or ABSTAIN"}}
end
subgraph group_reason["Reasoning"]
node_reasoner["Reasoning queryevidence bundle, plan"]
node_graph_expansion["Graph expansionone hop, before trust"]
node_answer["Answer provideropt in LLM"]
end
subgraph group_facts["Provenance and facts"]
node_provenance["Provenance controllerfact review"]
node_ledger["Fact ledgerappend only"]
end
node_caller(("Agent or usercaller"))
node_postgres[("PostgreSQL + pgvectorgenerations, chunks, graph")]
node_caller -->|"runs"| node_cli
node_caller -->|"tool calls"| node_mcp
node_caller -->|"imports"| node_sdk
node_sdk -->|"reuses handlers"| node_mcp
node_cli -->|"generation build"| node_generations
node_mcp -->|"ingest uploads"| node_generations
node_generations -->|"reads sources"| node_manifest
node_generations -->|"parses, chunks"| node_parser
node_generations -->|"embeds chunks"| node_embedder
node_generations -->|"builds graph"| node_graph_build
node_generations -->|"requires certified"| node_calibration
node_generations -->|"writes generation"| node_postgres
node_graph_build -->|"writes graph"| node_postgres
node_cli -->|"calibrate, publish"| node_calibration
node_calibration -->|"stores threshold"| node_postgres
node_cli -->|"search"| node_trusted_search
node_mcp -->|"search, evidence"| node_trusted_search
node_trusted_search -->|"pins generation"| node_gen_store
node_gen_store -->|"reads active"| node_postgres
node_trusted_search -->|"retrieves"| node_retriever
node_retriever -->|"embeds query"| node_embedder
node_retriever -->|"dense, full text"| node_gen_store
node_retriever -.->|"reorders"| node_reranker
node_trusted_search -->|"evaluates"| node_trust_gate
node_mcp -->|"reasoning query"| node_reasoner
node_reasoner -->|"retrieves"| node_trusted_search
node_trusted_search -.->|"expands pre trust"| node_graph_expansion
node_graph_expansion -.->|"same generation graph"| node_postgres
node_reasoner -.->|"cited answer"| node_answer
node_mcp -->|"apply fact"| node_provenance
node_provenance -->|"fresh search"| node_trusted_search
node_provenance -->|"appends"| node_ledger
node_ledger -->|"stores"| node_postgres
click node_cli "https://github.com/GiulioDER/RE-call/blob/master/recall/cli.py"
click node_mcp "https://github.com/GiulioDER/RE-call/tree/master/recall_mcp"
click node_sdk "https://github.com/GiulioDER/RE-call/blob/master/recall_agent/memory.py"
click node_manifest "https://github.com/GiulioDER/RE-call/blob/master/recall/manifest.py"
click node_generations "https://github.com/GiulioDER/RE-call/blob/master/recall/generations.py"
click node_parser "https://github.com/GiulioDER/RE-call/blob/master/recall/document.py"
click node_embedder "https://github.com/GiulioDER/RE-call/blob/mast
…Excerpt — the full document is on GitHub.
Alternatives to RE-call MCP Memory Server
- inspeximus: agent memory with provenance, GDPR erasure and a tamper-evident audit trailB · 77Self-correcting agent memory: recall, supersede, revert, forget, GDPR erasure, audit receipts.
- ctxstore — memory that follows you across modelsB · 65Persistent memory for AI agents: keyed facts, a wake bundle each session, one memory in every model.
- agent-memoryB · 71Agent memory: free durable storage (any keypair, no signup) that survives sessions and machines.
- memoryD · 33Persistent agent memory paid per call via x402 USDC. Your wallet is your private memory namespace.
Maintain RE-call MCP Memory Server? Add a badge to your README
Shows its health grade, and links readers to install steps for every client.
[](https://mcp-skills-hub.vercel.app/mcps/io-github-giulioder-re-call)Catalog data refreshed . Something wrong? Report it.