Skip to main content
Glama

CI Gitleaks Trivy GitHub Release npm OpenSSF Scorecard OpenSSF Best Practices Ask DeepWiki vault-cortex MCP server

Vault Cortex は、あらゆるAIエージェントにハイブリッド検索、タスク管理、構造化メモリ、読み書きアクセスを提供するスタンドアロンMCPサーバーです。あなたの Obsidian ボードに対して動作します。プラグインも不要、Obsidianの起動も不要、別途ブリッジも不要。コンテナ・イメージ、ボールのフォルダ、完全なツールスイート+ガイド付きプロンプトのセットです。VPSにObsidian Syncとの組み合わせでデプロイすれば、同じボールトにスマートフォン、claude.ai、またはあらゆるリモートMCPクライアントからアクセスでき、OAuth 2.1 で保護されます。

内容主な機能 · クイックスタート · 仕組み · ハイブリッド検索 · メモリ · タスク · ファイル · ツール · プロンプト · プロパティ · 設定 · デイリーノート · データ整合性 · 認証 · デプロイオプション · コミュニティデプロイ

主な機能

  • リモートアクセス — スマホ、リモートサーバー、その他あらゆるMCPクライアントから OAuth 2.1 で利用できます。VPS に Obsidian Sync を組み合わせてデプロイすれば、どこからでもアクセス可能です。

  • プラグイン不要 — Obsidian を実行する必要はありません。サーバーはディスク上の .md ファイルに直接作用します。ヘッドレス同期がボールを最新の状態に保ちます。

  • ハイブリッド検索 — FTS5キーワード一致に加え、RRF融合により、語彙のギャップを埋めるベクトルの意味的類似度を組み合わせ、意図が色濃いクエリではクロスエンコーダーの再ランキングで精度を洗練します。キーワードは正確な用語や専門用語に特に真価を発揮し、ベクターは、あなたの語彙とボールの語彙が異なってもノートを見つけ出します。

  • 構造化メモリ — 日付付きの追記専用エントリがパーソナルナレッジレイヤーとして蓄積し、AIのパーソナライズ用に自動初期化されます。トピック想起では「Xについて自分はどう思っているか?」に対して、現在の見解と、その背後にある日付付きの変遷、つまり時間経過を含んだ答えが返ります。

  • タスク — カンバン連携のタスク検索と更新。ステータス、日付、優先度でトリアージし、完了、優先度変更。レーン間の移動を1回の呼び出しで行えます。Tasks plugin の絵文字形式と Dataview のインラインフィールド形式の両方を解析します。

  • リンクグラフ — バックリンク、アウトゴーイングリンク、孤立ノートの検出をボール全体で実施します

  • ファイル — ボル内の非マークダウンファイルも読み取れます。画像は実画像として(必要なら縮小)、PDFは構造化テキストまたはレンダリングしたページとして、キャンバスは読み取り可能なアウトラインとして、データファイルはテキストとして移動します。

  • Obsidianネイティブ — frontmatter、ウィキリンク、タグ、見出し、デイリーノートを理解します。

  • ガイド付きワークフロー — ボールヘルス診断、メモレビュー、日次調整のためのビルトインプロンプトを用意。毎回、実際のボル内のライブデータから構成されます。

ヨーロッパ15日の旅行中にテスト済み。 スマホから30回以上のセッション、ツール呼び出し216回、ラップトップへのアクセスは一切不要でした。あるセッションでの書き込みは、都市や曜日をまたいだ次のセッションでも即座に利用できました。

Related MCP server: Vault MCP Server (mschuchard)

クイックスタート

ローカル(2分 — Docker + あなたのVaultフォルダ)

前提条件: Docker(またはDocker互換ランタイム、例:OrbStack、Colima、Podman)、Node.js >= 20.12(CLIのみ — サーバー自体はDockerで動作)、Obsidian Vault(または .md ファイルを含むフォルダ)。

npx vault-cortex@latest init

これだけです。CLIがボールのパスを確認し、認証トークンと設定ファイルを生成して、サーバーを起動し、MCPクライアントの接続情報を表示します(CLIリファレンス →)。

npx vault-cortex@latest init — 双方向セットアップウィザードがモードを選択し、表現のVaultを見つけ、オプション設定を提案し、設定を生成してサーバーを起動する

CLIでセットアップしましたか? ここからのサーバー管理はCLIが行います — configureupgradestartrestartlogsdown をご利用ください(CLIリファレンス →)。

Composeでセットアップしましたか? アップデートも同様にComposeで実施してください(docker compose pull && docker compose up -d)— CLIとComposeはコンテナをそれぞれ独立に管理します。

# 1. Get the quickstart files
curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/local/docker-compose.yml
curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/local/.env.example

# 2. Configure
cp .env.example .env
# Edit .env — set MCP_AUTH_TOKEN (openssl rand -hex 32) and VAULT_PATH

# 3. Start
docker compose up

総合ローカルガイド →Windowsでのセットアップも含む)

リモート(どこからでもアクセス — Docker + Obsidian Sync)

前提条件: Docker(またはDocker互換ランタイム)を搭載したVPS、Obsidian Sync のサブスクリプション、Node.js >= 20.12(CLIのみ。サーバー自体はDockerで動作)。

# On your VPS:
npx vault-cortex@latest init --mode remote

これだけです。CLIはパブリックURL、Obsidian Syncトークン(get-sync-token を実行して取得も可能)、認証設定を案内し、サーバーを起動します(CLIリファレンス →)。

CLIでセットアップしましたか? これからのサーバー管理は configureupgradestartrestartlogsdownCLIリファレンス →)をご利用する。

Composeでセットアップしましたか? 更新もComposeで行ってください(docker compose pull && docker compose up -d)— CLIとComposeはコンテナをそれぞれ独立に管理します。

# On your VPS:
mkdir -p /opt/vault-cortex && cd /opt/vault-cortex
curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/remote/docker-compose.yml
curl -O https://raw.githubusercontent.com/aliasunder/vault-cortex/main/deploy/remote/.env.example
cp .env.example .env
# Edit .env — set MCP_AUTH_TOKEN, PUBLIC_URL, OBSIDIAN_AUTH_TOKEN, VAULT_NAME
docker compose up -d

総合リモートガイド →

MCPクライアントを接続する

セットアップ

サーバーURL

ローカル

http://localhost:8000/mcp

リモート

<PUBLIC_URL>/mcp

任意のMCPクライアントでサーバーURLを追加します — Claude Code、Claude Desktop、Cursor、OpenCode、またはその他。OAuthクライアントはブラウザで同意画面を開き、トークンで承認すれば、以後クライアントがトークンの更新を処理します。OAuthに対応しないクライアント(MCP Inspector、スクリプト)は、トークンを直接 Authorization: Bearer ヘッダーとして送信します。

Claude Code:

claude mcp add --scope user --transport http vault-cortex http://localhost:8000/mcp   # local (or <PUBLIC_URL>/mcp)

--scope user を指定するとサーバーがすべてのプロジェクトに登録されます。省略すると現在のディレクトリのみに限定されます。

「Add custom connector」ダイアログは https URLのみ受け付けます。https の PUBLIC_URL があればコネクタダイアログに直接追加できますが、localhost サーバーの場合は、代わりに mcp-remote の stdio ブリッジを介して claude_desktop_config.json に登録してください:

{
  "mcpServers": {
    "vault-cortex": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:8000/mcp",
        "--header",
        "Authorization: Bearer <your MCP_AUTH_TOKEN>"
      ]
    }
  }
}

**claude.ai(Web・モバイル)**はリモートセットアップにのみ接続できます — そのコネクタはサーバーサイドで取得され、localhost には到達できないからです。

「リモートMCPサーバー」は接続タイプ(HTTP)を指します — ローカルセットアップでも、サーバー自体は完全マシン上で動作します。

詳細とトークンの有効期限は 認証 を参照してください。

仕組み

すべてが1つのDockerコンテナ内で実行され、ディスク上の .md ファイルに対して直接操作します:

  • あなたの保管庫が情報元(source of truth)であり続ける — サーバーはObsidianアプリと同じプレーンマークダウンファイルを読み書きします。

  • 検索は従属データ — ファイルウォッチャーがノートの変更を検知してインデックス(キーワード+ベクター)を最新に保ち、ノートからいつでも再構築できます。

  • リモートイメージには同期ループが組み込まれている — バンドルのObsidian Syncサービスがコンテナ内のボールをすべてのデバイスと同期しておきます。携帯でノートを編集すればほどなく検索対象になり、エージェントがノートを書けばObsidianに反映されます。

graph LR
    subgraph container ["One Docker container"]
        Sync["sync service<br/>(remote image)"]
        Vault[("/vault<br/>.md files — source of truth")]
        Index[("search index<br/>keywords + vectors")]
        Server["MCP server"]
        Sync <-->|read/write| Vault
        Vault -->|file watcher| Index
        Server <-->|read/write| Vault
        Server -->|query| Index
    end
    Obsidian["Your Obsidian apps<br/>(phone, laptop)"] <-->|Obsidian Sync| Sync
    Client["Any MCP client<br/>(Claude, Cursor, claude.ai)"] -->|OAuth 2.1 / Bearer| Server

全設計、認証フローの図、コンポーネントの内訳は ARCHITECTURE.md を参照してください。

ハイブリッド検索

キーワード検索だけでは、自分の語彙がボールの語彙と一致しないと失敗します。「aspirations」が「targets」についてのノートを拾えず、「coworkers」が「references」ファイルを表面化できないなど。実際のボールを対象とした検証では、自然言語クエリの30%がキーワードのみだと結果ゼロまたは関連性の低い結果になりました。ハイブリッド検索はこうしたミスを排除します — ベクターが語彙不足をブリッジし、再ランカーが、キーワードとベクターのどちらも単独では弱い意図の濃厚なクエリを救出します。

ハイブリッド検索は Reciprocal Rank Fusion により3つの検索シグナルを結合します:

  • キーワード(FTS5)は、正確な語句、専門用語、プロパティ値に正確にマッチし続けます

  • ベクトル(sqlite-vec)は、意味での一致により語彙のギャップを埋めます

  • 再ランク(cross-encoder)は、各クエリ-ドキュメントのペアを共同採点して順序を改善します — キーワードとベクターの双方が漏らす、意図の濃いクエリを救います

すべてのモデルはローカルで動作(約45MB、外部API不要)。キーワード検索だけにするなら EMBEDDING_ENABLED=false を、再ランクをスキップして低レイテンシを優先するなら RERANK_MODE=none を設定してください。

モデルの詳細、ブレンドの重み、パイプライン全体の内訳は ARCHITECTURE.md → ハイブリッド検索 を参照してください。

メモリ

メモリレイヤーが増えていくだけでは、エージェントが全コンテキストをダンプせずに適切なエントリを取得できなければ役に立ちません。多数のファイルにまたがって数百の日付付きエントリ(好み、原則、コミュニケーションスタイル、進行中の約束事)がある場合、ファイル全体を読むとコンテキストの無駄となり、ノイズの中に信号が埋もれてしまいます。このメモリシステムは、狙いを定めた取得を前提に設計されています。エージェントが日々知識を蓄積し、タスクに本当に関連する部分だけを正確に思い出します。

このレイヤーはプレーンのマークダウンファイルのフォルダ(デフォルト:About Me/)で、トピック見出しの下に日付付きエントリが並びます — 初回実行時にスターターポイントが自動作成され、以後はエージェントが vault_update_memory を通じて追記していきます。これを機能に大きく引き出す3つのプロパティがあります:

  • 追記専用 — エントリが上書きされることはありません。修正は新しい日付のエントリとして届きます。レイヤーは、現在の状態その背後にある変遷の両方を捉えるパーソナルナレッジベースになります

  • トピックの想起vault_memory_recall は、すべてのメモリファイルから関連する全エントリを一度に取得し、キーワードとセマンティックの両方でマッチングし、古い順に並べます。「Xについてどう思ってたっけ?」と聞けば、現在の見解に加えて、それがどう発展してきたかの日付入りの履歴も得られます。ファイル全体を読んだり、どのファイルに何が入っているかを推測したりする必要はありません

  • 劣化せずに成長 — 結果の上限(max_results)は、最も関連性の低いエントリを切り捨てるもので、タイムラインの一部を切り落とすものではありません。500エントリあるメモリレイヤーは、50エントリのものと同様に、的を絞ったクエリに応えます

現在の状態ではなく、これまでに真実だったことを記述するファイル(ルーチン、進行中のコミットメント)は、frontmatter で entry-policy: living を宣言できます。これにより、期限切れのエントリは保持されるのではなく削除可能になり、現在の状態の全体像を正確に保つことができます。

レイヤー全体はオプションです。MEMORY_ENABLED=false を設定すると、メモリツールを非表示にし、フォルダの自動作成を完全にスキップできます。

リコールパイプライン、インデックスモデル、自動初期化、オプトアウト動作については ARCHITECTURE.md → Memory を、ファイル形式、エントリポリシーの規約、スターターテンプレートについては templates/memory を参照してください。

タスク

タスクのメタデータはプレーンマークダウンで、ファイル全体に散らばり、絵文字のサインやインラインフィールドでエンコードされ、カンバンの見出しの下に整理されています。「期限切れはどれ?」と尋ねるエージェントは、すべてのファイルを解析し、選択した形式を理解する必要があります。カンバンボードでタスクを完了するということは、ボードのレーン構造、日付構文、どの見出しが完了レーンかを知っている必要があることを意味します。

タスクレイヤーがこれを処理するため、エージェントがその必要はありません:

  • 検索 — ステータス、6つの日付フィールド(期限、予定、開始、作成、完了、キャンセル)、優先度、フォルダ、カンバンレーンでフィルタリングします。各結果には、レーン、ノートパス、見出し、行番号が含まれるため、タスクの場所を特定するためのフォローアップの読み取りは不要です

  • 更新 — 1回の呼び出しで、タスクの完了、優先度の変更、カンバンレーン間の移動を実行します。タスクを完了とマークすると、完了レーンが自動検出され、完了日がスタンプされます。元に戻すと日付が削除されます。3つの変更はすべて同時に発生します

  • 両方の形式Tasks プラグインの絵文字サインまたは Dataview のインラインフィールドのどちらを使用していても、サーバーは両方を読み取り、Tasks プラグインが設定されている形式で書き込みます

インデックスモデル、日付カスケードソート、カンバンレーン検出については、ARCHITECTURE.md → Tasks を参照してください。

ファイル

ノートにはスクリーンショットが埋め込まれ、アーキテクチャ図が参照され、キャンバスやデータファイルへのリンクが張られています。しかし、マークダウンを読むエージェントにとって、![[diagram.png]] は単なるテキストにすぎません。vault-cortex はファイルを vault の周囲のノイズではなく vault の一部として扱います。リンクされ、サイズ設定され、読み取り可能で、それぞれがエージェントが実際に使用できる形式になっています:

  • 画像 — ファイル名ではなく、画像そのもの。スクリーンショットと図は、MCP クライアントが受け入れられるサイズを超えると、サーバー側で縮小・再圧縮されるため、モバイルセッションでも 5MB のアーキテクチャ図を表示できます

  • キャンバスCanvas ボードは、読み取り可能なアウトラインとして届きます。グループ、各カードの内容(読み取り順)、それらの間の接続です。キャンバスコンテンツは全文検索可能で、ボード上のファイル参照はリンクグラフに表示されます。バックリンクとアウトゴーイングリンクは、ノート間リンクと同じように機能します。完全な忠実度が重要な場合は、正確な JSON ソースを 1 フラグで取得できます

  • PDF — テキストは見出し階層、コードブロック、ハイパーリンクを保持したまま抽出されます。PDF コンテンツはノートと一緒に全文検索可能です。代わりにページを画像としてレンダリングするには raw: true を設定します。テキスト抽出では保持できないレイアウト、図、表が表示されます。スキャンされた PDF や画像のみの PDF もこのモードで機能します

  • テキストおよびデータファイル — TXT、SVG、JSON、XML、CSV、YAML、ログ、Bases ファイルは、記述されたとおりに返されます。コンテンツの最初の 100 KB は全文検索可能です。大きなデータファイルとログは、一度に行範囲を指定して読み取ることができ、各ページには現在地と残りのファイル量が表示されます

  • 参照 — 表示されているフォルダのファイルを、拡張子ごとの数とファイルサイズとともに一覧表示します。ノートがリンクしているファイルは、リンクグラフにもそのサイズが表示されます

FILE_TOOLS_ENABLED=false を設定すると、ファイルツールを非表示にできます。リモートの vault が添付ファイルなしで同期される場合に便利です。

画像パイプラインとディスパッチモデルについては、ARCHITECTURE.md → Files を参照してください。

ツール

カテゴリ

ツール

説明

Vault CRUD

vault_read_note

ノートを読む — 本文全体、プロパティ、アウトライン、セクション

vault_write_note

ノートを作成(既に存在する場合は失敗、置き換えるには overwrite を設定)

vault_patch_note

見出しをターゲットにした編集(include_children ガード付きの追加、先頭追加、置換、挿入)

vault_replace_in_note

ノート内のテキストを検索して置換(最初の一致または replace_all_occurrences

vault_delete_span

短いアンカーでブロックの行を削除。完全な再引用は不要

vault_list_notes

オプションの glob/フォルダフィルタ付きでノートを一覧表示

vault_delete_note

ノートを削除(保護されたパスが適用されます)

vault_move_note

ノートを移動または名前変更し、vault 全体のリンクを書き換えます

検索

vault_search

タグ/フォルダ/プロパティ/日付フィルタを使用したハイブリッド検索

vault_search_by_tag

タグでノートを検索(完全一致または前方一致)

vault_search_by_folder

メタデータ付きのフォルダ内のノートを参照

vault_recent_notes

最近変更または作成されたノート

vault_list_tags

使用回数付きのすべてのタグ

タスク

vault_list_tasks

Vault 全体のタスクインデックス — カンバン対応、6つの日付フィールド、優先度、フォルダ/見出しスコープ

vault_update_task

1回の呼び出しでステータス、優先度、レーンを変更 — カンバンボードの完了レーンを自動検出

メモリ

vault_get_memory

構造化メモリを読む(ファイル、セクション、またはすべて)

vault_update_memory

メモリセクションに日付入りエントリを追加

vault_delete_memory

日付で特定のメモリエントリを削除

vault_list_memory_files

メモリファイル、そのセクション、各ファイルのエントリポリシーを検出

vault_memory_recall

メモリファイル全体でトピックのエントリレベルのハイブリッド想起を古い順に実行

プロパティ

vault_list_property_keys

サンプル値付きのすべてのプロパティキー

vault_list_property_values

プロパティキーの個別の値

vault_search_by_property

プロパティのキーと値でノートを検索

vault_update_properties

本文に触れずにプロパティを追加または更新

リンク

vault_get_backlinks

指定されたパスにリンクしているノート

vault_get_outgoing_links

指定されたノートからのリンク

vault_find_orphans

着信リンクのないノート

ファイル

vault_read_file

マークダウン以外のファイルを読む — 画像は画像として、キャンバスは読み取り可能なアウトラインとして配信

vault_list_files

サイズと拡張子ごとの数を含む、vault のマークダウン以外のファイルを参照

デイリーノート

vault_get_daily_note

今日(または任意の日付)のデイリーノート

プロンプト

ツールはモデル駆動型で、アシスタントが呼び出します。プロンプトあなたがトリガーするワークフローです。各プロンプトは、呼び出し時に検索インデックス、リンクグラフ、メモリレイヤーを照会し、ガイド付きの手順とともに結果を組み立てます。そのため、セッションは前提ではなく、vault の実際の状態に基づいて開始されます。

プロンプト

引数

機能

vault-orientation

vault の統計、フォルダ分布、プロパティ採用率(低採用のフラグ)、孤立ノート、壊れたリンク数、タグ、最近のノート、メモリレイヤーを、コンテキストに応じたツールの提案とともに調査します

memory-review

file?, max_chars?

構造の概要(スコープのコールアウト、セクションのエントリ数)+ タイムラインとしての日付入りコンテンツ。ガイド付きリフレクション:変遷の物語、スコープへの適合、バックフィルのギャップ、カバレッジ分析 — デフォルトでは追記専用で、削除が提案されるのは entry-policy: living ファイルのみ。MEMORY_ENABLED=falseREADONLY_MODE=true、または DISABLED_TOOLSvault_update_memory が含まれている場合は非表示。

daily-review

date?, max_chars?

1日を調整します — デイリーノート、vault 全体のタスクステータス(期限切れ/期限超過、予定)、変更されたノート、アウトゴーイングリンク(壊れたリンクの検出)、バックリンク — 何が起こったか、何が未処理か、何をフォローアップする必要があるかを明らかにします

プロンプトは設定(MEMORY_DIR、デイリーノート設定)に適応し、そのままですべての vault で機能します。クライアントにペイロード制限がある場合は、max_chars を渡して埋め込みコンテンツを制限します。

クライアントサポート: プロンプトはClaude Desktop(ChatおよびCowork — コネクタの下の**+**メニューから)、Claude Code(スラッシュコマンド)、OpenCodeで動作します。他のクライアント(Cursor、Windsurf)でのサポートは異なります — 最新情報はMCPクライアントマトリックスを参照してください。

プロパティ

Vault Cortexはノート内のすべてのプロパティをインデックス化しますが、5つは優先扱いとなります — 高速フィルタリング用の専用列、およびすべての検索・発見結果のトップレベルフィールドです:

プロパティ

できること

title

検索結果の表示名。欠落している場合はファイル名にフォールバック

tags

タグで検索・フィルタリング。親子階層も含む(projectproject/vault-cortexに一致)

type

ノートタイプでフィルタリング — meetingpersonsession-log、またはボールトで使用する任意の値

created

作成日で並べ替え、各検索結果とともに各ノートの作成日時を表示

related

特定のリンクを相互参照するノートをフィルタリング — グラフクエリなしでは見えない接続を表面化

その他のプロパティもすべて完全にクエリ可能です — テキストとメタデータの複合クエリにはfilters.propertiesを指定したvault_searchを、メタデータのみの検索にはvault_search_by_propertyを使用してください。vault_list_property_keysvault_list_property_valuesで、ボールト全体に存在するプロパティを確認できます。

これらは規約であり、要件ではありません — Vault Cortexは任意のプロパティスキーマで動作します。優先プロパティは、すぐに使えるより豊富なフィルタリングとクリーンな結果を提供するだけです。

先頭のコールアウトも同様に扱われます。ノートの最初の本文コンテンツがObsidianのコールアウト> [!type])である場合 — frontmatterの直後またはタイトル見出しの直後のいずれか — それはインデックス化され、すべての発見結果とともに表示されます(vault_searchではinclude_leading_calloutを指定して要求します)。これによりノートが自己記述的になります:結果をスキャンするエージェントは、どのノートを読むかを決定する前に、各ノートが何のためのものかを確認できます。メモリテンプレートはこのために> [!info] Scope of this fileコールアウトを使用しており、ボールト内の任意のノートで同じパターンを使用できます。

設定

すべての設定は、適切なデフォルト値を持つ環境変数です。リモートデプロイメントには、以下に含まれない追加設定(SYNC_CONFIGSSYNC_MODE、…)があります — リモートガイドの設定テーブルを参照してください。

Variable

Required?

Default

Description

MCP_AUTH_TOKEN

Yes

認証用のBearerトークン(JWT署名キーも兼ねる)

VAULT_PATH

Local only

ボールトへのホストパス(バインドマウントのソース。リモートでは名前付きボリュームを使用)

PUBLIC_URL

Remote only

OAuthディスカバリメタデータ用の公開URL。未設定の場合、Render、Railway、Fly.ioでは(RENDER_EXTERNAL_URLRAILWAY_PUBLIC_DOMAIN、またはFLY_APP_NAMEから)自動的に入力されます

OBSIDIAN_AUTH_TOKEN

Remote only

Obsidian Sync認証トークン — CLIのget-sync-tokenが自動的に取得します

VAULT_NAME

Remote only

Obsidian Syncボールトの正確な名前(大文字小文字を区別)

STORAGE_ROOT

永続化が必要なすべてのもの(ボールト、検索インデックス、Obsidian Syncの状態)を格納する単一のディレクトリ。単一の永続ボリュームを許可するコンテナホスティングプラットフォーム(Railway、Render、Fly.io)向け。ボリュームをそこにマウントし、この変数に同じパスを設定します

EMBEDDING_ENABLED

true

falseに設定すると埋め込みパイプラインを無効化します — モデルのダウンロード、ベクターテーブル、埋め込みパス、ハイブリッド検索をスキップします。検索はFTS5キーワードマッチングにフォールバックします。

RERANK_MODE

blended

クロスエンコーダーによる再ランキングモード: blendedはRRF融合後に位置を考慮したスコアブレンディングを適用します(約200msの追加レイテンシ)。noneは再ランキングをスキップします。EMBEDDING_ENABLEDがtrueの場合のみ有効です。

MEMORY_ENABLED

true

falseに設定するとメモリレイヤーを完全に無効化します — メモリツールを非表示にし、ブートストラップをスキップし、サーバーメタデータからメモリを除外します。falseの場合、MEMORY_DIRは無視されます。

FILE_TOOLS_ENABLED

true

falseに設定するとファイルツール(vault_read_filevault_list_files)を非表示にします — Obsidian Syncで添付ファイルの同期が無効になっているリモートデプロイメントで便利です。

READONLY_MODE

false

trueに設定すると、ボールトを変更するすべてのツールを非表示にし、メモリフォルダの自動作成をスキップします — 接続されたクライアントは読み取りと検索はできますが、編集はできません。

DISABLED_TOOLS

個々のツールを名前で非表示にします。カンマ区切り(例: vault_delete_note,vault_move_note)。名前はtools tableのName列と一致します。減算のみ — 他の設定で非表示にされたツールを再有効化することはできません。不明なツール名があると起動時にサーバーが停止するため、タイプミスはすぐに表面化します。

MEMORY_DIR

About Me

構造化メモリファイル用のボールトフォルダ

PROTECTED_PATHS

MEMORY_DIR, DAILY_NOTES_FOLDER

vault_delete_noteが削除を拒否するフォルダ

ORPHAN_EXCLUDE_FOLDERS

DAILY_NOTES_FOLDER, Templates, MEMORY_DIR

孤立ファイル検出から除外されるフォルダ

DAILY_NOTES_FOLDER

from vault config

デイリーノートが置かれるフォルダを設定します。未設定の場合、ボールトの.obsidian/daily-notes.jsonから読み取り、Daily Notesにフォールバックします。Daily notesを参照してください。

DAILY_NOTES_FORMAT

from vault config

デイリーノートのファイル名形式を設定します — Obsidianのデイリーノート日付形式設定と同じトークンを使用します。未設定の場合、ボールトの.obsidian/daily-notes.jsonから読み取り、YYYY-MM-DDにフォールバックします。Daily notesを参照してください。

TZ

UTC

タイムスタンプとデイリーノートの解決に使用するIANAタイムゾーン

SERVICE_DOCUMENTATION_URL

GitHub repo URL

OAuthディスカバリメタデータで返されるURL

LOG_LEVEL

info

ログの詳細度: debuginfowarnerror

LOG_DIR

/data/logs (remote)、$STORAGE_ROOT/data/logs (single-volume)、none (local)

コンテナの再作成後も残るログファイル用のディレクトリ。コンテナ自体のログ(docker logsで表示されるもの)は常に書き込まれますが、Dockerはイメージ更新や設定変更時にコンテナが再作成されるたびにそれを破棄します。LOG_DIR配下の日付付きファイルはデータボリューム上に存在し、残ります。noneはコンテナログのみを保持します。

LOG_RETENTION_DAYS

90

起動時の自動クリーンアップ前にログファイルを保持する日数。LOG_DIRがパスの場合のみ適用されます

WINDOWS_MODE

false

Windowsを使用していますか? trueに設定してください。ファイルウォッチャーをポーリングに切り替え、ノートの移動をリネームベースの書き込みに切り替えることで、C:ドライブ上のボールトがDocker Desktop経由で動作します。Windows環境ではオンにしたままでも安全です。macOS/Linux/WSL2では不要です。

MAX_FILE_BYTES

52428800 (50 MiB)

vault_read_fileが読み取る最大ファイルサイズ(バイト単位)。これを超えるファイルは読み取り前に拒否されます。非常に大きな個別ファイルを含むボールトでは引き上げてください。

MAX_IMAGE_OUTPUT_BYTES

49152 (48 KiB)

vault_read_fileが配信する画像のバイト予算(base64エンコード前のバイナリバイト単位)。これを超える画像は、収まるように縮小および再圧縮されます。主流のMCPクライアントの最も厳しい上限に合わせて調整されています。より大きなレスポンスを受け入れるクライアントでは引き上げてください。

MAX_PDF_RENDER_PAGES

5

vault_read_fileraw: trueが設定されている場合に画像としてレンダリングするPDFの最大ページ数。ページごとのバイト予算はMAX_IMAGE_OUTPUT_BYTESをレンダリングされたページ数で均等に分割したものです — ページ数が少ないほど、各ページの品質が高くなります。

TRUST_PROXY_HOPS

0

X-Forwarded-ForからクライアントIPを導出するために使用される信頼済みリバースプロキシホップ数(OAuthレート制限、リクエストログ)。サーバーの前に制御下にあるプロキシがちょうど1つある場合(Caddy、nginx、Cloudflare Tunnel、API Gateway)は1に設定します。0の場合、注入された転送ヘッダーは無視されます。

TRUST_FORWARDED_HEADER

false

前方のプロキシがRFC 7239のForwardedヘッダーで各訪問者のIPを報告する場合のみtrueに設定します(例: AWS API Gateway)— 参照用AWSデプロイメントでは自動的に設定されます。falseの場合、そのヘッダーは無視されます。

  • スマートなデフォルトMEMORY_DIR または DAILY_NOTES_FOLDER を設定すると、PROTECTED_PATHSORPHAN_EXCLUDE_FOLDERS のデフォルトが自動的に更新されます。DAILY_NOTES_FOLDER が未設定の場合、Daily Notes がそのスロットを埋めます。daily-notes.json にのみ設定されたデイリーノートフォルダは検出されないため、PROTECTED_PATHS に自分で追加してください。完全にカスタムなリストにする場合のみ、これらを明示的に設定します。

  • MEMORY_ENABLED=false はメモリレイヤーを完全に無効化します — メモリツールは非表示になり、メモリフォルダは自動作成されません。

  • FILE_TOOLS_ENABLED=false はファイルツールを完全に非表示にします — Obsidian Sync で添付ファイルの同期が無効化されており、ディスク上にファイルが存在しない場合に便利です。

  • READONLY_MODE=true はボールト書き込みツールをすべて非表示にし、メモリフォルダの自動作成をスキップします — 接続されたクライアントは読み取りと検索はできますが、編集はできません。

  • DISABLED_TOOLS は指定したツールだけを非表示にします — 上記のスイッチよりも細かい制御が必要な場合に使います。例: 書き込みは有効のまま vault_delete_notevault_move_note だけを削除する。ツールの説明とプロンプト内の可用性キー付き相互参照は自動的に調整されます。

メモリファイルの例と日付エントリの設計思想については templates/memory/ を参照してください。

デイリーノート

vault_get_daily_note とデイリーレビュープロンプトは、Obsidian で設定されたフォルダとファイル名の日付形式を使用してデイリーノートを検索します。これはボールトの .obsidian/daily-notes.json から読み取られます:

  • ローカルモード はバインドマウントされたボールトからファイルを直接読み取ります — 設定は不要です。

  • リモートモード は Obsidian Sync のボールト設定同期を通じてファイルを受け取ります。サーバーはデフォルトでプルします(.envSYNC_CONFIGS 設定)が、プッシュ側の有効化が必要になる可能性が高いです: Obsidian 設定 → 同期 → ボールト設定の同期(デバイスごと)。詳細: リモートガイドのデイリーノートセクション

ファイルが利用できない場合 — または、その設定を反映しない Periodic Notes プラグインを使用している場合 — は、DAILY_NOTES_FOLDER(ボールト相対パス: JournalPlanner/Daily など)と DAILY_NOTES_FORMAT(Obsidian の日付形式設定と同じトークン: YYYY-MM-DD-ddddYYYY/MM/DDMMM D, YYYY など)を設定してください。片方または両方を設定できます — 設定された値は常に設定ファイルより優先されます。どちらのソースもない場合、サーバーは Daily NotesYYYY-MM-DD にフォールバックします。

注: 一部の日付形式トークンはサポートされていません — 序数(DoMoDDDowo)、dd(2文字の曜日)、d(曜日番号)、ek/kk、およびローカライズ形式(LLLLLLTLTS)。サーバーはこれらのトークンで Obsidian が作成するファイル名を再現できないため、ノートを見つけることができません。形式がこれらのいずれかを使用している場合、vault_get_daily_note は明確なエラーを返します — Obsidian で形式を変更するか、DAILY_NOTES_FORMAT をサポートされている代替形式に設定してください。

データ整合性

Vault Cortex は個人ノートに書き込みます — ファイル安全レイヤーはエラー防止だけでなく、破損防止のために構築されています。

  • アトミック書き込み — すべてのファイル書き込みは一時ファイルにステージングされ、その後リネームされます。読み取り側が部分的なノートや0バイトのノートを見ることはありません。排他作成は link()(POSIX の no-clobber)を使用して、ノート移動時の TOCTOU ウィンドウを閉じます。

  • ファイルごとのミューテックス — 同時の MCP ツール呼び出しはファイルごとに直列化されるか、フェイルファストになります。移動はソース、宛先、およびすべてのバックリンクソースを1つのユニットとしてロックします。

  • パストラバーサルのブロックresolveSafePath() はすべてのパスを解決してからプレフィックスチェックします。正規化後、保護パスの削除は拒否されます。メモリファイル名は境界でのセパレータを拒否します。

  • 隠しパスはアクセス禁止 — ドットで始まるファイルとフォルダ(.obsidian/.trash/)はリストや検索に表示されず、直接ターゲットにするツール呼び出しは Obsidian と同様に拒否されます。プラグイン設定とその API キーは手の届かない場所にあります。

  • インジェクション防止 — 検索クエリはパラメータ化され、FTS5 サニタイズされます。プロンプトコンテンツは XML データマーカーでラップされ、タグのエスケープで閉じタグのブレイクアウトインジェクションを防止します。

  • コンテナの堅牢化 — 非 root ユーザー、PID 1 init、ランタイムイメージにパッケージマネージャーなし、ダイジェスト固定のベースイメージ、グレースフルシャットダウン。

メカニズムの詳細は ARCHITECTURE.md → データ整合性、攻撃面の完全なインベントリは SECURITY.md → ランタイムの堅牢化 を参照してください。

認証

個人ノートへの読み書きアクセスを持つサーバーにとって、認証はオプションではありません。Vault Cortex は PKCE とリフレッシュトークンのローテーションを含む、完全な OAuth 2.1 仕様を実装しています。AWS (SST) デプロイ は多層防御を追加します: リクエストは2つの独立したレイヤー(API Gateway Lambda オーソライザー + Express ミドルウェア)で検証されます。BlueRock の 2026 MCP セキュリティ分析 によると、OAuth を実装している MCP サーバーはわずか8.5%で、41%は認証がまったくありません。

2つの方法:

方法

使用対象

トークン形式

OAuth 2.1

Claude Desktop、Claude Code、claude.ai、任意の OAuth クライアント

JWT (HS256、24h)

静的ベアラー

Claude Code、MCP Inspector、curl

生の MCP_AUTH_TOKEN

OAuth は動的クライアント登録を使用します — Client ID/Secret は不要です。ブラウザで同意ページが開きます。MCP_AUTH_TOKEN を入力して承認します。リフレッシュトークンは60日間のスライディング有効期限があります(毎日使用するユーザーは再認証の必要がありません)。

完全なフロー図は ARCHITECTURE.md → 認証 を参照してください。

デプロイオプション

ローカルは自分のマシンで実行します。リモートデプロイは VPS 上で実行されます — ラップトップが閉じていてもボールトにアクセスできます。

パス

内容

ガイド

ローカル

自分のマシン上のボールト — 無料、クラウド不要

deploy/local/

リモート

VPS + Obsidian Sync — 任意のデバイスからアクセス

deploy/remote/

AWS (SST)

IaC リファレンスデプロイ — 自動化されたインフラ、多層防御認証

DEPLOY.md

AWS パスにはこのリポジトリ用に構築された CI/CD ワークフローが含まれています — フォークしたユーザーはデプロイ前に独自の認証情報とステージを設定する必要があります

3つのパスはすべて同じイメージ ghcr.io/aliasunder/vault-cortex を実行します — :latest は MCP サーバーのみ(ローカル)、:remotes6-overlay の監視下で同じコンテナに Obsidian Sync をバンドルします(リモートおよび AWS)。1つのコンテナなので、任意の OCI ランタイムで動作します: docker run、Podman、nerdctl — Docker Compose はオプションです。

Docker Hub でも提供: 同じイメージが aliasunder/vault-cortex にミラーリングされています。GHCR がプライマリソースです。Hub のタグは同一です。

コスト: リモートセットアップには VPS と Obsidian Sync の月額4米ドルが必要です。2 GiB インスタンスは一般的なボールトのセマンティック検索に十分です。4 GiB は同時検索と大規模ボールトのための余裕を追加します。セマンティック検索を完全にスキップすれば、さらに小さくできます。ローカルのみは無料です。リファレンス AWS デプロイ はすべて込みで月額約17〜29米ドルです。

コミュニティデプロイ

コミュニティによって構築・保守されているデプロイテンプレート — ここではテストされておらず、リリースに遅れる可能性があります。

  • vault-cortex-aca@flytzen による Azure Container Apps 用の Bicep テンプレート。Container Apps イングレスで :remote イメージを無料のマネージド HTTPS 付きで実行します。ストレージは意図的にエフェメラルで、Obsidian Sync がソース・オブ・トゥルースです。

別のプラットフォーム向けのデプロイを構築しましたか? PR を開いてここに追加してください。

開発

# Run locally with hot reload
PUBLIC_URL=http://localhost:8000 MCP_AUTH_TOKEN=local-dev-token VAULT_PATH=~/Vault npm run dev:mcp

# Tests
npm test

# Full check suite
npm run prettier:check && npm run lint && npm test && npm run build

npm test には実際のサーバーを起動し、HTTP 経由ですべてのツールとプロンプトを呼び出す統合テストが含まれています — 認証の強制、設定ゲート付きツールサーフェス、書き込み変更の整合性(各書き込みは読み戻されます)、および設定ミス時の起動拒否を検証します。セキュリティ関連のカバレッジについては SECURITY.md を参照してください。

MCP Inspector — ツールテスト用のインタラクティブなブラウザ UI:

# Start server (terminal 1), then:
npx @modelcontextprotocol/inspector
# Enter http://localhost:8000/mcp as URL, local-dev-token as Bearer token

完全な開発セットアップについては CONTRIBUTING.md を参照してください。

コンパニオン: obsidian-vault スキル

MCP サーバーは任意のクライアントで単独で動作します。スキル をサポートするエージェント(Claude Code、Cursor、Windsurf、Cline、および 70以上のその他)向けに、obsidian-vault スキルは Obsidian 風マークダウンのより深い知識を追加します — frontmatter の慣例、コールアウト構文、Dataview、Tasks、Kanban などのプラグイン固有の形式。

npx skills add aliasunder/agent-skills --skill obsidian-vault

スキルソース →

ロードマップ

フェーズ

内容

ステータス

1

ボールト CRUD、全文検索 (FTS5)、メモリレイヤー、OAuth 2.1

完了

2a

ハイブリッド検索 — FTS5 + ベクトル + RRF フュージョン、見出し認識チャンキング

完了

2b

リランカー — クロスエンコーダーリランキング、位置認識スコアブレンディング

完了

3a

タスクレイヤー — ボールト全体のタスクインデックス、構造化クエリ、ワンコールタスク更新(Tasks プラグイン絵文字 + Dataview 形式)

完了

3b

メモリリコール — メモリレイヤーの日付履歴全体にわたるエントリ粒度の取得

完了

3c

グラフクエリ — ボールトの既存のウィキリンクグラフ上のマルチホップトラバーサル(パス、近傍)

検討中

謝辞

Obsidian 同期は obsidian-headless によって実現されています — コンテナ化アプローチは @Belphemurobsidian-headless-sync-docker に触発されています。:remote イメージの s6-overlay 監視スキャフォールディングは、そのプロジェクトのメンテナンスフォークから吸収され、現在はこのリポジトリにあります。

ハイブリッド検索パイプラインは @tobiqmd のパターンを活用しています — ランクボーナス付き RRF フュージョン、クロスエンコーダーリランキングのための位置認識スコアブレンディング、コンテンツハッシュゲーティング、見出し認識チャンキング。

貢献

開発セットアップ、コード規約、PR ガイドラインについては CONTRIBUTING.md を参照してください。

ライセンス

MIT

:remote イメージは obsidian-headlessob CLI)をバンドルしており、これはプロプライエタリです — その package.json"license": "UNLICENSED" を宣言しています(© Dynalist Inc. / Obsidian)。ビルド時に公開 npm からインストールされます。ここでの MIT ライセンスはそれをカバーせず、使用にはアクティブな Obsidian Sync サブスクリプションが必要です。:latest(ローカル)イメージにはプロプライエタリコンポーネントは含まれていません。

セキュリティ

脆弱性は非公開で報告してください — SECURITY.md を参照してください。

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
7hResponse time
0dRelease cycle
198Releases (12mo)
Commit activity

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A server that enables AI agents to perform sophisticated knowledge discovery and analysis across Obsidian vaults through the Local REST API plugin, supporting complex multi-step workflows with advanced filtering and full content retrieval.
    3
    21
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A third-party MCP server for interacting with HashiCorp Vault to manage ACL policies, audit devices, and secret engines like KV v2, PKI, and Transit. It provides tools for system backend administration and includes prompts for generating security policy configurations.
    MIT

View all related MCP servers

Related MCP Connectors

  • Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.

  • Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aliasunder/vault-cortex'

If you have feedback or need assistance with the MCP directory API, please join our Discord server