mcpField
T
tacitus-mcp-server

tacitus-mcp-server

ローカル
github.com/ionasrobertメモリ・ナレッジ010 週間前に更新

tacitus-mcp-server について

TacitusはMarkdownノートのフォルダーを、出典情報を保持するローカル優先のAIエージェント向けナレッジベースにします。トークン予算に応じたハイブリッド検索と、監査・バージョン管理付きの書き戻しを備え、ノートは通常のファイルとして保持されます。

主な機能

  1. 01Markdownベースのエージェント記憶
  2. 02出典情報と矛盾の提示
  3. 03トークン予算内のハイブリッド検索
  4. 04段階的なノート取得
  5. 05監査可能で取り消せるノート編集
  6. 06検索可能なWikiリンクグラフ

活用シーン

  1. 01エージェント向けの関連ノート断片の取得
  2. 02出典付きの事実の保存と矛盾の発見
  3. 03ノート変更の提案、確認、取り消し
  4. 04ノート間リンクの検索

MCP 対応

MCPクライアントに記憶、検索、グラフ、書き戻しのツールを提供します。ネイティブサーバーは読み取り専用で動作でき、書き込みは監査記録され、バージョン単位で取り消せます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ionasrobert-tacitus": {
"command": "npx",
"args": [
"-y",
"@dashiro/tacitus-mcp-server"
]
}
}
}
起動コマンドnpx -y @dashiro/tacitus-mcp-server

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

パッケージ
npm@dashiro/tacitus-mcp-server0.1.2

ツール

16

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

パラメーター型必須説明
keystringいいえ
ttlnumberいいえ
tagsarrayいいえ
typestringはい
sourceobjectいいえ
source.authorenumはいhuman | agent
source.originstringはい
source.timestampstringいいえ
contentstringはい

詳細

Tacitus

AI エージェントの長期記憶 — ローカルファーストで、出典情報付き。

npm CI license

Tacitus は、任意の Markdown メモフォルダーをエージェントネイティブなナレッジベースに変える MCP サーバーです。AI エージェント(Claude Code、Claude Desktop、および任意の MCP クライアント)が本当に必要とする、次の 3 つを提供します。

  1. 出典情報付きの記憶 — 型付きでクエリ可能な長期記憶です。すべての事実に出典が紐づき、トークン予算内で返されます。矛盾は黙って解決されず、明示されます。
  2. コンテキストウィンドウに収まる検索 — 検索では、トークン予算内で順位付けされたスニペットが返されます(メモ全体が返されることはありません)。get_note では段階的に内容を開示します(概要 → フロントマター → 全文)。ウィキリンクのグラフはクエリ可能な API です。ハイブリッドな語彙検索とセマンティック検索に、オプションのニューラル埋め込み機能を備えています。
  3. 安全な書き戻し — 変更セットを提案し、差分をプレビューして、アトミックにコミットし、バージョン単位で元に戻せます。読み取り専用スコープでは変更が禁止され、すべての書き込みが監査されます。

メモはフォルダー内にプレーンな .md ファイルとして残ります。クラウドもベンダーロックインもありません。

出典付きの事実を記憶し、トークン予算内で呼び出し、差分を提案してコミットし、元に戻すエージェント

実際のセッションを記録したものです — 上記のメモリ ID、変更セット ID、バージョン ID、監査ログの行は、バイナリが実際に返した内容です(方法)。

クイックスタート

npx -y @dashiro/tacitus-mcp-server /path/to/your/vault
Claude Code
claude mcp add tacitus -- npx -y @dashiro/tacitus-mcp-server /path/to/your/vault
Claude Desktop(claude_desktop_config.json)
{
  "mcpServers": {
    "tacitus": {
      "command": "npx",
      "args": ["-y", "@dashiro/tacitus-mcp-server", "/path/to/your/vault"]
    }
  }
}
ネイティブバイナリ(Node 不要)

依存関係のない単一のバイナリをお求めですか?Rust サーバーは、リリースごとに macOS、Linux、Windows 向けのビルド済みバイナリを提供します。

# macOS / Linux — installs `tacitus-mcp` into your Cargo bin dir
curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/ionasrobert/tacitus-mcp-server/releases/latest/download/tacitus-mcp-installer.sh | sh
# Windows (PowerShell)
irm https://github.com/ionasrobert/tacitus-mcp-server/releases/latest/download/tacitus-mcp-installer.ps1 | iex

または、プラットフォームに合った .tar.xz / .zip を 最新リリースからダウンロードしてください。次に、npx の代わりにバイナリを任意の MCP クライアントに指定します。

claude mcp add tacitus -- tacitus-mcp /path/to/your/vault

ネイティブバイナリが主力のサーバーです(25 個のツール。npm サーバーにはコアの 16 個があります — 下の表を参照してください)。どちらも同じディスク上の形式を使用するため、どちらでも同じボルトを利用できます。TACITUS_SCOPE=read-only を設定すると、書き込み権限なしでネイティブサーバーを実行できます。

ツール

グループツール
メモリーremember、recall、forget
検索・取得search、get_note、graph_query、list_notes、properties_query*
書き戻しpropose_changes、commit_changes、revert、rename_note、delete_note、get_version*
便利機能create_note、update_note、link、tag、audit_log
テンプレートlist_templates、create_from_template
タスクlist_tasks、toggle_task
メタcapabilities

* まずネイティブ Rust サーバーで対応(npm サーバーも順次対応予定): properties_query — YAML フロントマターに対する Bases 風の構造化クエリ (フィルター eq|ne|contains|exists|not_exists|gt|lt|gte|lte、並べ替え、選択、 token_budget)。テンプレート — .tacitus/templates/ 内の Markdown ファイルで、 {{var}} プレースホルダーがスキーマを構成します。YAML の解析前に置換するため、 数値変数は型を維持し、{{date}}/{{time}}/{{datetime}} は自動入力されます。 作成は、エージェントによる他の書き込みと同様に、バージョン管理され監査されます。 タスク — チェックリストの各行(- [ ])を型付きエンティティ(完了状態、due:YYYY-MM-DD または 📅 による期限、#タグ)として扱い、クエリと切り替えが可能です。切り替え時はタスクの テキストを同時実行制御のガードとして使用するため、古い情報を持つ呼び出し元は、誤った タスクを切り替える代わりに CONFLICT を受け取ります。rename_note は、そのノートを 参照するすべての wikilink のリンク先を(エイリアス/見出しは保持したまま)単一の アトミックな変更セットで更新します。1 回の取り消しですべての名前変更を元に戻せます。 delete_note もバージョン管理されます。

すべてのツールはスキーマで入力を検証し、スタックトレースではなく、実行可能な 構造化エラー({ code, reason, suggestion })を返します。

開発者向け:プラグインと統合

Tacitus では、プラグインは MCP クライアントです — 上記のツール契約が公開 API であり、 権限のスコープ設定、バージョン管理、監査機能が組み込まれています。

  • docs/PLUGINS.md — 統合ガイド:エージェントの接続、 Python/TypeScript でのプラグイン作成、Rust エンジンの組み込み、プラグインのパターン
  • TypeScript SDK — @dashiro/tacitus-sdk:すべてのツールを 型付きメソッドとして提供し、{code, reason, suggestion} エラーは TacitusToolError としてスローされます:
    const tacitus = await TacitusClient.spawn({ vault: '/path/to/vault' });
    const hits = await tacitus.search({ query: 'client X', token_budget: 500 });
    
  • サンドボックス化された WASM プラグイン(実験的) — tacitus-plugins クレートは、 マニフェストで宣言した権限(ツールの許可リスト+スコープ)、燃料とメモリーの制限、 WASI なしの条件で Wasmtime 上でゲスト wasm を実行します。tacitus.call は tools/call そのものです。ネイティブバイナリーにはランタイムが組み込まれており、 tacitus-mcp plugin list|run で cron エージェントやスクリプトを実行できます。 docs/PLUGINS.md §5 を参照してください
  • docs/MCP_API.md — 25 個すべてのツールの完全なリファレンス (パラメーター、戻り値、エラーコード)
  • ニューラル検索(オプトイン):TACITUS_EMBEDDER=ollama を指定すると、 埋め込みの生成にローカルの Ollama デーモンを使用します (TACITUS_OLLAMA_EMBED_MODEL、既定値は nomic-embed-text。埋め込みに対応した Ollama が必要です)。ベクトルは .tacitus/vectors/ にキャッシュされます。 利用できない場合は、決定論的なハッシュ埋め込み器にフォールバックします。
  • docs/SYNC.md — 同期(ベータ):デバイス間の E2E 暗号化 CRDT 同期 (tacitus-mcp sync init。sync status で、Vault がリレーのクォータをどれだけ 使用しているかを確認できます)
  • docs/DATA_FORMAT.md — ディスク上の形式 (.tacitus/ の内部構造、安定した ID、ノートの規則)
  • examples/ — 完全なプラグイン 3 種(Python 製の読み取り専用アナライザー、 Node 製の日次ノート用 cron エージェント、サンドボックス化された WASM ゲスト)。 バイナリーに対してテスト済みです
同期リレーから見えるもの

リレーを介してノートをやり取りする 2 台のデバイス:デバイス上ではプレーンな Markdown、リレーのログには base64 暗号文のみ

左:2 台のデバイス上のプレーンな Markdown。右:その Vault についてリレーが保存するすべての内容です。これらのデータブロブは、録画後に実際の log.jsonl から読み取ったものです。 ノートのタイトルも、パスも、平文もありません。Vault コードが鍵であり、デバイスの外に出ることはありません。これを失うと、リレー上のコピーは永久に復号できなくなります。

セマンティック検索(ニューラル埋め込みはオプション)

search はデフォルトでハイブリッドモード(語彙検索+形態的な変化形を捉える決定論的なオフライン埋め込み器)を使用します。同義語や言い換えを照合するには、ニューラル埋め込み器を有効にします。

npm i @huggingface/transformers
TACITUS_EMBEDDER=transformers npx @dashiro/tacitus-mcp-server /path/to/vault

ベクトルは .tacitus/vectors/ にキャッシュされます。オプションの依存関係またはモデルが利用できない場合は、決定論的な埋め込み器にフォールバックします。

データの保存方法

your-vault/
├── notes...             ← your Markdown files (untouched format)
└── .tacitus/
    ├── memory/*.md      ← agent memories (Markdown + YAML frontmatter)
    ├── vectors/*.json   ← cached embeddings
    ├── history/*.json   ← version snapshots (for revert)
    └── audit.log        ← JSONL log of every agent write

開発

ポリグロット構成のモノレポです。リファレンスサーバー(npm で配布)は packages/mcp-server にある TypeScript 製です。crates/ にあるネイティブ Rust サーバーは、単一バイナリでランタイム依存関係のないビルド(crates/tacitus-core エンジン+crates/tacitus-mcp rmcp サーバー)を提供します。これは TS サーバーのスーパーセット(ツール数は 25 個対 16 個)です。その stable_id は TS エンジンとバイト単位で一致するため、両方のエンジンでメモリー ID は同一です。

# TypeScript server
npm ci
npm test          # vitest
npm run typecheck
npm run lint
npm run build     # tsup → packages/mcp-server/dist
npm run eval      # retrieval quality report

# Rust server (native, single binary)
cargo test
cargo clippy --all-targets -- -D warnings
cargo fmt --check
cargo run -p tacitus-mcp -- /path/to/vault   # runs the MCP server on stdio
cargo build --release                         # → target/release/tacitus-mcp

クロスプラットフォームのリリースバイナリは、v* タグごとに cargo-dist(dist-workspace.toml + .github/workflows/release.yml)によってビルドされ、GitHub Releases に公開されます。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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