Dense Knowledge について
Dense Knowledge は、構造化された調査内容をセッション間で保持したいアシスタント向けのローカル優先 MCP メモリーサーバーです。ポータブルな `.mmp` ファイルを保存し、データベースや埋め込みモデルなしで BM25 検索により関連項目を取得します。
主な機能
- 01ポータブルな `.mmp` ナレッジパッケージの保存
- 02BM25 によるインデックス項目の検索
- 03予算内で選択した内容を読み込み
- 04追記型更新による履歴の保持
- 05出典と異論のある主張の記録
- 06構造と参照の検証
活用シーン
- 01アシスタントのセッション間で調査内容を保持
- 02全項目を読み込まずに関連メモを検索
- 03出典付き・異論ありの調査記録を管理
- 04ポータブルなナレッジファイルの確認やバックアップ
MCP 対応
ローカル stdio の MCP クライアントに、ナレッジパッケージの一覧、作成、検索、読取、書込、更新、廃止、検証のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Dense Knowledge
LLM の知識を永続化する、ローカルファーストの MCP メモリーサーバーです。
Dense Knowledge を使うと、AI アシスタントはデータベース、埋め込みモデル、ホスト型アカウントを使わずに、セッションをまたいで調査内容を構造化して保持できます。ポータブルな
.mmp ファイルに保存し、コンパクトなインデックスを BM25 で検索して、関連する場合にのみエントリー全体を読み込みます。
question -> compact index/search -> selected knowledge blocks -> answer
inexpensive detailed context
LM Studio、Claude Desktop、Cursor、VS Code など、ローカル stdio の Model Context Protocol サーバーに対応するクライアントで動作します。
Dense Knowledge を選ぶ理由
- コンテキストを選択的に取得: まずインデックスを検索し、本文ブロックは必要な場合にのみ取得します。
- ローカルでポータブル: UTF-8 のプレーンな ASCII ファイルなので、コピー、確認、差分比較、バックアップができます。
- ベクトル基盤は不要: 略語や同義語の展開に対応した、決定論的な BM25 検索を利用できます。
- 追記専用の履歴: 更新時には古いエントリーを消去せず、新しいエントリーで置き換えます。
- 出典を明示: 確立された主張と異論のある主張には出典 ID が付与され、出典のない推論は仮説として示されます。
- より安全な取得: 保存されたテキストは信頼できないデータとして囲み、一般的なプロンプトインジェクションによる汚染を検査します。
同梱のコンテキストベンチマークは 40 件のエントリーを使用します。合成テスト環境では、検索後に上位 2 件のブロックを読み込む方法は、パッケージ全体を読み込む方法と比べ、推定コンテキストの使用量を94.3%削減します。このベンチマークは再現可能で、トークナイザーに依存しない計数方法を明確に説明しています。
クイックスタート
uvをインストールし、次のサーバー定義を MCP クライアントに追加します。
{
"mcpServers": {
"dense-knowledge": {
"command": "uvx",
"args": ["dense-knowledge-mcp"]
}
}
}
uvx は必要に応じて公開済みパッケージをダウンロードします。--root を指定しない場合、Dense Knowledge はプラットフォームの既定のデータディレクトリを使用します。
{
"mcpServers": {
"dense-knowledge": {
"command": "uvx",
"args": [
"dense-knowledge-mcp",
"--root",
"/absolute/path/to/memory"
]
}
}
}
設定方法はクライアントによって多少異なります。すぐにコピーして使える手順を以下から確認できます。
コマンドラインツールを恒久的にインストールするには、次のコマンドを実行します。
uv tool install dense-knowledge-mcp
mmp setup
mmp doctor
mmp setup はメモリディレクトリを作成し、LM Studio の mcp.json にサーバーを安全に追加できます。既存のサーバーは保持されます。既存の Dense Knowledge エントリーを置き換えるには --force が必要で、その前にバックアップが作成されます。
動作を見る
CLI では MCP サーバーと同じストレージ操作を利用できます。
mmp create quantum_physics.mmp "quantum physics"
mmp write quantum_physics.mmp --rev 0 --from examples/research_entries.json
mmp search quantum_physics.mmp "experimental tests of local realism"
mmp read quantum_physics.mmp e1
一般的な検索結果には、本文全体ではなく候補が含まれます。
<mmp_data file="quantum_physics.mmp" trust="untrusted">
quantum_physics.mmp|e1|F|2.5427|Bell inequality separates local realism from quantum predictions
</mmp_data>
クライアントは関連する ID を選択し、それらのブロックに対してのみ mmp_read を呼び出します。これにより、簡易的な状況把握と詳細なコンテキストの違いが保たれます。
MCP ツール
サーバーは 9 つのツールを公開します。
| ツール | 目的 |
|---|---|
mmp_list | 利用可能なナレッジパッケージを一覧表示します |
mmp_create | 空の MMP パッケージを作成します |
mmp_open | メタデータ、出典、凡例、インデックスを読み込みます |
mmp_search | 本文テキストを含めずに、順位付けした候補を返します |
mmp_read | 指定した本文ブロックを、必要に応じて予算内で読み込みます |
mmp_write | 構造化されたエントリーを追記します |
mmp_update | 履歴を保持したままエントリーを置き換えます |
mmp_deprecate | 理由を添えてエントリーを非推奨としてマークします |
mmp_validate | 構造、言語、出典、参照を検査します |
検索では、凡例を展開した後、タグと要約を対象に BM25 を使用します。インデックスに一致する結果がない場合は、本文を検索します。非推奨のエントリーも読み込み可能ですが、通常の検索結果からは除外されます。
ストレージ
デフォルトのナレッジディレクトリは、オペレーティングシステムに応じて次のとおりです。
- Linux:
~/.local/share/mmp/memory - macOS:
~/Library/Application Support/mmp/memory - Windows:
%LOCALAPPDATA%\mmp\memory
ユーザー設定は別の場所に保存されます。
- Linux:
~/.config/mmp/config.toml - macOS:
~/Library/Application Support/mmp/config.toml - Windows:
%APPDATA%\mmp\config.toml
MMP_ROOT またはグローバルな mmp --root オプションで、設定済みのディレクトリを上書きできます。
個人用パッケージはソース管理の対象外にしてください。リポジトリの memory/
ディレクトリは無視されます。
ナレッジの書き込み
モデルは構造化オブジェクトを mmp_write に送信するため、MMP の構文を直接生成する必要はありません。最小限のエントリは次のとおりです。
{
"summary": "Possible caching strategy needs workload validation",
"tags": ["caching", "validation"],
"status": "H",
"srcs": [],
"content": "rel: versioned keys -> simpler invalidation\nq: workload impact -> needs measurement"
}
重要な検証ルール:
- 要約は英語で3~15語にします。
- タグは JSON 配列にします。カンマ区切りの文字列1つにはしません。
- ステータスが
FまたはCのエントリには、ソースが必要です。 - ソースのないエントリにはステータス
Hを使用し、fact:またはnum:の行を含めることはできません。 - 争点のあるエントリにはステータス
Cを使用し、少なくとも1つのctr:行を含めます。 - ブロックの内容は ASCII の英語とし、定義済みの8種類の行プレフィックスを使用します。
直接書き込める、ソース付きおよび争点のあるエントリについては、examples/research_entries.json を参照してください。
すべての書き込みでは、楽観的リビジョン番号とアトミックなファイル置換を使用します。古いリビジョンは呼び出し元に通知されますが、安全な追記は破棄されません。
安全性モデル
MMP のコンテンツは参照データであり、指示ではありません。読み取り応答では、明示的な非信頼エンベロープを使用します。
<mmp_data file="..." trust="untrusted">
...
</mmp_data>
サーバーは書き込み時に、一般的な指示形式のパターンを拒否し、ref: リンクを自動的にたどりません。また、保存された資料に含まれる指示に従わないようクライアントに伝えます。これらの対策はプロンプトインジェクションのリスクを低減しますが、信頼できない調査内容を信頼できる指示に変えるものではありません。
ローカルの MCP サーバーは、ユーザーの権限で実行されます。機密情報を保存する前に、パッケージを確認し、専用のメモリディレクトリを選択してください。
プロジェクトの状況
Dense Knowledge は、BM25 検索、カタログ生成、重複スクリーニング、予算管理、追記専用の置き換え、検証を含む、フラットな MMP/1.0 形式を実装しています。非常に大規模なパッケージ向けの階層インデックスは計画されていますが、まだ実装されていません。
リリースはセマンティックバージョニングに従います。変更内容は CHANGELOG.md に記載されています。
開発
python -m venv .venv
source .venv/bin/activate
python -m pip install -e ".[dev]"
ruff check src tests benchmarks
pytest
python -m build
コントリビューションを歓迎します。ワークフローについては CONTRIBUTING.md を、脆弱性を非公開で報告する方法については SECURITY.md を参照してください。
MIT License の下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。