RE-call MCP Memory Server

io.github.GiulioDER由 GitHub 帳號 GiulioDER 發布v0.14.0更新於 Nov 3, 2026

Agent memory on your own Postgres that flags superseded facts and abstains instead of guessing.

發布方自己的服務:Memory.fit

已驗證STDIO僅桌面資料庫知識與記憶

概覽

AI 產生的概覽

本機 stdio MCP 伺服器,為助理提供以 SQLite 或 PostgreSQL 儲存的持久記憶,附帶可信判定、失效標記,並在沒有把握時拒答而非猜測。

可以做什麼
  • 以稠密向量與關鍵字混合檢索已索引的記憶,回傳判定、信心度與來源
  • 將過期或未通過校準信任門檻的結果標記為已被取代或直接拒答
  • 執行顯式推理查詢,可選用有界圖形擴展與受引用約束的回答
  • 經來源控制器把已審核的結構化事實寫入僅可追加的事實帳本
  • 在 Lite 的 SQLite 模式下自動或按需重新整理變更的筆記檔案
適用情境
適合需要長期、可稽核的專案筆記或文件記憶,且希望助理對無法支撐的問題拒答或標註,而不是回傳最相近文字的場景。可用於單機單專案的 Lite 模式,或自架 PostgreSQL 加 pgvector 的共享多租戶服務。
執行需求
以 stdio 在本機執行,從 PyPI 套件 recall-rag 透過 uvx 安裝;README 指出 Lite 僅存在於原始碼建置,已發佈的 wheel 尚未包含。需要 RECALL_SERVING_DSN 提供 PostgreSQL 服務 DSN,以及與索引語料一致的 RECALL_EMBEDDER、RECALL_TABLE 與 RECALL_TENANT。PostgreSQL 路徑需 pgvector,Lite 不需資料庫伺服器。需 Python 3.11 或更新版本。
安裝前請注意
RECALL_SERVING_DSN 是資料庫憑證,可存取記憶庫。安裝流程會寫入檔案並註冊 MCP 用戶端,伺服器也可向僅可追加的帳本寫入事實。使用託管嵌入模型時,查詢與語料文字會離開本機環境。RECALL_TRUST_MODE 設為 development 會關閉校準信任;儲存檔案應放在本機磁碟並做好備份。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 RE-call MCP Memory Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[RE-call: memory that knows when not to guess]

Memory that abstains instead of guessing.
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.

[CI] [PyPI version] [License: AGPL-3.0] [Python 3.11+] [PostgreSQL + pgvector]

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.

[RE-call architecture: entry points, the generation build, trusted retrieval against a pinned generation, 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.

Text version of the diagram, with each box linked to its file

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.

mermaid
flowchart LR
subgraph group_entry["Entry points"]  node_cli["recall CLI<br/>commands"]  node_mcp["MCP server<br/>tool handlers"]  node_sdk["Agent SDK<br/>in process"]end
subgraph group_build["Generation build"]  node_manifest["Source manifest<br/>immutable input"]  node_generations["Generation manager<br/>build, validate, promote"]  node_parser["Parse and chunk<br/>documents to chunks"]  node_embedder["Embedder<br/>local or hosted API"]  node_graph_build["Semantic graph<br/>entities, relations"]  node_calibration["Calibration<br/>certified threshold"]end
subgraph group_serve["Trusted retrieval"]  node_trusted_search["Trusted search<br/>query orchestrator"]  node_gen_store["Generation store<br/>pinned generation"]  node_retriever["Hybrid retriever<br/>dense, full text, RRF"]  node_reranker["Reranker<br/>opt in"]  node_trust_gate{{"Trust gate<br/>verdict or ABSTAIN"}}end
subgraph group_reason["Reasoning"]  node_reasoner["Reasoning query<br/>evidence bundle, plan"]  node_graph_expansion["Graph expansion<br/>one hop, before trust"]  node_answer["Answer provider<br/>opt in LLM"]end
subgraph group_facts["Provenance and facts"]  node_provenance["Provenance controller<br/>fact review"]  node_ledger["Fact ledger<br/>append only"]end
node_caller(("Agent or user<br/>caller"))node_postgres[("PostgreSQL + pgvector<br/>generations, chunks, graph")]
node_caller -->|"runs"| node_clinode_caller -->|"tool calls"| node_mcpnode_caller -->|"imports"| node_sdknode_sdk -->|"reuses handlers"| node_mcpnode_cli -->|"generation build"| node_generationsnode_mcp -->|"ingest uploads"| node_generationsnode_generations -->|"reads sources"| node_manifestnode_generations -->|"parses, chunks"| node_parsernode_generations -->|"embeds chunks"| node_embeddernode_generations -->|"builds graph"| node_graph_buildnode_generations -->|"requires certified"| node_calibrationnode_generations -->|"writes generation"| node_postgresnode_graph_build -->|"writes graph"| node_postgresnode_cli -->|"calibrate, publish"| node_calibrationnode_calibration -->|"stores threshold"| node_postgresnode_cli -->|"search"| node_trusted_searchnode_mcp -->|"search, evidence"| node_trusted_searchnode_trusted_search -->|"pins generation"| node_gen_storenode_gen_store -->|"reads active"| node_postgresnode_trusted_search -->|"retrieves"| node_retrievernode_retriever -->|"embeds query"| node_embeddernode_retriever -->|"dense, full text"| node_gen_storenode_retriever -.->|"reorders"| node_rerankernode_trusted_search -->|"evaluates"| node_trust_gatenode_mcp -->|"reasoning query"| node_reasonernode_reasoner -->|"retrieves"| node_trusted_searchnode_trusted_search -.->|"expands pre trust"| node_graph_expansionnode_graph_expansion -.->|"same generation graph"| node_postgresnode_reasoner -.->|"cited answer"| node_answernode_mcp -->|"apply fact"| node_provenancenode_provenance -->|"fresh search"| node_trusted_searchnode_provenance -->|"appends"| node_ledgernode_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/master/recall/embeddings.py"click node_graph_build "https://github.com/GiulioDER/RE-call/blob/master/recall/semantic_graph/_build.py"click node_calibration "https://github.com/GiulioDER/RE-call/blob/master/recall/calibration_v2.py"click node_trusted_search "https://github.com/GiulioDER/RE-call/blob/master/recall/trust.py"click node_gen_store "https://github.com/GiulioDER/RE-call/blob/master/recall/generation_store.py"click node_retriever "https://github.com/GiulioDER/RE-call/blob/master/recall/retriever.py"click node_reranker "https://github.com/GiulioDER/RE-call/blob/master/recall/rerank.py"click node_trust_gate "https://github.com/GiulioDER/RE-call/blob/master/recall/trust.py"click node_reasoner "https://github.com/GiulioDER/RE-call/blob/master/recall/reasoning.py"click node_graph_expansion "https://github.com/GiulioDER/RE-call/blob/master/recall_mcp/graph_expansion.py"click node_answer "https://github.com/GiulioDER/RE-call/blob/master/recall/answer_provider.py"click node_provenance "https://github.com/GiulioDER/RE-call/blob/master/recall/provenance_controller.py"click node_ledger "https://github.com/GiulioDER/RE-call/blob/master/recall/fact_ledger.py"click node_postgres "https://github.com/GiulioDER/RE-call/tree/master/recall/migrations"
classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172aclassDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350fclassDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532dclassDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4aclass node_cli,node_mcp,node_sdk,node_caller toneBlueclass node_manifest,node_generations,node_parser,node_embedder,node_graph_build,node_calibration,node_postgres toneAmberclass node_trusted_search,node_gen_store,node_retriever,node_reranker,node_trust_gate toneMintclass node_reasoner,node_graph_expansion,node_answer toneRoseclass node_provenance,node_ledger toneIndigo

Ordinary recall search follows the direct path. Explicit reasoning accepts graph_expansion: auto is the default and resolves to bounded one hop expansion for every nonempty query; off keeps direct retrieval only; one-hop forces the graph path. The CLI uses --graph-expansion auto|off|one-hop; the MCP tool uses graph_expansion="auto"|"off"|"one_hop". Graph neighbors are generation bound, direct candidates remain first, and expanded candidates must clear the same trust boundary before they can support a cited answer.

The opt in choices attach to different points in the system:

Optional capabilityWhere it fitsWhat it adds
Hosted embedderBuild and queryRemote model calls for embeddings. Query and corpus text may leave the environment.
Learned sparse retrieval, SPLADEHybrid retrievalA learned term weighted retrieval leg in addition to dense vectors and Postgres full text.
RerankerAfter candidate fusionReorders the fused candidates with a cross encoder.
Evidence Graph version oneExplicit reasoning retrievalAdds bounded, generation-bound structural neighbors to reasoning retrieval. See graph_expansion above for controls; graph candidates pass through trust before a cited answer can use them.
Structured fact applicationEvidence cardsLets a reviewed fact pass through the provenance controller into the append only ledger.

For details, see the architecture writeup, provenance controller, and API reference.

Quickstart

For one project's memory on your machine, start with RE-call Lite. It stores memory in .recall/memory.db, refreshes changed memos automatically, and needs no Docker or database server.

Install the source build first: Lite is in the repository; the published 0.14.0 PyPI wheel predates it. Follow the Lite installation guide to create an environment and install the source, then run this from your own project with an existing folder of notes:

bash
recall setup --lite --memory ./notes

Setup indexes the notes, attempts automatic calibration, and registers Claude Code for this project. Inspect the calibration and registration results, use the printed doctor command, and restart the client. Strict trust stays enabled; a corpus that cannot certify will refuse trusted answers. For other MCP clients, use manual Lite wiring.

ChooseBest fitMaintenance
LiteOne project on one machine, using a local SQLite fileAutomatic memo refresh and calibration; back up notes and the store.
PostgreSQLShared serving, immutable generations, multiple tenants, or authenticationManage the database, schema migrations, generations, calibration, and backups.

Try the PostgreSQL demo

Prerequisites: Python 3.11 or newer, Docker, and a Docker installation able to run PostgreSQL with pgvector.

bash
pip install "recall-rag[fastembed]"recall quickstart

The demo starts a throwaway database, indexes a small corpus included in the package, and runs three searches. It includes a normal answer, a stale claim that is returned as superseded, and a question that is refused. The demo uses development trust and changes no personal files.

Remove the demo database when finished:

bash
recall quickstart --remove

Already have PostgreSQL with pgvector? Use recall quickstart --existing-dsn <dsn> instead. The demo is intentionally separate from a real install and is not calibrated for your data.

Install and integrate

Local, with no database server and no Docker

Use the Lite source installation, then run from the project whose notes you want to index:

bash
recall setup --lite --memory ./notes

Setup creates .recall/memory.db, attempts automatic calibration, and registers Claude Code for this project. Use the printed doctor and read-only dashboard commands, and add .recall/ to .gitignore. For CLI or manual client wiring, add --no-register.

The MCP server refreshes changed memos automatically. To check or refresh explicitly:

bash
recall lite refresh --store .recall/memory.db --memory ./notes --checkrecall lite refresh --store .recall/memory.db --memory ./notes

Use the same memo root and embedder as setup. The CLI does not read the MCP client's environment; apply setup's printed settings before CLI searches or doctor. Strict trust remains enabled, and successful indexing alone does not guarantee certification.

The Lite guide covers other clients, source updates, backup and restore, refresh budgets, and queued writes. Keep the file on a local disk. Lite uses exact cosine search and SQLite keyword retrieval; results can differ from PostgreSQL. Generations, multi-tenant serving, and authentication require PostgreSQL. See the API for trust and retrieval limits.

With PostgreSQL

For your own corpus, provide PostgreSQL with pgvector and run the guided setup wizard after installing recall-rag[fastembed]:

bash
recall setup

It applies the schema, asks for the embedder and retrieval options, indexes the corpus, offers calibration, and registers the selected agent integration. When the wizard asks whether to calibrate, use a labeled query file that refers to the corpus you are installing. Calibration fitted to the bundled demo is only an example, not a certification for your data. The schema uses an ordered SQL migration path and pre-tenancy tables are migrated in place.

For Docker, an existing database, headless provisioning, manual calibration, and troubleshooting, see docs/INSTALLATION.md and docs/WIZARD.md.

Choose an integration

Use caseInstallNext step
Lite CLI or MCPInstall from sourceRun recall setup --lite --memory ./notes; use --no-register for CLI or manual client wiring.
PostgreSQL CLI and Pythonpip install "recall-rag[fastembed]"Run recall setup, then use recall search or the Python API.
PostgreSQL MCP clientspip install "recall-rag[fastembed,mcp]"Run setup and follow the MCP guide. Host specific steps are below.
Claude Agent SDKpip install "recall-rag[agent,fastembed]"Use the in process integration in USING_WITH_AGENT_SDK.md.
LangChain or LlamaIndexInstall the matching extraUse the adapters described in API.md.
Windows desktop UIpip install "recall-rag[desktop]"Run recall-install; the current release does not ship a standalone Windows binary. See the wizard guide.
Claude Code

Inside Claude Code, install the plugin after installing the Python package:

text
/plugin marketplace add GiulioDER/RE-call/plugin install recall@re-call

The plugin supplies the MCP server, memory search skill, and lifecycle hooks. Lite setup already registers a project server; the plugin is optional. If you add it, configure its Database DSN with the SQLite DSN printed by setup and avoid enabling duplicate servers for the same memory. The plugin's server does not refresh memos by itself; run recall lite refresh yourself or keep the server setup registers. For PostgreSQL, run recall setup against the project and database Claude should use. Details are in plugin/README.md.

Codex

For Lite, use manual MCP wiring: recall setup --lite only registers Claude Code. For PostgreSQL, run recall setup from the project. When Codex is detected, setup installs the Codex MCP server, plugin bundle, memory and session skills, and hooks into the user configuration. Restart Codex afterward. The Codex and Claude Code integrations share the same memo format and trust layer. See docs/CODEX_RECALL_INTEGRATION.md.

Claude Agent SDK

The SDK integration runs the same tools in process and does not start an MCP server:

python
from recall_agent import RecallAgentMemory
with RecallAgentMemory.from_env() as memory:    options = memory.options()

See docs/USING_WITH_AGENT_SDK.md for the complete example and write-tool boundaries.

LangChain and LlamaIndex

Both adapters use the same trusted retrieval path. If trust abstains, they return no document by default, and returned documents retain verdict, confidence, cosine, and supersession metadata. See docs/API.md for the supported classes and methods.

If an install is not working

bash
recall doctor

For Lite, first apply the environment printed by setup so doctor inspects the SQLite store. For PostgreSQL, the doctor checks the interpreter, console scripts, embedder, Docker, database, pgvector, schema, configured table and tenant, calibration, and agent registration. It changes nothing and prints the repair command for each problem.

Product surface

AreaWhat ships
Retrieval and memoryDense vectors plus Postgres full text with hybrid RRF, validity, calibrated confidence, provenance, trust verdicts, immutable generations, incremental indexing, pruning, and source erasure.
Structured factsCitable evidence cards, provenance controller, append only fact ledger, current fact projection, and optional materialization outbox.
QualityReal pgvector integration tests, type checking, linting, dependency audit, and a claim gate that checks published evidence in CI.

RE-call is not a hosted memory service, dashboard, or automatic truth extractor. It does not rewrite corpus metadata from an agent's inference. Reasoning is opt in, citation constrained, and review aware. See docs/PRODUCTION.md for deployment boundaries.

Read next

NeedDocument
Why an agent needs persistent, trusted memorydocs/FOR_AGENTS.md
Full documentation mapdocs/README.md
Install and maintain Litedocs/LITE.md
Install and provision PostgreSQLdocs/INSTALLATION.md, docs/WIZARD.md
Python, CLI, and MCP referencedocs/API.md
Trust, architecture, and provenancedocs/WRITEUP.md, docs/PROVENANCE_CONTROLLER.md
Security and operationsdocs/AUTH.md, docs/PRODUCTION.md, docs/OPERATING_MODES.md
Measurements and limitsdocs/EVIDENCE.md, results/FINDINGS.md

Published numbers are tied to committed artifacts, and the claim gate checks them in CI. Benchmark interpretation and limits belong in docs/EVIDENCE.md, not in this overview.

Citation

If you describe RE-call in a paper, post, talk, or README of your own, cite the project and credit Giulio D'Erme. Use CITATION.cff as the canonical citation source.

License

RE-call is open source under the GNU Affero General Public License v3.0 (AGPL-3.0). You may use, study, modify, and share it, commercially as well, on the AGPL's conditions: if you distribute RE-call or a work based on it, or let users interact with a modified version over a network, you must make the corresponding source available under the same license. When those conditions do not fit, for example a closed source product or a proprietary hosted service, a commercial license is available from the copyright holder. See COMMERCIAL_LICENSE.md for the boundary between the two and for the terms of earlier releases, and preserve NOTICE when redistributing the software. Contributions are accepted under the Contributor License Agreement.

來源:README.md,提交 d030990

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.14.0最新Sep 25, 2026
  2. v0.13.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Memory 整合