chatvault について
chatvaultは、ローカルのAIチャット履歴を検索・管理するMCPサーバーです。ユーザーが管理するJSONファイルを読み込み、履歴をアップロードしたりネットワーク通信したりせずに、会話、一覧、画像、メモリーを扱えます。
主な機能
- 01全文検索、フィルター、抜粋表示
- 02会話履歴と保存画像の取得
- 03会話一覧とインベントリーのページ表示
- 04会話とメモリーの保存
- 05書き込みツールの読み取り専用モード
- 06ネットワーク通信なしのローカルJSONコーパス
活用シーン
- 01トピックや日付で過去の会話を検索
- 02会話履歴を再表示、または保存画像を取得
- 03チャット履歴を一覧化して鮮度を確認
- 04会話や確認可能なメモリーを保存
MCP 対応
MCPクライアントに検索、取得、インベントリー、状態確認、書き込みツールを提供し、指定されたローカルコーパスを操作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | 全文検索クエリ |
| title | string | いいえ | タイトルにこのテキストを含む会話に限定します |
| date_to | string | いいえ | この日付以前(当日を含む)に更新された会話のみ(ISO 8601) |
| platform | string | いいえ | claude や chatgpt など、1 つのプラットフォームに限定します |
| date_from | string | いいえ | この日付以降(当日を含む)に更新された会話のみ(ISO 8601) |
| match_mode | enum | いいえ | クエリ語の組み合わせ方法:any、all、phraseany | all | phrase |
詳細
chatvault
過去の AI チャットは、すでにお使いのディスク上にあります。chatvault を使うと、 その履歴をマシンの外に持ち出すことなく、MCP クライアントから検索したり、 再び開いたり、全体を把握したりできます。アカウントもアップロードもネットワーク 通信も不要です。サーバーは、お客様が管理する JSON ファイルのフォルダーを 読み込みます。
設定
CHATVAULT_CORPUS_DIR(任意) — コーパスの保存場所です。 デフォルトは~/.chatvault/corpusです。CHATVAULT_READ_ONLY(任意) —1に設定すると、2 つの書き込みツール(save_conversation、save_memory)は モード名を含むエラーを返して処理を拒否します。読み取りは引き続き利用できます。
コーパスの構成
会話ごとに JSON ファイルが 1 つあり、これに memories.json が加わります。
{
"id": "abc",
"platform": "claude",
"title": "Planning a trip",
"updatedAt": "2026-10-01T12:00:00.000Z",
"messages": [
{ "role": "user", "text": "Where should we go?" },
{ "role": "assistant", "text": "Some ideas..." }
]
}
メッセージには formattedText と images(保持された画像データを含む
{mime, dataBase64} エントリー)を含めることもできます。
会話には localTitle を含めることもできます。コーパスディレクトリが空でも、
存在しなくても問題ありません。検索や一覧の結果は空になります。
すべての会話には、fp2: の後に SHA-256 の 16 進ダイジェストが続く
コンテンツフィンガープリントがあります。このダイジェストには、タイトル、
設定されている場合はローカルタイトル、そして各メッセージの順序、つまり
インデックス、ロール、テキスト、存在する場合はフォーマット済みテキスト、
各画像の MIME タイプと保持されたバイト列が含まれます。タイムスタンプと
派生フィールドは対象外です。そのため、同じ内容を再保存してもフィンガープリントは
変わりませんが、名前の変更やメッセージの編集を行うと変わります。正確な
シリアライズ形式(キーをソートした正規化 JSON)は、明示的に再構成したものです。
ツール
search_conversations— タイトルとメッセージテキストを対象にした、トークン化された全文検索です。必須:query。任意:platform(完全一致)、title(部分一致)、date_fromとdate_to(updatedAtを対象)、およびmatch_mode—any(デフォルト)、all、またはphrase。結果は一致数、次に新しさの順でランク付けされ、スニペットが含まれます。get_conversation_image— メッセージに保存されている画像です。 必須:conversation_id、message_index、image_index。 MIME タイプと Base64 バイト列を返します。画像が見つからない場合は、 その旨を正直にエラーで返します。get_conversation—idの会話全文です。contentFingerprintフィールドが含まれます。list_conversations—updatedAt順の会話一覧です。 任意:order(デフォルトはnewest_first、またはoldest_first)とlimit。list_recent— 最終更新日時が新しい会話を、タイトル、短い概要(最初のユーザーメッセージの抜粋 — 再構成したもの)、およびプラットフォームとともに返します。任意:limit。conversation_inventory— スナップショットをページ分割した、簡潔な{id, platform, title, fingerprint}項目の一覧です。引数なしで呼び出してスキャンを開始し、その後、各ページのnextCursorをcursorとして渡します。各ページには最大 100 件が含まれます。limitを指定すると件数を減らせます。保持されるスナップショットは最大 8 件です。 不明または期限切れのカーソルを指定すると、新しいスキャンを開始するよう求めるエラーが返されます。corpus_status— コーパスの{lastReceivedAt, count}を返します。コーパスが空の場合、lastReceivedAtは null です。save_conversation— 会話を追加または更新します。 必須:platform、title、messages。idを省略すると、自動的に割り当てられます(chatvault:<n>)。{id, fingerprint}を返します。save_memory—textから永続的な事実を保存します。このレコードは、確認して有効にするまでmemories.jsonに無効状態(enabled: false)で追記され、保存されたレコードが返されます。
検索と一覧の結果には、corpus ブロック(
{lastReceivedAt, count})も含まれます。これにより、呼び出し元は回答の根拠となったコーパスの
新しさと規模を確認できます。
CLI
npx @reneturcios/chatvault corpus_status '{}'
npx @reneturcios/chatvault search_conversations '{"query":"trip"}'
npx @reneturcios/chatvault --version
出力はツールの結果テキストです。終了コード:成功時は 0、エラー結果の場合は 1、使用方法のエラーの場合は 2 です。
MCP サーバー
npx -y @reneturcios/chatvault mcp
MCP クライアントの設定:
{
"mcpServers": {
"chatvault": {
"command": "npx",
"args": ["-y", "@reneturcios/chatvault", "mcp"],
"env": {
"CHATVAULT_CORPUS_DIR": "/path/to/corpus"
}
}
}
}
Docker
docker run -i -v /path/to/corpus:/corpus -e CHATVAULT_CORPUS_DIR=/corpus ghcr.io/cloudcorprecords/chatvault
docker run --rm ghcr.io/cloudcorprecords/chatvault --version
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (temp corpus dirs, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。