RE-call MCP Memory Server について
RE-call は、ローカルの SQLite または利用者が管理する PostgreSQL と pgvector を使うエージェント向けメモリーサーバーです。検索結果に信頼度、出典、有効性を付与し、古くなった主張を示し、証拠が基準に達しない場合は回答を控えます。
主な機能
- 01SQLite Lite と PostgreSQL に対応
- 02ベクトル検索とキーワード検索の併用
- 03信頼度、出典、有効性のメタデータ
- 04古い主張の表示と条件未達時の回答保留
- 05任意のグラフ推論と構造化ファクト
活用シーン
- 01プロジェクトのメモから信頼できる情報を検索
- 02現在の事実と古くなった主張を区別
- 03PostgreSQL で共有エージェントメモリーを提供
MCP 対応
RE-call はメモリーの検索と管理に使う MCP ツールを提供します。Lite または PostgreSQL で実行でき、同じ信頼性重視の検索経路は CLI、Python、プロセス内 SDK からも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx recall-ragRECALL_SERVING_DSNシークレットPostgreSQL serving DSN for the RE-call memory store.RECALL_TENANTTenant id served by this local stdio server.RECALL_TRUST_MODESet to development only for local uncalibrated corpora.RECALL_EMBEDDERThe 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_TABLEThe 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_TOOLSOptional. 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.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
推測する代わりに、回答を控えるメモリ。
RE-call は、ローカルの SQLite ファイルまたはお使いの pgvector 対応 PostgreSQL に保存するエージェントメモリです。各結果には判定、
信頼度、出典情報が付与され、裏付けのない質問には、最も近い一致を回答するのではなく、
回答を拒否します。
概要 · エージェント向け · 仕組み · Lite で始める · インストールと統合
RE-call とは
RE-call は、ローカルの SQLite ファイルまたはお使いの PostgreSQL データベースに保存するエージェントメモリです。ソース ドキュメントをインデックス化し、すべての結果に有効性、系譜、信頼度、出典情報を保持します。
ベクトル検索は、近いテキストを返します。RE-call はさらに、そのテキストが現在も有効か、裏付けがあるか、
クエリに対して十分に信頼できるかを確認します。置き換えられた主張には superseded とマークされ、調整済みの信頼度ゲートを
通過しない結果は、理由を伴う ABSTAIN になります。置き換えを明示することで、古くても類似しているメモリより、最新のメモリが優先されます。
デフォルトの構成では、ローカルの埋め込みと、密ベクトル検索およびキーワード検索を組み合わせたハイブリッド検索を使用します。PostgreSQL では
組み込みの全文検索を、Lite では SQLite の FTS5 を使用します。メモリ層で LLM を呼び出す必要はありません。追加の検索、
推論、構造化ファクトの各モジュールはオプションです。
このドキュメントを読むエージェント向けに、エージェント向け RE-call では、体験ループと、 永続メモリを未検証のスクラッチパッドではなく、信頼できる過去として活用する方法を説明しています。
仕組み
PostgreSQL では、RE-call は不変のキャリブレーション済み生成データを構築し、その固定された生成データに対するクエリを処理します。Lite は、キャリブレーションを単一ファイルのコーパスに紐付けます。推論パスやファクトパスを含むすべての検索は、信頼性の高い検索と信頼ゲートを経由します。
図はプロジェクトサイトで操作できます。ボックスをクリックすると、説明対象のソース行が表示されます。
recall_search 呼び出しのステップごとの表示では、
1 回の検索における拒否、回答の保留、回答の各パスを確認できます。どちらも
docs/diagramsのソースから生成されています。
各ボックスからファイルにリンクした、図のテキスト版
実線の矢印はデフォルトのパスです。破線の矢印は、オプトインまたは推論専用のパスを示します。対象は、再ランキング、グラフ展開、回答プロバイダーです。各ボックスから、その実装ファイルにリンクしています。
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_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/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:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_mcp,node_sdk,node_caller toneBlue
class node_manifest,node_generations,node_parser,node_embedder,node_graph_build,node_calibration,node_postgres toneAmber
class node_trusted_search,node_gen_store,node_retriever,node_reranker,node_trust_gate toneMint
class node_reasoner,node_graph_expansion,node_answer toneRose
class node_provenance,node_ledger toneIndigo
通常の recall search は直接パスをたどります。明示的な推論では graph_expansion を指定できます。デフォルトの auto は、空でないすべてのクエリについて、範囲を限定した 1 ホップの展開に解決されます。off は直接検索のみを行い、one-hop はグラフパスを強制します。CLI では --graph-expansion auto|off|one-hop、MCP ツールでは graph_expansion="auto"|"off"|"one_hop" を使用します。グラフの近傍は生成データに紐付けられ、直接候補が先に並びます。展開された候補は、引用付きの回答を支える前に、同じ信頼境界を通過する必要があります。
オプトイン可能な機能は、システム内のそれぞれ異なる箇所に追加されます。
| オプション機能 | 組み込まれる場所 | 追加される機能 |
|---|---|---|
| ホスト型エンベッダー | 構築とクエリ | 埋め込みのためのリモートモデル呼び出しです。クエリとコーパスのテキストが環境外に送信される場合があります。 |
| 学習済みスパース検索、SPLADE | ハイブリッド検索 | 密ベクトルと Postgres の全文検索に加えて、学習済みの重み付き用語検索経路を追加します。 |
| 再ランキング | 候補の統合後 | クロスエンコーダーで統合済みの候補を並べ替えます。 |
| Evidence Graph バージョン 1 | 明示的な推論検索 | 範囲が限定され、生成データに紐付けられた構造的な近傍情報を推論検索に追加します。制御方法については、上記の graph_expansion を参照してください。グラフ候補は、引用付きの回答に使用される前に信頼性チェックを通過します。 |
| 構造化ファクトの適用 | エビデンスカード | レビュー済みのファクトをプロベナンスコントローラー経由で追記専用の台帳に反映できるようにします。 |
詳しくは、アーキテクチャの解説、プロベナンスコントローラー、API リファレンスを参照してください。
クイックスタート
マシン上の1つのプロジェクトのメモリを使う場合は、RE-call Lite から始めてください。メモリは
.recall/memory.db に保存され、変更されたメモは自動的に更新されます。Docker やデータベースサーバーは不要です。
まずソースビルドをインストールしてください: Lite はリポジトリに含まれています。公開されている 0.14.0 PyPI ホイール
は Lite より前のものです。Lite のインストールガイド
に従って環境を作成し、ソースをインストールしてください。その後、既存のメモフォルダーがあるプロジェクトで次を実行します。
recall setup --lite --memory ./notes
セットアップではメモのインデックスを作成し、自動キャリブレーションを試み、このプロジェクト用に Claude Code を登録します。 キャリブレーションと登録の結果を確認し、表示された doctor コマンドを使用して、クライアントを再起動してください。厳格な信頼設定は有効なままです。認証できないコーパスでは、信頼できる回答は拒否されます。 その他の MCP クライアントについては、Lite の手動接続を使用してください。
| 選択肢 | 最適な用途 | メンテナンス |
|---|---|---|
| Lite | 1台のマシン上の1つのプロジェクトで、ローカルの SQLite ファイルを使用する場合 | メモの自動更新とキャリブレーション。メモとストアをバックアップしてください。 |
| PostgreSQL | 共有サービング、不変の世代、複数のテナント、または認証が必要な場合 | データベース、スキーマのマイグレーション、世代、キャリブレーション、バックアップを管理してください。 |
PostgreSQL デモを試す
前提条件:Python 3.11 以降、Docker、および pgvector を使用して PostgreSQL を実行できる Docker のインストール。
pip install "recall-rag[fastembed]"
recall quickstart
このデモでは使い捨てのデータベースを起動し、パッケージに含まれる小規模なコーパスのインデックスを作成して、3つの検索を実行します。通常の回答、古い主張が superseded として返されるケース、回答を拒否するケースが含まれています。このデモでは開発用の信頼設定を使用し、個人用ファイルは変更しません。
終了したら、デモ用データベースを削除してください。
recall quickstart --remove
pgvector を備えた PostgreSQL をすでにお持ちですか?代わりに recall quickstart --existing-dsn <dsn> を使用してください。このデモは実際のインストールとは意図的に分離されており、ユーザーデータに合わせたキャリブレーションは行われていません。
インストールと統合
データベースサーバーも Docker も使わずにローカルで使用する場合
Lite のソースインストールを行い、インデックスを作成したいメモがあるプロジェクトで次を実行してください。
recall setup --lite --memory ./notes
セットアップでは .recall/memory.db を作成し、自動キャリブレーションを試み、このプロジェクト用に Claude Code を登録します。表示された doctor コマンドと読み取り専用のダッシュボードコマンドを使用し、.recall/ を .gitignore に追加してください。CLI またはクライアントを手動で接続する場合は、--no-register を追加してください。
MCP サーバーは変更されたメモを自動的に更新します。明示的に確認または更新するには、次を実行してください。
recall lite refresh --store .recall/memory.db --memory ./notes --check
recall lite refresh --store .recall/memory.db --memory ./notes
セットアップと同じメモのルートと埋め込みモデルを使用してください。CLI は MCP クライアントの環境設定を読み込みません。CLI で検索や doctor を実行する前に、セットアップで表示された設定を適用してください。厳格な信頼設定は有効なままであり、インデックス作成に成功しただけでは認証は保証されません。
Lite ガイドでは、その他のクライアント、ソースの更新、バックアップと復元、更新の予算、キューに登録された書き込みについて説明しています。ファイルはローカルディスクに保存してください。Lite は正確なコサイン検索と SQLite のキーワード検索を使用します。結果は PostgreSQL と異なる場合があります。世代管理、マルチテナントサービング、認証には PostgreSQL が必要です。信頼設定と検索の制限についてはAPIを参照してください。
PostgreSQL を使用する場合
独自のコーパスを使用するには、pgvector を備えた PostgreSQL を用意し、recall-rag[fastembed] をインストールした後、ガイド付きセットアップウィザードを実行してください。
recall setup
ウィザードはスキーマを適用し、埋め込みモデルと検索オプションを尋ね、コーパスのインデックスを作成し、キャリブレーションを提案して、選択されたエージェント統合を登録します。キャリブレーションを行うか尋ねられたら、インストールするコーパスを参照するラベル付きクエリファイルを使用してください。付属のデモに合わせたキャリブレーションは一例にすぎず、ユーザーデータの認証にはなりません。スキーマでは順序付きの SQL マイグレーションパスを使用し、テナント導入前のテーブルはその場でマイグレーションされます。
Docker、既存のデータベース、ヘッドレスプロビジョニング、手動キャリブレーション、トラブルシューティングについては、docs/INSTALLATION.md と docs/WIZARD.md を参照してください。
インテグレーションを選択する
| ユースケース | インストール | 次の手順 |
|---|---|---|
| Lite CLI または MCP | ソースからインストール | recall setup --lite --memory ./notes を実行します。CLI またはクライアントへの手動接続には --no-register を使用します。 |
| PostgreSQL CLI と Python | pip install "recall-rag[fastembed]" | recall setup を実行してから、recall search または Python API を使用します。 |
| PostgreSQL MCP クライアント | pip install "recall-rag[fastembed,mcp]" | セットアップを実行し、MCP ガイドに従います。ホストごとの手順は以下をご覧ください。 |
| Claude Agent SDK | pip install "recall-rag[agent,fastembed]" | USING_WITH_AGENT_SDK.md にあるインプロセスインテグレーションを使用します。 |
| LangChain または LlamaIndex | 対応する追加パッケージをインストール | API.md で説明されているアダプターを使用します。 |
| Windows デスクトップ UI | pip install "recall-rag[desktop]" | recall-install を実行します。現行リリースには、単体で動作する Windows バイナリは含まれていません。ウィザードガイドをご覧ください。 |
Claude Code
Claude Code 内で、Python パッケージのインストール後にプラグインをインストールします。
/plugin marketplace add GiulioDER/RE-call
/plugin install recall@re-call
このプラグインには、MCP サーバー、メモリ検索スキル、ライフサイクルフックが含まれています。Lite のセットアップではプロジェクトサーバーがすでに登録されるため、プラグインは任意です。追加する場合は、Database DSN にセットアップで出力された SQLite DSN を設定し、同じメモリに対してサーバーが重複して有効にならないようにしてください。
プラグインのサーバーは単独ではメモを更新しません。recall lite refresh を実行するか、サーバーのセットアップで登録を維持してください。
PostgreSQL の場合は、Claude が使用するプロジェクトとデータベースに対して recall setup を実行します。
詳細は plugin/README.md をご覧ください。
Codex
Lite の場合は、MCP の手動接続を使用します。recall setup --lite が登録するのは Claude Code のみです。PostgreSQL の場合は、プロジェクトから recall setup を実行します。Codex が検出されると、セットアップによって Codex MCP サーバー、プラグインバンドル、メモリおよびセッションスキル、フックがユーザー設定にインストールされます。その後、Codex を再起動してください。
Codex と Claude Code のインテグレーションは、同じメモ形式と信頼レイヤーを共有します。詳細は
docs/CODEX_RECALL_INTEGRATION.md をご覧ください。
Claude Agent SDK
SDK インテグレーションは、同じツールをインプロセスで実行し、MCP サーバーは起動しません。
from recall_agent import RecallAgentMemory
with RecallAgentMemory.from_env() as memory:
options = memory.options()
完全な例と書き込みツールの適用範囲については、docs/USING_WITH_AGENT_SDK.md をご覧ください。
LangChain と LlamaIndex
どちらのアダプターも、同じ信頼性の高い検索経路を使用します。信頼性チェックで回答を差し控える場合、デフォルトではドキュメントを返しません。また、返されるドキュメントには判定結果、信頼度、コサイン類似度、置換に関するメタデータが保持されます。対応するクラスとメソッドについては、docs/API.md をご覧ください。
インストールがうまくいかない場合
recall doctor
Lite の場合は、まずセットアップで出力された環境設定を適用し、doctor が SQLite ストアを検査できるようにしてください。 PostgreSQL の場合、doctor はインタープリター、コンソールスクリプト、埋め込みモデル、Docker、データベース、pgvector、スキーマ、設定済みのテーブルとテナント、キャリブレーション、エージェント登録を確認します。変更は一切行わず、各問題の修復コマンドを出力します。
製品の機能
| 領域 | 提供内容 |
|---|---|
| 検索とメモリ | 密ベクトルと Postgres 全文検索を組み合わせたハイブリッド RRF、有効性、キャリブレーション済み信頼度、来歴、信頼判定、不変の世代、増分インデックス作成、プルーニング、ソース消去。 |
| 構造化された事実 | 引用可能な根拠カード、来歴コントローラー、追記専用の事実台帳、現在の事実の投影、任意のマテリアライゼーション用アウトボックス。 |
| 品質 | 実際の pgvector 統合テスト、型チェック、リンティング、依存関係の監査、CI で公開済みの根拠を検査するクレームゲート。 |
RE-call は、ホスト型のメモリサービス、ダッシュボード、自動的な真実抽出ツールではありません。エージェントの推論に基づいてコーパスのメタデータを書き換えることもありません。推論はオプトイン方式で、引用が必須となり、レビューを考慮します。デプロイ時の制約については、docs/PRODUCTION.md をご覧ください。
次に読む
| 内容 | ドキュメント |
|---|---|
| エージェントに永続的で信頼できるメモリが必要な理由 | docs/FOR_AGENTS.md |
| ドキュメント全体の案内 | docs/README.md |
| Lite のインストールと保守 | docs/LITE.md |
| PostgreSQL のインストールとプロビジョニング | docs/INSTALLATION.md, docs/WIZARD.md |
| Python、CLI、MCP のリファレンス | docs/API.md |
| 信頼性、アーキテクチャ、来歴 | docs/WRITEUP.md, docs/PROVENANCE_CONTROLLER.md |
| セキュリティと運用 | docs/AUTH.md, docs/PRODUCTION.md, docs/OPERATING_MODES.md |
| 測定結果と制限事項 | docs/EVIDENCE.md, results/FINDINGS.md |
公開されている数値はコミット済みの成果物に基づいており、主張の検証ゲートは CI でチェックされます。ベンチマークの解釈と制限事項については、この概要ではなく docs/EVIDENCE.md をご覧ください。
引用
論文、投稿、講演、またはご自身の README で RE-call について説明する場合は、プロジェクトを引用し、Giulio D'Erme に謝意を示してください。引用元として CITATION.cff を使用してください。
ライセンス
RE-call は GNU Affero General Public License v3.0(AGPL-3.0)の下で公開されているオープンソースソフトウェアです。AGPL の条件に従えば、商用利用を含め、使用、調査、変更、共有が可能です。RE-call またはそれに基づく著作物を配布する場合、あるいはネットワーク経由で変更版とユーザーがやり取りできるようにする場合は、対応するソースコードを同じライセンスの下で公開する必要があります。たとえばクローズドソース製品やプロプライエタリなホステッドサービスなど、これらの条件が合わない場合は、著作権者から商用ライセンスを取得できます。2 つのライセンスの適用範囲と過去のリリースの条件については COMMERCIAL_LICENSE.md をご覧ください。また、ソフトウェアを再配布する場合は NOTICE を保持してください。貢献は Contributor License Agreement に基づいて受け付けています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。