Melchizedek について
MelchizedekはClaude Code向けのローカル永続メモリです。会話記録を自動でインデックス化し、ハイブリッド検索で複数プロジェクトの履歴を探せます。単一のSQLiteファイルに保存され、オフラインで動作します。
主な機能
- 01会話記録の自動インデックス化
- 02BM25とベクトルによるハイブリッド検索
- 03検索結果の統合と再ランキング
- 04ファイル・エラー・類似作業で検索
- 05メモリ、セッション、プロジェクト索引の管理
活用シーン
- 01過去のデバッグ記録や解決策の検索
- 02複数プロジェクトの設計判断の確認
- 03特定ファイルに関する過去の会話の取得
- 04メモリ内容の手動保存や削除
MCP 対応
MCP サーバーはClaude Codeに、会話検索、周辺コンテキスト取得、メモリ管理のツールを提供します。フックによりセッション終了後の自動インデックス化も実行できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Melchizedek
Claude Code の永続メモリです。 すべての会話を自動的にインデックス化し、MCP ツールを通じて本番環境向けのハイブリッド検索(BM25 + ベクトル + 再ランキング)を提供します。100%ローカルで、設定不要、API キー不要、請求なしです。
なぜ Melchizedek なのか?
Claude Code はセッション間の内容をすべて忘れてしまい、ほかのプロジェクトについても何も知りません。Melchizedek はその両方を解決します。
バックグラウンドで静かに動作し、作業中の会話をインデックス化します。その後、Claude がすべての履歴を、すべてのプロジェクトにまたがって検索できるようにします。過去のデバッグセッション、アーキテクチャ上の決定、エラーの解決方法、コードパターンを検索できます。
クラウド不要。API キー不要。設定不要。 接続して、質問するだけです。
仕組み
~/.claude/projects/**/*.jsonl (your conversation transcripts - read-only)
|
v
SessionEnd hook (auto-triggers after each session)
|
v
+-----------------+
| Indexer | Parse JSONL -> chunk pairs -> SHA-256 dedup
| (better-sqlite3)| FTS5 tokenize -> vector embed (optional)
+-----------------+
|
v
~/.melchizedek/memory.db (single SQLite file, WAL mode)
|
v
+-----------------+
| MCP Server | 16 search & management tools
| (stdio) | Hybrid: BM25 + vectors + RRF + reranker
+-----------------+
|
v
Claude Code (searches your history via MCP)
検索パイプライン — 4 段階の段階的な縮退
各レイヤーは任意です。プラグインは BM25 だけでも動作し、利用可能なコンポーネントが増えるほど性能が向上します。
| レベル | コンポーネント | 追加される機能 | 依存関係 |
|---|---|---|---|
| 1 | BM25 (FTS5) | ステミングによるキーワード検索 | なし(常時有効) |
| 2 | デュアルベクトル (sqlite-vec) | セマンティック検索 — テキスト(MiniLM 384d)+ コード(Jina 768d) | @huggingface/transformers(任意) |
| 3 | RRF 融合 | Reciprocal Rank Fusion による BM25 + テキストベクトル + コードベクトルの統合 | ベクトルが有効 |
| 4 | 再ランキング | 上位の検索結果をクロスエンコーダーで再スコアリング | Transformers.js または node-llama-cpp(任意) |
パフォーマンス
npm run bench を使用して測定しました。単一の SQLite ファイルで、100 セッション、1 000 チャンクを対象にしています。
| 指標 | 結果 | 目標 |
|---|---|---|
| インデックス化(100 セッション) | 約 80 ms | < 10 s |
| BM25 検索(平均) | 約 0.2 ms | < 50 ms |
| DB サイズ(100 セッション) | 約 1.4 MB | < 30 MB |
| 検索あたりのトークン数 | 約 125 | < 2 000 |
クイックスタート
npm(推奨)
npm install -g melchizedek
MCP サーバーを Claude Code に追加します。
claude mcp add --scope user melchizedek -- melchizedek-server
npx(インストール不要)
claude mcp add --scope user melchizedek -- npx melchizedek-server
ソースからのインストール
git clone https://github.com/louis49/melchizedek.git
cd melchizedek && npm install && npm run build
claude --mcp-config .mcp.json
Claude Code プラグインマーケットプレイス (近日公開)
プラグインの審査中です。それまでは、上記の npm または npx によるインストールを使用してください。
claude plugin install melchizedek # not yet available
フックの設定(自動インデックス化)
MCP サーバーは検索ツールを提供しますが、自動インデックス化を実行するのはフックです。フックがない場合、セッションを手動でインデックス化する必要があります。
マーケットプレイスからインストールした場合は、フックが自動的に設定されます。npm/npx/ソースからインストールした場合は、~/.claude/settings.json にフックを追加してください。
JSON 設定全体、フックのリファレンス、トラブルシューティングについては、docs/installation.md を参照してください。
設定後、Claude Code を再起動してください。インデックス化が自動的に開始されます。
MCP ツール
検索(まずはこちら)
| ツール | 説明 |
|---|---|
m9k_search | インデックス化された会話を検索します。簡潔なスニペットを返します。現在のプロジェクトの結果が優先されます。since/until による日付フィルターと、order(score、date_asc、date_desc)に対応しています。 |
m9k_context | 前後のコンテキスト(同じセッション内の隣接チャンク)とともにチャンクを取得します。 |
m9k_full | IDを指定してチャンクの全文を取得します。 |
段階的な取得パターン — 検索結果は1件あたり約50トークン、コンテキストは約200~300トークン、全文は約500~1000トークンです。まず m9k_search を使い、必要な場合にのみ詳細を取得してください。すべてを読み込む場合と比べて、トークンを4倍節約できます。
コンテキストを考慮したランキング — 現在のプロジェクト(×1.5)と現在のセッション(×1.2)の結果が自動的に優先されます。プロジェクトをまたいだ結果も引き続き表示されます。
特化型検索
| ツール | 説明 |
|---|---|
m9k_file_history | 特定のファイルに関する過去の会話を検索します。 |
m9k_errors | エラーメッセージに対する過去の解決策を検索します。 |
m9k_similar_work | 類似タスクへの過去の取り組み方を検索します。充実したメタデータを優先します。 |
メモリ管理
| ツール | 説明 |
|---|---|
m9k_save | 後で呼び出せるよう、メモリノートを手動で保存します。 |
m9k_sessions | インデックス化されたすべてのセッションを一覧表示します。プロジェクトで絞り込むこともできます。 |
m9k_info | メモリインデックスの情報(コーパスのサイズ、検索パイプライン、埋め込みワーカー、使用状況の指標)を表示します。 |
m9k_config | プラグインの設定を表示または更新します。 |
m9k_forget | チャンクをインデックスから完全に削除します。 |
m9k_delete_session | セッションをインデックスから削除します。 |
m9k_ignore_project | プロジェクトをインデックス化の対象外にします。今後のセッションはインデックス化されません。既存のセッションも必要に応じて削除できます。 |
m9k_unignore_project | 以前に対象外にしたプロジェクトのインデックス化を再開します。削除済みのデータは復元されません。 |
m9k_restart | npm run build の後、新しいコードを読み込むために MCP サーバーを再起動します。停止したプロセスには force: true を指定できます。 |
使用ガイド
| ツール | 説明 |
|---|---|
__USAGE_GUIDE | 非表示のツールです。説明を通じて、Claude に取得パターンと利用可能なツールを伝えます。 |
設定
デフォルトでは設定不要です。すべて m9k_config または環境変数から調整できます。
| 設定項目 | デフォルト値 | 環境変数 |
|---|---|---|
| データベースのパス | ~/.melchizedek/memory.db | M9K_DB_PATH |
| デーモンモード | 有効 | 無効にするには M9K_NO_DAEMON=1 |
| ログレベル | warn | M9K_LOG_LEVEL |
| 埋め込み | true | 無効にするには M9K_EMBEDDINGS=false |
| リランカー | true | 無効にするには M9K_RERANKER=false |
設定の全項目(20種類以上のオプション、環境変数、設定ファイルの例)については、docs/configuration.md を参照してください。
強化された検索
Melchizedek は BM25 キーワード検索にそのまま対応しています。テキスト埋め込み(MiniLM)は、セマンティック検索で初めて使用するときに自動でダウンロードされます。
GPU で高速化したコード埋め込み(Ollama)、クロスエンコーダーによる再ランキング(GGUF モデル)、プラットフォーム別のセットアップガイド、モデルの詳細については、強化検索のセットアップ を参照してください。
どう違うのでしょうか?
| Melchizedek | claude-historian-mcp | claude-mem | episodic-memory | mcp-memory-service | |
|---|---|---|---|---|---|
| 基本方針 | 検索エンジン - すべてをインデックス化し、検索します | 検索エンジン - 必要に応じてJSONLをスキャンします | ノートブック - AIが圧縮して保存します | 検索エンジン | ノートブック - AIが保存する内容を決定します |
| 生の会話をインデックス化 | はい(JSONLトランスクリプト) | はい(JSONLを直接読み込み、永続的なインデックスなし) | 圧縮された要約 | はい(JSONL) | いいえ(手動でstore_memory) |
| インストール時に過去のデータを取り込み | はい(すべての履歴を遡って取り込み) | はい(既存ファイルを読み込み) | いいえ | はい | いいえ(初期状態は空) |
| 検索 | BM25 + ベクトル + RRF + 再ランキング | TF-IDF + あいまい一致 | FTS5 + ChromaDB | ベクトルのみ | BM25 + ベクトル |
| 段階的な取得 | 3層(検索/コンテキスト/全文) | いいえ | いいえ | いいえ | いいえ |
| 100%オフライン | はい | はい | いいえ(圧縮にAPIが必要) | はい | はい |
| 単一ファイルでの保存 | SQLite | なし(生のJSONLを読み込み) | SQLite + ChromaDB | SQLite | SQLite-vec |
| 設定不要 | はい | はい | はい | はい | はい |
| MCP ツール | 16 | 10 | 4 | 2 | 12 |
| ライセンス | MIT | MIT | AGPL-3.0 | MIT | Apache-2.0 |
| デュアル埋め込み(テキスト + コード) | はい(MiniLM + Jina Code) | いいえ | いいえ | いいえ | いいえ |
| モデルの設定 | はい(Transformers.jsまたはOllama) | いいえ | いいえ(Chroma内部) | いいえ(ハードコード) | はい(ONNX、Ollama、OpenAI、Cloudflare) |
| 再ランキング | クロスエンコーダー(ONNX、GGUF、またはHTTP) | いいえ | いいえ | いいえ | 品質スコアラー(検索用の再ランキングではありません) |
| プライバシー | すべてローカル、<private>タグによる編集 | すべてローカル | Anthropic APIにデータを送信 | すべてローカル | すべてローカル |
| 複数インスタンス | シングルトンデーモン - N個のClaudeウィンドウが1つのプロセスを共有(Unixソケット/Windows名前付きパイプ、ローカルフォールバック) | N個の独立したプロセス | HTTPワーカーを共有(:37777) | N個の独立したプロセス | HTTPサーバーを共有 |
インスピレーション
このプロジェクトは、多くの先人の成果の上に成り立っています。以下のプロジェクトから主なアイデアを取り入れました。
| プロジェクト | 取り入れた内容 | |
|---|---|---|
| CASS | RRF ハイブリッド融合、SHA-256 による重複排除、自動ファジーフォールバック | |
| claude-historian-mcp | 特化型 MCP ツール(file_history、error_solutions) | |
| claude-diary | PreCompact フック(/compact の前にアーカイブ) |
既知の問題
- セッションブーストが無効 - Claude Code は現在、SessionStart フックの stdin ペイロードで空の
session_idを送信するため、×1.2 のセッションブーストが機能しません。×1.5 のプロジェクトブーストには影響せず、こちらがコンテキストを考慮したランキングの主な要素となります。関連する上流の問題: #13668(空のtranscript_path)、#9188(古いsession_id)。Melchizedek のセッションブーストコードはテスト済みで、上流の修正が反映されると自動的に有効になります。
プライバシー
- テレメトリーは一切ありません。 トラッキング、分析、ネットワーク通信はありません(任意のモデルの遅延ダウンロードを除く)。
- トランスクリプトは読み取り専用です。
~/.claude/projects/には書き込みません。すべてのデータは~/.melchizedek/に保存されます。 <private>タグに対応しています。<private>...</private>内のコンテンツは、インデックス作成前に[REDACTED]に置き換えられます。- ローカルのみで動作します。 会話がマシンの外に送信されることはありません。
要件
- Node.js >= 20
- Claude Code >= 2.0
- macOS、Linux、または Windows
ライセンス
MIT
「父もなく、母もなく、系図もなく、日々の初めもなく、命の終わりもない。」
- ヘブル人への手紙 7:3
@louis49 によって開発されました
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。