Yantrikdb について
YantrikDB は AI エージェント向けの認知メモリ MCP サーバーで、セッションをまたいで持続する意味検索可能なメモリ、ナレッジグラフ、適応的な想起を提供します。データはローカルの SQLite に保存されるほか、HTTP クラスターで共有することもできます。
主な機能
- 01持続的な意味検索可能メモリと選択的な想起
- 02関係を記録するナレッジグラフ
- 03矛盾検出とメモリ修正
- 04テレメトリなしのローカル SQLite ストレージ
- 05選択可能な Embedder バックエンド
活用シーン
- 01コーディングエージェントのセッション間でプロジェクトの決定事項を保持
- 02複数マシン間で同じエージェントメモリを共有
- 03全メモリファイルを読み込む場合に比べてコンテキストの消費を抑制
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Code、Cursor、Windsurf などの MCP クライアントに対して remember、recall、graph、conflict など 21 個のメモリ関連ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
21掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | any | いいえ | |
| claims | any | いいえ | |
| domain | string | いいえ | |
| source | string | いいえ | |
| summary | any | いいえ | |
| valence | number | いいえ | |
| memories | any | いいえ | |
| metadata | any | いいえ | |
| certainty | number | いいえ | |
| namespace | string | いいえ | |
| created_at | any | いいえ | |
| event_time | any | いいえ | |
| importance | number | いいえ | |
| memory_type | string | いいえ | |
| emotional_state | any | いいえ | |
| idempotency_key | any | いいえ |
詳細
YantrikDB MCP Server
YantrikDB — AI エージェントのための認知メモリです。永続的な意味検索、ナレッジグラフ、矛盾の検出、手続き学習を実現します。組み込みエンジン、ネットワークデータベース、MCP サーバーとして提供されます。
Claude Code、Cursor、Windsurf、Hermes Agent、Prime Agent、および MCP 対応クライアントで動作します。ポータブルな Agent Skills スキル — skills/persistent-memory — も同梱しており、準拠するあらゆるハーネスにメモリの基本的な使い方を教えます。
ウェブサイト: yantrikdb.com · ドキュメント: yantrikdb.com/guides/mcp · GitHub: yantrikos/yantrikdb-mcp · 論文: スキルはドキュメントではなくメモリ

画面上の値はすべて、MCP 経由でサーバー自身が返した回答です — ドライバー:docs/demo/demo.py、docs/demo/demo.tape を使って記録。
概要
| 概要 | MCP 対応のあらゆる AI エージェントに、セッションをまたいで使える永続的で構造化された検索可能なメモリを提供する MCP サーバーです |
| インストール | pip install yantrikdb-mcp |
| 対応環境 | Claude Code、Cursor、Windsurf、Continue、Claude Desktop、Hermes Agent、Prime Agent、あらゆる MCP クライアント |
| ストレージ | ローカル SQLite(~/.yantrikdb/memory.db。任意のパス、または HTTP クラスターも使用可能) |
| 埋め込みモデル | 同梱の64次元 Rust 埋め込みモデル(デフォルト)、384次元 ONNX MiniLM([onnx] extra)、256次元多言語モデル(101言語) |
| ツール | 21 — remember、recall、forget、correct、think、memory、graph、conflict、trigger、session、temporal、procedure、category、personality、stats、skill、gaps、conversation、task、pack、atlas |
| ライセンス | MIT(エンジン:Apache-2.0) |
| プライバシー | すべてのデータはお使いのマシンに保存されます。テレメトリーなし。外部サービスなし。 |
インストール
# Default — uses the engine's bundled 64-dim embedder. ~10 MB install,
# ~80 ms cold start, no native ML deps.
pip install yantrikdb-mcp
# Optional: higher-quality 384-dim ONNX MiniLM-L6-v2 embedder (~150 MB install).
# Auto-used when an existing pre-v0.6 database is detected.
pip install 'yantrikdb-mcp[onnx]'
Claude Code をお使いですか? pip の手順を省略できます:/plugin marketplace add yantrikos/yantrikdb-mcp、続けて /plugin install yantrikdb を実行すると、
PyPI を経由せず、このリポジトリから直接インストールされます。
v0.5.x からアップグレードしますか? 既存のデータベースは384次元のままです — 透過的にそのまま使い続けるには
[onnx]extra をインストールしてください。新規インストールでは、軽量な同梱埋め込みモデルがデフォルトになります。v0.7.0+ ではエンジンのマイグレーション修正が自動的に適用されます。 詳細は、以下の埋め込みモデルのバックエンドを参照してください。
設定
MCP サーバーには3つのデプロイモードがあります。環境に合ったものを選んでください。
モード 1 — ローカル(デフォルト、単一ユーザーに推奨)
MCP サーバーはローカルの SQLite データベースを使い、同一プロセス内でエンジンを実行します。高速でプライベート、依存関係はありません。
{
"mcpServers": {
"yantrikdb": {
"command": "uvx",
"args": ["yantrikdb-mcp"]
}
}
}
uvx は必要に応じてサーバーを取得して実行するため、インストール手順なしで動作します(PATH 上に uv が必要です)。pip または pipx で自分でパッケージをインストールした場合は、"command": "yantrikdb-mcp" に args を指定しない設定でも同じです。
これで完了です。エージェントはコンテキストを自動的に呼び出し、判断を自動的に記憶し、矛盾を自動的に検出します — プロンプトは不要です。
モード 2 — HTTP クラスター(共有/複数マシン構成におすすめ)
組み込みエンジンを使う代わりに、すべてのツール呼び出しを YantrikDB HTTP cluster に転送します。MCP サーバーはステートレスな薄型クライアントで、すべてのメモリはクラスター上に保存され、どのマシンからでもアクセスできます。
利点:マシン間でのメモリ共有、高可用性、ローカルでの埋め込みモデルのダウンロード不要、ローカルデータベース不要。
{
"mcpServers": {
"yantrikdb": {
"command": "uvx",
"args": ["yantrikdb-mcp"],
"env": {
"YANTRIKDB_SERVER_URL": "http://node1:7438,http://node2:7438",
"YANTRIKDB_TOKEN": "ydb_your_database_token"
}
}
}
}
- Raft クラスターの自動検出のため、複数のノードをカンマ区切りで指定します
- フェイルオーバー時にリーダーへ自動追従します
- リクエストタイムアウトは 15 秒です
- クラスターからトークンを取得します:
yantrikdb token create --db your_database
モード 3 — SSE サーバー(レガシー、単一のリモートインスタンス)
MCP サーバー自体を、独自の組み込みデータベースを備えた長時間稼働の SSE サーバーとして実行します。クライアントは HTTP ストリーミング経由で接続します。
# Generate a secure API key
export YANTRIKDB_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# Start SSE server
yantrikdb-mcp --transport sse --port 8420
{
"mcpServers": {
"yantrikdb": {
"type": "sse",
"url": "http://your-server:8420/sse",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
sse と streamable-http のトランスポートをサポートしています。注:アイドル状態になると SSE 接続が切断されることがあります。共有環境へのデプロイには、モード 2(HTTP クラスター)のほうが信頼性が高くなります。
環境変数
| 変数 | 使用モード | デフォルト | 説明 |
|---|---|---|---|
YANTRIKDB_SERVER_URL | クラスター | (未設定 → ローカルモード) | クラスターのノード URL(カンマ区切り) |
YANTRIKDB_TOKEN | クラスター | (なし) | クラスターデータベースのベアラートークン |
YANTRIKDB_DB_PATH | ローカル | ~/.yantrikdb/memory.db | データベースファイルのパス |
YANTRIKDB_EMBEDDER | ローカル | auto | バックエンドの選択:auto | bundled | onnx | multilingual |
YANTRIKDB_EMBEDDING_MODEL | ローカル | all-MiniLM-L6-v2 | ONNX モデル名(YANTRIKDB_EMBEDDER=onnx の場合のみ使用) |
YANTRIKDB_SKILLS_WRITE_ENABLED | すべて | false | true に設定すると、エージェントが skill(action="define") でスキルを作成できます(下記の Skill substrate を参照) |
YANTRIKDB_OUTCOMES_WRITE_ENABLED | すべて | true | skill(action="outcome") による成果の追跡。フィードバックループがすぐに機能するよう、デフォルトで有効です。成果基盤をロックするには false に設定します。#8 により v0.8.1 で追加 |
YANTRIKDB_API_KEY | SSE サーバー | (なし) | SSE/HTTP の提供時に使用するベアラートークン |
埋め込みバックエンド
ローカルモードには 3 種類の埋め込みモデルが含まれています。MCP が自動的にいずれかを選択します。YANTRIKDB_EMBEDDER で上書きできます。
| バックエンド | 次元数 | コールドスタート | インストールサイズ | 対応言語 | 使用される条件 |
|---|---|---|---|---|---|
bundled(エンジンのデフォルト) | 64 | 約 80 ms | 約 10 MB | 英語のみ | 新規/空のデータベース(自動選択) |
onnx(MiniLM-L6-v2) | 384 | 約 2 秒 | 約 150 MB | 英語(再現率が高い) | 既存の v0.6 より前のデータベース(自動選択)、または明示的に設定した場合 |
multilingual(potion-multilingual-128M) | 256 | 約 2 秒 + 初回使用時に約 460 MB のダウンロード | pip で約 10 MB + モデルキャッシュ約 500 MB | 101 言語(BGE-M3 トークナイザー) | YANTRIKDB_EMBEDDER=multilingual によるオプトインのみ |
auto(デフォルト)は YANTRIKDB_DB_PATH にある SQLite ファイルを読み取り、すでにメモリが含まれている場合は onnx を選択して、アップグレード後も再現率を維持します。それ以外の場合は bundled を選択します。多言語モデルは自動選択されません。256 次元のベクトルは、既存の bundled(64 次元)または ONNX(384 次元)のデータベースと互換性がないためです。新規データベースでのみオプトインできます。
YANTRIKDB_EMBEDDER=bundled|onnx|multilingual を設定すると上書きできます。YANTRIKDB_EMBEDDER=onnx を設定した場合(または自動検出で選択された場合)に、追加パッケージをインストールしていないと、サーバーはインストール方法を示してすぐに終了します。
RuntimeError: Existing DB has memories embedded with the 384-dim ONNX
model, but ONNX deps are missing.
Install with: pip install 'yantrikdb-mcp[onnx]'
多言語バックエンドでは、初回使用時にエンジンが github.com/yantrikos/yantrikdb-models から potion-multilingual-128M(約 460 MB の tarball)をダウンロードします。ダウンロードは SHA-256 で検証され、エンジンのキャッシュディレクトリに展開された後、次回以降の起動時に再利用されます。追加の Python 依存関係は不要です。モデルはすべて Rust エンジン内で動作します。
ファイルベースのメモリを使わない理由
ファイルベースのメモリ(CLAUDE.md、メモリファイル)は、会話のたびにすべてをコンテキストに読み込みます。YantrikDB は関連する情報だけを呼び出します。
ベンチマーク:15 件のクエリ × 4 つの規模
| メモリ数 | ファイルベース | YantrikDB | 削減率 | 適合率 |
|---|---|---|---|---|
| 100 | 1,770 トークン | 69 トークン | 96% | 66% |
| 500 | 9,807 トークン | 72 トークン | 99.3% | 77% |
| 1,000 | 19,988 トークン | 72 トークン | 99.6% | 84% |
| 5,000 | 101,739 トークン | 53 トークン | 99.9% | 88% |
選択的な想起は O(1) です。ファイルベースのメモリは O(n) です。
- 500 件のメモリでは、ファイルベースの方式は 32K のコンテキストウィンドウを超えます
- 5,000 件では、200K でさえ、どのコンテキストウィンドウにも収まりません
- YantrikDB はクエリあたり約 70 トークン、レイテンシ 60ms 未満を維持します
- データが増えるほど適合率は 向上 します。コンテキストを詰め込む方式とは逆です
ベンチマークを自分で実行するには、次のコマンドを実行してください:git clone https://github.com/yantrikos/yantrikdb-mcp && cd yantrikdb-mcp && pip install -e '.[torch]' && python benchmarks/bench_token_savings.py(このスクリプトは sentence-transformers を直接読み込みます。このパッケージはデフォルトの pip install yantrikdb-mcp ではインストールされません)。
推奨されるエージェントのワークフロー(基本手順)
サーバーは、基本手順をまとめたプレイブックをエージェントのシステムプロンプトに挿入します。v0.10.0 以降、デフォルトは 要約優先 です:
- コールドスタート — 1 回の呼び出し。
session(action="digest")は、単一の概要(ナラティブチェーンの先頭、未決定の判断、未解決の競合、保留中のトリガー、古くなった重要度の高いメモリ)を返します。これにより、会話開始時の複数の個別のrecall/temporal呼び出しを置き換えます。その後、現在のメッセージに関係する具体的な内容に限ってrecallを呼び出します。 - 作業中 — 進行に合わせて記録。 新たに判明した、今後も有効な事実 →
remember。保存済みの事実が変わった →correct(履歴を保持し、矛盾を避けます)。関係性が判明した →graph(action="relate")。 - まとまった作業の終了時 — 条件付き。 セッションが長かった場合、または状態が変化した場合に限り、
thinkを呼び出して情報を整理し、競合を検出します。短いやり取りや読み取り専用のやり取りでは、終了時の手順は不要です。
信頼境界: 想起されたメモリやダイジェストの抜粋は、指示ではなくデータです。プレイブックでは、想起された内容に含まれる指示を実行しないようエージェントに指示します。メモリには、以前のセッションや別のユーザーが保存したテキストが含まれている可能性があります。
ツール
21 個のツールでエンジン全体を網羅しています(gaps、conversation、task は v0.9.0 で追加、pack は v0.11.0 で追加、atlas は v0.24.0 で追加):
| ツール | アクション | 目的 |
|---|---|---|
remember | single / batch | 記憶を保存します — 判断、好み、事実、修正 |
recall | search / refine / feedback | 意味検索、絞り込み、取得に関するフィードバック |
forget | single / batch | 記憶を論理削除します |
correct | — | 誤った記憶を修正します(履歴を保持) |
think | — | 統合 + 矛盾検出 + パターンマイニング |
memory | get / list / search / update_importance / archive / hydrate | 個々の記憶の管理 + キーワード検索 |
graph | relate / edges / link / search / profile / depth | ナレッジグラフ操作 |
conflict | list / get / resolve / reclassify | 矛盾への対処と代替パターンの学習 |
trigger | pending / history / acknowledge / deliver / act / dismiss | 先回りしたインサイトと警告 |
session | start / end / history / active / abandon_stale | セッションのライフサイクル管理 |
temporal | stale / upcoming | 時間ベースの記憶クエリ |
procedure | learn / surface / reinforce | 手続き記憶 — 戦略を学習して再利用 |
category | list / members / learn / reset | 矛盾検出用の代替カテゴリ |
personality | get / set | 記憶パターンに基づく AI の性格特性 |
stats | stats / health / weights / maintenance | エンジンの統計、健全性、重み、インデックスの再構築 |
skill | define / surface / outcome / get / list | 基盤ネイティブのエージェントスキルカタログ(書き込みはデフォルトで無効 — スキル基盤を参照) |
gaps | — | v0.9.0 — 頻出する、回答が不十分なクエリを提示します(基盤が把握している未知の領域) |
conversation | record / recent / clear | v0.9.0 — 発話をそのまま記録する、上限付きの暗号化リングバッファ。名前空間ごとに分離されています |
task | add / get / list / update / delete | v0.9.0 — 基盤を利用したタスク/雑務ストア。セッションをまたいで保持され、session(action="digest") に表示されます |
pack | list / inspect / install / mount / trust | v0.11.0 — 署名付きのポータブルなメモリバンドル。信頼する前に封印されたコーパスを検査し、インストール/マウントして自分の記憶と並行して読み込めます(ローカルの記憶より重みは低く設定)。発行者の信頼を管理します。書き込み操作はオペレーターによる有効化が必要です(YANTRIKDB_ENABLE_PACK_WRITES=1) |
atlas | export / status | v0.24.0 — このストアの Memory Atlas(すべての記憶、エンティティリンク、主張、改訂履歴、タスク)を静的ページとしてエクスポートし、localhost で配信します。読み取り専用で、埋め込みモードのみ |
v0.9.0 では、既存のツールに以下のアクションも追加されています:
session(action="digest")— 起動時に 1 回の呼び出しで概要を提示します(ナラティブのチェーンヘッド + 未解決の判断 + 矛盾 + トリガー)think(maintenance_cycle=True)— 自律的なクリーンアップのスリープサイクルthink(last_cycle_only=True)— サイクルを実行せず、直近のサイクルの要約を読み取りますstats(action="audit_leak")— プライバシー/漏えい候補の監査stats(action="skill_outcomes")— 永続化されたスキル成果の件数graph(action="auto_relate" / "record_link" / "record_unlink" / "linked_records" / "recall_with_links")— 共起エッジ + レコード間リンク + リンクを展開した想起conflict(action="auto_resolve")— 明白な矛盾を一括で解消しますmemory(action="chain_head" / "history")— チェーン名前空間のヘッド + 改訂履歴trigger(action="prune")— 保留中のトリガーのバックログを制限しますremember(summary=...)— 下書きモード:エンジンが長い要約を、リンクされた意味的事実に分割します(セッション終了時に自動キャプチャ)
詳細なドキュメントは、yantrikdb.com/guides/mcpを参照してください。
スキル基盤(v0.8.0+)
YantrikDB は、単独の procedure メモとは別に、構造化されたエージェントスキルカタログを公開します。スキルはスキーマ(skill_id、applies_to、triggers、body、type)を持ち、専用の skill_substrate 名前空間に保存されます。そのため、複数の利用者(この MCP、yantrikdb-hermes-plugin、Lane B SDK、WisePick、yantrikdb-server の /v1/skills/* エンドポイント)が、すべて同じ基盤を読み書きできます。背景については、Sarkar 2026 — Skill as Memory, Not Document を参照してください。
セキュリティモデル
スキルへの書き込みは、セッションをまたいでエージェントの今後の振る舞いに影響するため、MCP サーバーは多層防御を実装しています。すべての制御には環境変数の設定項目があり(起動後は変更できません — C2)、全状態は stats(action="stats") と監査ログで確認できます。
多層制御(特記のない限り、それぞれデフォルトで有効です):
| レイヤー | 制御 | 環境変数 | 備考 |
|---|---|---|---|
| スキーマ | skill_id の正規表現、本文の長さは50~5000文字、applies_to は1~10件、skill_type は列挙型 | (常に有効) | yantrikdb-server /v1/skills/define と同じ正規表現セット |
| A1 プロンプトインジェクションマーカー | ロール混同や「以前の指示を無視して」というパターンを含む本文を拒否 | 無効にするには YANTRIKDB_SKILLS_DISABLE_SCANNERS=A1(監査対象) | OWASP LLM01 |
| A2 認証情報スキャナー | AWS/GitHub/Slack/Stripe/Google/Anthropic/OpenAI のキー、SSH/PGP 秘密鍵、JWT、パスワードの代入を検出 | 無効にするには =A2 | GitHub のシークレットスキャンのサブセット |
| A3 URL/IP ブロック | 本文に含まれる http(s)、ftp、IPv4 リテラルを拒否 | 許可するには YANTRIKDB_SKILLS_ALLOW_URLS=true | 下流エージェントへのデータ流出経路 |
| A4 Unicode による回避 | 許可リスト以外の非表示文字(Cf/Cs/Cn)を拒否 | 無効にするには =A4 | 双方向テキスト上書き(U+202E)、ゼロ幅スペース |
| A5 エンコードされたペイロード | 200文字以上の Base64/16進文字列を拒否 | 無効にするには =A5 | ヒューリスティックのため、大きなハッシュでは誤検知しやすい |
| B1 名前空間の許可リスト | skill_id の最初のセグメントがオペレーターのリストに含まれている必要があります | YANTRIKDB_SKILLS_ALLOWED_NAMESPACES=workflow,review | 未設定の場合はすべて許可 |
| B2 作成者の帰属情報 | session_id、os_user、hostname、wall_clock、audit_nonce を記録 | (常に有効) | フォレンジック用の記録 |
| B3 オリジンをまたぐ置き換え | 別のコンシューマーが作成したスキルの上書きを拒否 | 許可するには YANTRIKDB_SKILLS_ALLOW_CROSS_ORIGIN_REPLACE=true | MCP↔hermes-plugin 間の衝突を防止 |
| B4 supersedes の整合性 | supersedes は同じ名前空間にある既存のスキルを参照する必要があります | (常に有効) | 正当なスキルの悪意ある廃止を防止 |
| C1 時間制限ゲート | ゲートは指定のタイムスタンプで自動的に閉じます(define と outcome の両方に適用) | YANTRIKDB_SKILLS_WRITE_EXPIRES_AT=2026-12-31T00:00:00Z | 未設定の場合は期限なし |
| C1.5 outcome 用の分離ゲート | outcome アクションは独自のゲートを使用し、デフォルトで有効です | outcome もロックするには YANTRIKDB_OUTCOMES_WRITE_ENABLED=false | v0.8.1 以降:define と outcome では脅威プロファイルが異なります。outcome は新しい指示を導入できず、既存のスキルに対して {succeeded, note≤500} を追記するだけです。フィードバックループはデフォルトで動作します。必要に応じて明示的にロックしてください |
| C2 設定のロック | すべての YANTRIKDB_SKILLS_* / YANTRIKDB_OUTCOMES_* 環境変数を起動時に一度だけ読み込みます | (常に有効) | サブプロセス内の環境変数変更によるゲートの回避を防止 |
| D1 監査ログ | すべての受け入れ/拒否/改ざんイベントを JSONL 形式で追記 | YANTRIKDB_SKILLS_AUDIT_LOG=/var/log/yantrikdb/skills.jsonl | 未設定の場合は監査なし(起動時に警告) |
| D2 レート制限 | セッション ID ごとにスライディングウィンドウ方式で書き込み数を制限 | YANTRIKDB_SKILLS_WRITE_RATE=30(デフォルトでは毎分30回の書き込み) | 大量送信攻撃を防止 |
| D3 Outcome.note ガード | note は500文字以下とし、A1/A2/A4 でスキャン | (常に有効) | outcome を介したサイドチャネルを遮断 |
D4 stats のカウンター | 理由別の受け入れ/拒否数をカウントし、stats(action="stats")["skill_substrate"] で表示 | (常に有効) | オペレーターダッシュボード |
| E1 本文の SHA-256 | 書き込み時に保存し、読み取りのたびに再検証 | (常に有効) | DB の帯域外改ざんを検出します。surface/get では不一致を除外し、監査ログに記録します |
| E2 作成者のオリジン | metadata.author_origin タグ。デフォルトは yantrikdb-mcp | 上書きするには YANTRIKDB_SKILLS_AUTHOR_ORIGIN=... | コンシューマー間で基盤の来歴を追跡 |
| F 起動時の安全性 | 危険な設定について起動時に警告 | (常に有効) | [F.1]~[F.5] を標準エラー出力と監査ログに記録 |
G rule のレビューキュー | rule タイプのスキルは skill_pending_review に送られます(surface/get/list では表示されません) | 無効にするには YANTRIKDB_SKILLS_RULE_REQUIRES_REVIEW=false(推奨しません) | ルールはエージェントのポリシーに影響するため、人による承認が必要です |
| マルチテナントガード | DB に複数の actor ID があり、確認がない場合に [F.1] 警告 | YANTRIKDB_SKILLS_MULTITENANT_ACK=true | 1つの DB に1つのテナントを対応させるのが安全なデフォルトです |
エンタープライズ向けチェックリスト:
# Minimum production config when you turn the gate ON:
YANTRIKDB_SKILLS_WRITE_ENABLED=true
YANTRIKDB_SKILLS_WRITE_EXPIRES_AT=2026-12-31T00:00:00Z
YANTRIKDB_SKILLS_ALLOWED_NAMESPACES=workflow,review,onboarding
YANTRIKDB_SKILLS_AUDIT_LOG=/var/log/yantrikdb/skills.audit.jsonl
YANTRIKDB_SKILLS_AUTHOR_ORIGIN=acme-corp-claude-prod
# Defaults are already correct: writes off, scanners on, rate-limit 30/min,
# rule-type routed to review, body-hash verified on read, locked at startup.
監査ログが正式な記録です。すべての承認、すべての拒否(検出したスキャナーを含む)、読み取り時のすべての改ざん検知、期限切れによるすべてのゲート閉鎖が、すべて JSONL に記録されます。SIEM に接続してください。
stats(action="stats") の出力例(skill_substrate スライス)
"skill_substrate": {
"counters": {
"skill_defines_accepted": 12,
"skill_defines_rejected": {"content_scan:A2": 1, "namespace_not_allowed": 3},
"skill_outcomes_recorded": 47,
"skill_pending_review": 2
},
"config": {
"writes_enabled": true,
"write_expires_at": "2026-12-31T00:00:00+00:00",
"allowed_namespaces": ["workflow", "review"],
"audit_log_path": "/var/log/yantrikdb/skills.audit.jsonl",
"rule_requires_review": true,
"author_origin": "acme-corp-claude-prod"
}
}
スキーマ(書き込み時に検証)
| フィールド | 制約 |
|---|---|
skill_id | 小文字のドット区切りセグメント、長さ 4~200。例:workflow.git.commit_clean |
body | 50~5000 文字 |
applies_to | 1~10 個の小文字とアンダースコアで構成される識別子(ハイフン不可。基盤の一貫性を保つうえで重要です) |
skill_type | procedure、reference、lesson、pattern、rule のいずれか |
on_conflict | reject(デフォルト)または replace |
セッションの例
# Define (requires gate enabled)
skill(action="define",
skill_id="workflow.git.commit_clean",
body="Before commit: run pytest, run lint, write a clear subject + body.",
skill_type="procedure",
applies_to=["git", "release"])
# Surface relevant skills for the current task
skill(action="surface", query="how to commit cleanly", top_k=5)
# Record an outcome after using the skill (gated, append-only)
skill(action="outcome", skill_id="workflow.git.commit_clean",
succeeded=True, note="caught a flake8 issue pre-push")
成果は outcome_substrate 名前空間に追加専用イベントとして記録されます。親スキルで自動集計は行われません。これは、yantrikdb-server の「スキーマであり、意味論ではない」という設計ルールに沿っています。エージェント(またはオペレーター)は、成果を自ら集計して成功率を算出できます。
よくある質問
YantrikDB MCP とは何ですか?
YantrikDB MCP は、AI エージェントがセッションをまたいで永続的な認知メモリを利用できるようにする、Model Context Protocol(MCP)サーバーです。21 個のツール(remember、recall、forget、correct、think、graph、conflict、trigger、session、temporal、procedure、category、personality、stats、memory、skill、gaps、conversation、task、pack、atlas)を公開しており、MCP 互換クライアントである Claude Code、Cursor、Windsurf、Continue、Claude Desktop から、プロンプトを与えなくても自動的に呼び出せます。
CLAUDE.md のようなファイルベースのメモリとはどう違いますか?
ファイルベースのメモリでは、会話のたびにすべての内容がコンテキストに読み込まれるため、トークンコストは O(n) で増加します。YantrikDB では選択的なセマンティック想起を利用します。メモリが 5,000 件ある場合、ファイルベースでは会話ごとに約 101K トークンかかるのに対し、YantrikDB では約 53 トークンです。コンテキストウィンドウが埋まって精度が低下するのではなく、データが増えるほど精度が向上します。ベンチマークスクリプト:python benchmarks/bench_token_savings.py。
mem0/Letta/Zep/ネイティブ MCP メモリと比べるとどうですか?
以下の比較表を参照してください。要点としては、YantrikDB は、同じ基盤のセマンティクスを備えた組み込み可能な Rust エンジン、MCP サーバー、ネットワークデータベースのすべてを提供する唯一の製品です。また、プロシージャルメモリを第一級でサポートし、書き込み時にスキーマで検証されるスキル基盤を備え、自律的な統合と競合検出を行える唯一の製品でもあります。さらに、基盤となるエンジンが査読付き論文として公開されている唯一の製品です(Sarkar 2026、Zenodo DOI 10.5281/zenodo.20128887)。
セルフホストできますか?
はい。方法は 3 つあります。(1)ローカル:pip install yantrikdb-mcp を実行し、MCP クライアントから接続するだけです。SQLite は ~/.yantrikdb/memory.db に保存されます。(2)ネットワーク:yantrikdb-server をマルチテナント HTTP クラスターとして実行し、YANTRIKDB_SERVER_URL を使って MCP を接続します。(3)ハイブリッド:SSE サーバーモード(yantrikdb-mcp --transport sse)を使用して共有環境にデプロイします。
データはどこかに送信されますか?
いいえ。すべてのデータはお使いのマシン(またはクラスター)内にとどまります。テレメトリやサードパーティサービスはありません。デフォルトの埋め込み器は、静的ルックアップによって Rust エンジン内で完全に動作します。モデルのダウンロードや API 呼び出しはありません。オプションの [onnx] および多言語対応の埋め込み器は、HuggingFace の CDN から一度だけモデルの重みを取得し、その後はローカルで動作します。
procedure と skill の違いは何ですか?
procedure は、形式が定まっていない手順の記憶(有効性順にランク付けされ、スキーマなし)を保存します。skill は、yantrikdb-hermes-plugin、Lane B SDK、WisePick、および yantrikdb-server /v1/skills/* endpoints と共有される専用の skill_substrate 名前空間に、構造化されたカタログエントリー(skill_id、applies_to、triggers、body、type)を保存します。個人用の手順メモには procedure を、ほかの利用者にも提示できるようにする構造化されたエージェント機能には skill を使用してください。
skill の作成を安全に有効化できますか?
skill の書き込みは、将来のエージェントの動作に影響を与える可能性があるため、デフォルトで無効になっています。このゲートを有効にすると、多層防御として、プロンプトインジェクションスキャナー、認証情報スキャナー、URL ブロック、Unicode 偽装スキャナー、名前空間の許可リスト、作成者の帰属情報、監査ログ、レート制限、本文ハッシュによる改ざん検出、そして rule タイプの skill のレビューキューが適用されます。上記のセキュリティモデルをご覧ください。
本番環境で使えますか?
はい。yantrikdb-mcp は YantrikDB のホームラボクラスターで本番稼働しており(1973 件以上の記憶、SSE トランスポート、リリースサイクルごとに 2 週間の稼働実績)、エンジンのリリース判断を支えるリファレンスデプロイです。v0.8.x では、エンジンと同じ当日修正のペースが MCP サーバー自体にも適用されました。これまでにコミュニティから報告された 3 件の問題は、それぞれ約 4 時間、5 時間、4 日で修正され、中央値は約 5 時間でした。3 件中 2 件は当日中に修正されています。
エンジンは何で書かれていますか?
YantrikDB エンジンは Rust(crates.io: yantrikdb)で、pyo3 Python バインディング(PyPI: yantrikdb)を備えています。MCP サーバー自体は Python 製です。エンジンの Python バインディングを薄くラップし、stdio/SSE/HTTP トランスポートの処理を加えています。
ほかのエージェントメモリシステムとの比較
| 機能 | YantrikDB MCP | mem0 | Letta (MemGPT) | Zep | ネイティブ MCP ファイルシステムメモリ |
|---|---|---|---|---|---|
| MCP ネイティブ | ✅ ファーストクラス | カスタム統合経由 | カスタム統合経由 | カスタム統合経由 | ✅ ファイルシステム形式 |
| 埋め込み可能(サーバー不要) | ✅ Rust + Python | ❌ サービスが必要 | ❌ サービスが必要 | ❌ サービスが必要 | ✅ ファイルシステム |
| ネットワークデータベースモード | ✅ Raft HA クラスター | ✅ Pro / Enterprise | ✅ セルフホスト可能 | ✅ マネージド + セルフホスト可能 | ❌ |
| セマンティック想起(ベクトル) | ✅ HNSW | ✅ | ✅ | ✅ | ❌(ファイルの grep のみ) |
| ナレッジグラフ | ✅ 型付きノード + エッジ | ✅(最近追加) | 部分的 | ✅ | ❌ |
| 矛盾検出 | ✅ 自律型 | ❌ | ❌ | ❌ | ❌ |
| 手続き記憶 | ✅ 有効性順にランク付け | ❌ | 部分的 | ❌ | ❌ |
| スキル基盤(スキーマ検証済み) | ✅ 7 層の防御 | ❌ | ❌ | ❌ | ❌ |
自律的な統合(think) | ✅ | ❌ | 部分的 | ✅ | ❌ |
| 時間減衰 + 半減期 | ✅ 生物学的モデル | ❌ | ❌ | ❌ | ❌ |
| プロアクティブなトリガー | ✅ | ❌ | ❌ | ❌ | ❌ |
| パーソナリティ特性の導出 | ✅ 記憶パターンから | ❌ | ❌ | ❌ | ❌ |
| ストレージ | ローカル SQLite + WAL | ホスト型 | ローカル | ローカル + ホスト型 | ファイルシステム |
| ライセンス | MIT(エンジンは Apache-2.0) | Apache 2.0 | Apache 2.0 | Apache 2.0 | MIT |
| 査読済み論文 | ✅ Zenodo | ❌ | ✅ MemGPT 論文 | ❌ | ❌ |
| 問題報告への当日修正のペース | ✅(v0.8.x の 2 件は 4~5 時間で修正) | さまざま | さまざま | さまざま | 該当なし |
比較は、2026 年 5 月時点で公開されている機能を反映しています。各行の修正提案を歓迎します。
この研究の引用
YantrikDB を学術研究または研究の文脈で使用する場合は、基盤論文を引用してください。
@misc{sarkar2026skill,
author = {Sarkar, Pranab},
title = {Skill as Memory, Not Document: A Database-Native Substrate for Agent Skill Catalogs},
year = {2026},
publisher = {Zenodo},
doi = {10.5281/zenodo.20128887},
url = {https://doi.org/10.5281/zenodo.20128887},
orcid = {0009-0009-8683-1481}
}
プレーンテキストの引用:
Sarkar, P. (2026). スキルは文書ではなく記憶:エージェントスキルカタログのためのデータベースネイティブな基盤. Zenodo. https://doi.org/10.5281/zenodo.20128887
例
1. 会話開始時の自動想起
ユーザー:「データベースの移行について、何を決めましたか?」
エージェントは自動的に recall("database migration decision") を呼び出し、回答する前に関連する記憶を取得します。手動でプロンプトを入力する必要はありません。
2. 決定を記憶してナレッジグラフを構築
ユーザー:「新しいサービスには PostgreSQL を採用します。移行は Alice が担当します。」
エージェントは次を呼び出します。
remember(text="Decided to use PostgreSQL for the new service", domain="architecture", importance=0.8)remember(text="Alice owns the PostgreSQL migration", domain="people", importance=0.7)graph(action="relate", entity="Alice", target="PostgreSQL Migration", relationship="owns")
3. 矛盾の検出
「Python 3.11 を使用しています」を保存した後で「Python 3.12 にアップグレードしました」と伝えた場合、think() を呼び出すと矛盾が検出されます。エージェントは次のように伝えます。
「矛盾が見つかりました。以前は Python 3.11 とおっしゃっていましたが、最近 Python 3.12 に言及されました。現在のバージョンはどちらですか?」
その後、conflict(action="resolve", conflict_id="...", strategy="keep_b") で解決します。
プライバシーポリシー
YantrikDB MCP Server は、すべてのデータをお使いのマシン上にローカル保存します(デフォルト:~/.yantrikdb/memory.db)。外部サーバーへのデータ送信やテレメトリーの収集はなく、動作中にサードパーティのサービスへ接続することもありません。
- データ収集:
rememberツールを使って明示的に保存したデータ、または AI エージェントが代わりに保存したデータのみです。 - データ保存: ファイルシステム上のローカル SQLite データベースです。
YANTRIKDB_DB_PATHで保存先を設定できます。 - サードパーティとの共有: ありません。ローカル(stdio)モードでは、データがマシンの外に出ることはありません。
- ネットワークモード: SSE/HTTP トランスポートを使用する場合、データはクライアントとセルフホストしたサーバーの間を移動します。Anthropic やサードパーティのサーバーは関与しません。
- 埋め込みモデル: ローカル ONNX モデル(
all-MiniLM-L6-v2)を使用します。初回使用時に Hugging Face Hub からモデルファイルを一度ダウンロードし、その後はローカルにキャッシュします。 - 保持期間: データは、削除する(
forgetツール)か、データベースファイルを削除するまで保持されます。 - お問い合わせ先: [email protected]
ポリシー全文:yantrikdb.com/privacy
貢献
venv のセットアップ、pytest の実行、PR の作成については、CONTRIBUTING.md をご覧ください。
サポート
- 問題の報告: github.com/yantrikos/yantrikdb-mcp/issues
- メール: [email protected]
- ドキュメント: yantrikdb.com/guides/mcp
関連プロジェクト
同じメモリ基盤を、異なるエントリーポイントから利用できます。
- yantrikdb — このサーバーの基盤となる、組み込み可能な Rust/Python エンジンです(
pip install yantrikdb)。 - yantrikdb-server — 上記のネットワークデプロイモード向けの HTTP ゲートウェイおよび HA クラスターです。
- yantrikdb-client — このサーバー向けの型付き Python クライアントです。
- langchain-yantrikdb — LangChain の
VectorStoreおよびChatMessageHistoryとして YantrikDB を利用できます。 - yantrikdb-hermes-plugin — NousResearch/hermes-agent 向けのメモリプロバイダーです。同じスキル基盤を共有します。
- yantrik-memory — トレイトと結合の進化を備えた、フレームワークに依存しないメモリレイヤーです。
- openclaw-memory-yantrikdb — YantrikDB を基盤とする OpenClaw メモリスロットプラグインです。ClawHub で公開されています。
ライセンス
この MCP サーバーは MIT ライセンスで提供されており、あらゆるプロジェクトで自由に使用できます。
注:このパッケージは、認知メモリエンジンである yantrikdb に依存しています。同エンジンは 2026-08-18 時点で Apache-2.0 ライセンスです(以前は AGPL-3.0)。このサーバーとエンジンはいずれも現在、寛容なライセンスで提供されており、コード、変更、ホスト型サービスにコピーレフトの義務はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。