tacitus-mcp-server について
TacitusはMarkdownノートのフォルダーを、出典情報を保持するローカル優先のAIエージェント向けナレッジベースにします。トークン予算に応じたハイブリッド検索と、監査・バージョン管理付きの書き戻しを備え、ノートは通常のファイルとして保持されます。
主な機能
- 01Markdownベースのエージェント記憶
- 02出典情報と矛盾の提示
- 03トークン予算内のハイブリッド検索
- 04段階的なノート取得
- 05監査可能で取り消せるノート編集
- 06検索可能なWikiリンクグラフ
活用シーン
- 01エージェント向けの関連ノート断片の取得
- 02出典付きの事実の保存と矛盾の発見
- 03ノート変更の提案、確認、取り消し
- 04ノート間リンクの検索
MCP 対応
MCPクライアントに記憶、検索、グラフ、書き戻しのツールを提供します。ネイティブサーバーは読み取り専用で動作でき、書き込みは監査記録され、バージョン単位で取り消せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| key | string | いいえ | |
| ttl | number | いいえ | |
| tags | array | いいえ | |
| type | string | はい | |
| source | object | いいえ | |
| source.author | enum | はい | human | agent |
| source.origin | string | はい | |
| source.timestamp | string | いいえ | |
| content | string | はい |
詳細
Tacitus
AI エージェントの長期記憶 — ローカルファーストで、出典情報付き。
Tacitus は、任意の Markdown メモフォルダーをエージェントネイティブなナレッジベースに変える MCP サーバーです。AI エージェント(Claude Code、Claude Desktop、および任意の MCP クライアント)が本当に必要とする、次の 3 つを提供します。
- 出典情報付きの記憶 — 型付きでクエリ可能な長期記憶です。すべての事実に出典が紐づき、トークン予算内で返されます。矛盾は黙って解決されず、明示されます。
- コンテキストウィンドウに収まる検索 — 検索では、トークン予算内で順位付けされたスニペットが返されます(メモ全体が返されることはありません)。
get_noteでは段階的に内容を開示します(概要 → フロントマター → 全文)。ウィキリンクのグラフはクエリ可能な API です。ハイブリッドな語彙検索とセマンティック検索に、オプションのニューラル埋め込み機能を備えています。 - 安全な書き戻し — 変更セットを提案し、差分をプレビューして、アトミックにコミットし、バージョン単位で元に戻せます。読み取り専用スコープでは変更が禁止され、すべての書き込みが監査されます。
メモはフォルダー内にプレーンな .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。右:その 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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。