remem-mcp — Local-first MCP Memory + CodeGraph + Wiki について
remem-mcpは、コーディングエージェント向けにローカルのSQLiteメモリ、コード索引、Wikiを提供し、エラーや判断を記録して後のセッションで検索できます。クラウドやデータベースサーバーは不要で、Gitを通じてチームとメモリを共有できます。
主な機能
- 01ローカルSQLiteへのメモリ保存
- 02エラーの自動記録とコンテキスト注入
- 03tree-sitterによるコード索引
- 04シンボル検索と呼び出し元分析
- 05メモリの検索・整理・減衰
- 06Gitエクスポートによるメモリ共有
活用シーン
- 01コンテキスト圧縮後に以前の判断を想起
- 02再試行前に過去のエラーを検索
- 03呼び出し元やコードへの影響範囲を特定
- 04Git経由でチームとメモリを同期
MCP 対応
MCPサーバーとして、クライアントにrecall、capture、CodeGraph、Wiki、フィードバックのツールを公開します。フックにより、セッション中のメモリ注入と保存も行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
48掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| mode | enum | いいえ | 検索モード。hybrid | keyword | vector |
| type | enum | いいえ | メモリの種類で結果を絞り込みます。チェックポイント/タスクを除外するには 'decision'、過去の失敗などを対象にするには 'error' を使用します。conversation | decision | learning | task | error | atom |
| limit | integer | いいえ | 結果の最大件数。 |
| query | string | はい | 自然言語クエリ。このテキストを使って BM25 検索とベクトル検索を行います。 |
| format | enum | いいえ | 応答形式。ベンチマークなどの構造化データには 'json' を使用します。デフォルトは 'text' です。text | json |
| offset | integer | いいえ | ページネーションのオフセット。次のページの結果を取得するには、これを使用します。 |
| task_id | string | いいえ | タスク ID。特定のタスクごとにメモリを分離するには、これを使用します。キャプチャをタスクに関連付けると、より細かく分離できます。 |
| team_id | string | いいえ | チーム ID。チームごとにメモリを分離するには、これを使用します。設定すると、すべてのクエリがこの値で絞り込まれます。 |
| user_id | string | いいえ | ユーザー ID。これを使用すると、チーム内でユーザーごとにメモリーを分離できます。team_id と併せて設定すると、クエリは両方で絞り込まれます。 |
| agent_id | string | いいえ | エージェント ID。チーム内でエージェントの役割ごとにメモリを分離するには、これを使用します。デフォルトは検出されたエージェントです。 |
| max_tokens | integer | いいえ | 応答内の最大トークン数。結果がこの値を超えると、ツールはテキストを切り詰めます。 |
| session_key | string | いいえ | セッションキー。デフォルトは hash(cwd) です。別のプロジェクトのメモリを呼び出すには、これを使用します。 |
詳細
remem-mcp
コーディングエージェントが同じ間違いを繰り返さなくなります。
コンテキストの圧縮後も保持される、ローカルファーストのメモリーです。あらゆるエラーから学習し、次の試行の前に修正方法を挿入し、Git リポジトリと同期するため、チーム全員で共有できます。
API キー不要。クラウド不要。データベースサーバー不要。SQLite ファイルだけです。
インストール
npx remem-mcp setup
ZCode、Claude Code、Cursor、Devin、Codex を自動検出します。MCP サーバーとフックを登録します。
クイックスタート
- エージェントを再起動します(終了して再度開きます)
- 「何を覚えていますか?」と尋ねます
- エージェントが過去のコンテキストを思い出せば、メモリーは動作しています
エージェントに次のように伝えられます:
- 「src のコードをインデックス化して」→ CodeGraph がシンボルをインデックス化します
- 「関数 X を呼び出している箇所を見つけて」→ 呼び出し元を分析します
- 「何を覚えていますか?」→ 過去のコンテキストを呼び出します
自動的に行われる処理
| タイミング | 処理 |
|---|---|
| セッション開始時 | 過去のエラー、判断、ペルソナをエージェントのコンテキストに挿入します |
| 各プロンプト | 一致するメモリーをエージェントのコンテキストに挿入します |
| コマンド失敗時 | エラーをメモリーとして自動的に記録します |
| コンテキスト圧縮時 | 圧縮後にメモリーを再挿入します |
| セッション終了時 | ワーカーが事実を自動抽出し、要約を統合してペルソナを更新します |
コマンドを実行する必要はありません。エージェントは回答前に recall() を呼び出し、作業後に capture() を呼び出します。スキルがそのように指示します。
仕組み
AI Agent (ZCode / Claude Code / Devin / Cursor / Codex)
│
├── MCP tools ──▶ recall, capture, codegraph_*, wiki_*, feedback
│
└── Hooks ──▶ SessionStart, UserPromptSubmit,
PostToolUse, PostCompaction, SessionEnd
│
▼
SQLite (memory.db)
L0 captures → L1 atoms → L2 scenarios → L3 persona
(raw) (facts) (summaries) (preferences)
CodeGraph: symbols + calls + imports (tree-sitter, 9 languages)
Memory links: Hebbian co-retrieval (frequently co-retrieved = stronger)
LLM API キーは不要です — ルールベースの抽出とキーワードのグループ化を使用します。
CodeGraph
tree-sitter による構造的なコードインデックス化です。エージェントはシンボルを見つけるために grep の代わりに codegraph_search を使用します。
npx remem-mcp index --path src # index a directory
npx remem-mcp search-code --query "parseTar" # find symbols
npx remem-mcp callers <id> # who calls this?
npx remem-mcp impact <id> # blast radius
9 言語:TS/JS/Python/Go/Rust/Java/C/C++/C#。6 つの戦略による呼び出し解決(import-map → same-module → unique-name → suffix → fuzzy)。標準ライブラリの呼び出しは除外されます。
| リポジトリ | ファイル | シンボル | 呼び出し | 時間 |
|---|---|---|---|---|
| remem-mcp | 79 | 301 | 6,456 | 3s |
| AZR Go | 455 | 3,417 | 41,603 | 111s |
| Orca TS | 3,000 | 7,632 | 78,981 | 705s |
何が違うのか
| remem-mcp | Mem0 | Claude MEMORY.md | Mneme | |
|---|---|---|---|---|
| 圧縮後も保持 | はい | はい — クラウド | いいえ — 200 行の上限 | はい |
| エラーから学習 | はい — 自動 | いいえ | いいえ | いいえ |
| 検索 | ハイブリッド BM25 + ベクトル + エンティティ | ベクトルのみ | なし | ベクトル + グラフ |
| メモリーのリンク | ヘブ則による共検索 | なし | なし | グラフ |
| 減衰/忘却 | はい | いいえ | いいえ | いいえ |
| CodeGraph | はい — 6 つの戦略による呼び出し解決 | いいえ | いいえ | いいえ |
| トークンの外部化 | はい — Mermaid キャンバス | いいえ | いいえ | いいえ |
| セットアップ | 1 コマンド | API キー + クラウド | 組み込み | ソースからビルド |
| 費用 | 無料 | $19–249/月 | 無料 | 無料 |
便利なコマンド
npx remem-mcp status # health + hooks + DB + CodeGraph
npx remem-mcp viewer # web UI at localhost:7331
npx remem-mcp errors # error dashboard
npx remem-mcp recent [N] # recent captures
npx remem-mcp help all # full list of 40+ subcommands
設定
すべての設定にはデフォルト値があります。設定ファイルは任意です:~/.config/remem-mcp/config.json。
| 設定 | 環境変数 | デフォルト |
|---|---|---|
| DB パス | REMEM_DB_PATH | ~/.local/share/remem-mcp/memory.db |
| プロジェクト間メモリー | REMEM_GLOBAL_SESSION_KEY | (未設定) |
| 統合フロー(F1+F2+F3) | REMEM_FLOW | (未設定。full に設定) |
| フックのフィードバックを抑制 | REMEM_QUIET | (未設定。1 に設定) |
グローバルメモリーポリシー — REMEM_GLOBAL_SESSION_KEY を設定すると、プロジェクト間メモリーを自動的に読み取ります。ユーザーが明示的にグローバルへの保存を求めない限り、記録内容はプロジェクト内にとどまります。求められた場合は、session_key: "global" を使用します。通常の記録内容を自動的にグローバルとして分類しないでください。
チーム共有 — npx remem-mcp sync-export を実行すると、.remem-mcp/memory-export.jsonl が書き出されます。これを Git にコミットしてください。チームメンバーは git pull で同じメモリーを取得できます。
リポジトリごとの記録除外 — プロジェクトのルートに .remem.toml を配置します:
[capture]
ignore_paths = ["node_modules", "dist", ".git", "*.min.js"]
ベンチマーク
| ベンチマーク | remem-mcp | Mem0 | メモリなし |
|---|---|---|---|
| AMB(L1/L2/L3) | 100/100/100 | — | — |
| LoCoMo(長い会話のQA) | 95 | 92.5 | — |
| PersonaMem(パーソナライズ) | 100 | — | 48 |
| LongMemEval(ICLR 2025) | 96 | 94.4 | — |
bash scripts/bench-all.sh --quick # AMB only (~2 min)
アーキテクチャ
システム図、スキーマ、パフォーマンスの詳細については、ARCHITECTURE.md をご覧ください。
クレジット
コア部分は TencentDB Agent Memory(MIT、Tencent 2026)をベースにしています。CodeGraph の呼び出し解決は Codebase-Memory(arXiv:2603.27277)を応用しています。リコールの向上は Akita On Rails による ai-memory を応用しています。コンテキスト検索は Anthropic(2024)を利用しています。
ライセンス
MIT。LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。