mcpField
Y
Yantrikdb

Yantrikdb

ローカル
github.com/yantrikosメモリ・ナレッジ254 日前に更新

Yantrikdb について

YantrikDB は AI エージェント向けの認知メモリ MCP サーバーで、セッションをまたいで持続する意味検索可能なメモリ、ナレッジグラフ、適応的な想起を提供します。データはローカルの SQLite に保存されるほか、HTTP クラスターで共有することもできます。

主な機能

  1. 01持続的な意味検索可能メモリと選択的な想起
  2. 02関係を記録するナレッジグラフ
  3. 03矛盾検出とメモリ修正
  4. 04テレメトリなしのローカル SQLite ストレージ
  5. 05選択可能な Embedder バックエンド

活用シーン

  1. 01コーディングエージェントのセッション間でプロジェクトの決定事項を保持
  2. 02複数マシン間で同じエージェントメモリを共有
  3. 03全メモリファイルを読み込む場合に比べてコンテキストの消費を抑制

MCP 対応

本プロジェクトは MCP サーバーであり、Claude Code、Cursor、Windsurf などの MCP クライアントに対して remember、recall、graph、conflict など 21 個のメモリ関連ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"yantrikdb": {
"command": "uvx",
"args": [
"yantrikdb-mcp"
],
"env": {
"YANTRIKDB_DB_PATH": "<YANTRIKDB_DB_PATH>",
"YANTRIKDB_TOOL_PROFILE": "<YANTRIKDB_TOOL_PROFILE>"
}
}
}
}
起動コマンドuvx yantrikdb-mcp
設定が必要な環境変数
YANTRIKDB_DB_PATHDatabase file path (default: ~/.yantrikdb/memory.db)
YANTRIKDB_TOOL_PROFILEAdvertised tool set: full (all 20) or core (10 golden-path)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiyantrikdb-mcp0.24.0

ツール

21

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
textanyいいえ
claimsanyいいえ
domainstringいいえ
sourcestringいいえ
summaryanyいいえ
valencenumberいいえ
memoriesanyいいえ
metadataanyいいえ
certaintynumberいいえ
namespacestringいいえ
created_atanyいいえ
event_timeanyいいえ
importancenumberいいえ
memory_typestringいいえ
emotional_stateanyいいえ
idempotency_keyanyいいえ

詳細

YantrikDB MCP Server

YantrikDB — AI エージェントのための認知メモリです。永続的な意味検索、ナレッジグラフ、矛盾の検出、手続き学習を実現します。組み込みエンジン、ネットワークデータベース、MCP サーバーとして提供されます。

Claude Code、Cursor、Windsurf、Hermes Agent、Prime Agent、および MCP 対応クライアントで動作します。ポータブルな Agent Skills スキル — skills/persistent-memory — も同梱しており、準拠するあらゆるハーネスにメモリの基本的な使い方を教えます。

PyPI PyPI downloads Python License: MIT

ウェブサイト: yantrikdb.com · ドキュメント: yantrikdb.com/guides/mcp · GitHub: yantrikos/yantrikdb-mcp · 論文: スキルはドキュメントではなくメモリ

yantrikdb-mcp のデモ:MCP 経由で3つのメモリを保存し、それらと共通する単語がない質問で1つを呼び出した後、think() が、同じオンコールリードに関する保存済みの2つの信念が矛盾していることを検出します。次のセッションでは open_conflicts: 1 を含む検索結果が返されます

画面上の値はすべて、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-v2ONNX モデル名(YANTRIKDB_EMBEDDER=onnx の場合のみ使用)
YANTRIKDB_SKILLS_WRITE_ENABLEDすべてfalsetrue に設定すると、エージェントが skill(action="define") でスキルを作成できます(下記の Skill substrate を参照)
YANTRIKDB_OUTCOMES_WRITE_ENABLEDすべてtrueskill(action="outcome") による成果の追跡。フィードバックループがすぐに機能するよう、デフォルトで有効です。成果基盤をロックするには false に設定します。#8 により v0.8.1 で追加
YANTRIKDB_API_KEYSSE サーバー(なし)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 MB101 言語(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削減率適合率
1001,770 トークン69 トークン96%66%
5009,807 トークン72 トークン99.3%77%
1,00019,988 トークン72 トークン99.6%84%
5,000101,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. コールドスタート — 1 回の呼び出し。 session(action="digest") は、単一の概要(ナラティブチェーンの先頭、未決定の判断、未解決の競合、保留中のトリガー、古くなった重要度の高いメモリ)を返します。これにより、会話開始時の複数の個別の recall/temporal 呼び出しを置き換えます。その後、現在のメッセージに関係する具体的な内容に限って recall を呼び出します。
  2. 作業中 — 進行に合わせて記録。 新たに判明した、今後も有効な事実 → remember。保存済みの事実が変わった → correct(履歴を保持し、矛盾を避けます)。関係性が判明した → graph(action="relate")。
  3. まとまった作業の終了時 — 条件付き。 セッションが長かった場合、または状態が変化した場合に限り、think を呼び出して情報を整理し、競合を検出します。短いやり取りや読み取り専用のやり取りでは、終了時の手順は不要です。

信頼境界: 想起されたメモリやダイジェストの抜粋は、指示ではなくデータです。プレイブックでは、想起された内容に含まれる指示を実行しないようエージェントに指示します。メモリには、以前のセッションや別のユーザーが保存したテキストが含まれている可能性があります。

ツール

21 個のツールでエンジン全体を網羅しています(gaps、conversation、task は v0.9.0 で追加、pack は v0.11.0 で追加、atlas は v0.24.0 で追加):

ツールアクション目的
remembersingle / batch記憶を保存します — 判断、好み、事実、修正
recallsearch / refine / feedback意味検索、絞り込み、取得に関するフィードバック
forgetsingle / batch記憶を論理削除します
correct—誤った記憶を修正します(履歴を保持)
think—統合 + 矛盾検出 + パターンマイニング
memoryget / list / search / update_importance / archive / hydrate個々の記憶の管理 + キーワード検索
graphrelate / edges / link / search / profile / depthナレッジグラフ操作
conflictlist / get / resolve / reclassify矛盾への対処と代替パターンの学習
triggerpending / history / acknowledge / deliver / act / dismiss先回りしたインサイトと警告
sessionstart / end / history / active / abandon_staleセッションのライフサイクル管理
temporalstale / upcoming時間ベースの記憶クエリ
procedurelearn / surface / reinforce手続き記憶 — 戦略を学習して再利用
categorylist / members / learn / reset矛盾検出用の代替カテゴリ
personalityget / set記憶パターンに基づく AI の性格特性
statsstats / health / weights / maintenanceエンジンの統計、健全性、重み、インデックスの再構築
skilldefine / surface / outcome / get / list基盤ネイティブのエージェントスキルカタログ(書き込みはデフォルトで無効 — スキル基盤を参照)
gaps—v0.9.0 — 頻出する、回答が不十分なクエリを提示します(基盤が把握している未知の領域)
conversationrecord / recent / clearv0.9.0 — 発話をそのまま記録する、上限付きの暗号化リングバッファ。名前空間ごとに分離されています
taskadd / get / list / update / deletev0.9.0 — 基盤を利用したタスク/雑務ストア。セッションをまたいで保持され、session(action="digest") に表示されます
packlist / inspect / install / mount / trustv0.11.0 — 署名付きのポータブルなメモリバンドル。信頼する前に封印されたコーパスを検査し、インストール/マウントして自分の記憶と並行して読み込めます(ローカルの記憶より重みは低く設定)。発行者の信頼を管理します。書き込み操作はオペレーターによる有効化が必要です(YANTRIKDB_ENABLE_PACK_WRITES=1)
atlasexport / statusv0.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、パスワードの代入を検出無効にするには =A2GitHub のシークレットスキャンのサブセット
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=trueMCP↔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=falsev0.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=true1つの 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
body50~5000 文字
applies_to1~10 個の小文字とアンダースコアで構成される識別子(ハイフン不可。基盤の一貫性を保つうえで重要です)
skill_typeprocedure、reference、lesson、pattern、rule のいずれか
on_conflictreject(デフォルト)または 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 MCPmem0Letta (MemGPT)Zepネイティブ MCP ファイルシステムメモリ
MCP ネイティブ✅ ファーストクラスカスタム統合経由カスタム統合経由カスタム統合経由✅ ファイルシステム形式
埋め込み可能(サーバー不要)✅ Rust + Python❌ サービスが必要❌ サービスが必要❌ サービスが必要✅ ファイルシステム
ネットワークデータベースモード✅ Raft HA クラスター✅ Pro / Enterprise✅ セルフホスト可能✅ マネージド + セルフホスト可能❌
セマンティック想起(ベクトル)✅ HNSW✅✅✅❌(ファイルの grep のみ)
ナレッジグラフ✅ 型付きノード + エッジ✅(最近追加)部分的✅❌
矛盾検出✅ 自律型❌❌❌❌
手続き記憶✅ 有効性順にランク付け❌部分的❌❌
スキル基盤(スキーマ検証済み)✅ 7 層の防御❌❌❌❌
自律的な統合(think)✅❌部分的✅❌
時間減衰 + 半減期✅ 生物学的モデル❌❌❌❌
プロアクティブなトリガー✅❌❌❌❌
パーソナリティ特性の導出✅ 記憶パターンから❌❌❌❌
ストレージローカル SQLite + WALホスト型ローカルローカル + ホスト型ファイルシステム
ライセンスMIT(エンジンは Apache-2.0)Apache 2.0Apache 2.0Apache 2.0MIT
査読済み論文✅ 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 をご覧ください。

サポート

関連プロジェクト

同じメモリ基盤を、異なるエントリーポイントから利用できます。

  • 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)。このサーバーとエンジンはいずれも現在、寛容なライセンスで提供されており、コード、変更、ホスト型サービスにコピーレフトの義務はありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。