Obsidian Vault を Claude Code から扱う構成(filesystem MCP / Local REST API)
Vault は WSL2 の ext4 側に置き、PARA + Daily のレイアウトと frontmatter 規約を先に固める。Claude 連携は filesystem MCP を主軸にし(Obsidian の起動に依存しない)、検索・タグが要るときだけ Local REST API + obsidian-mcp を足す。機密は *.private.md に分離して読み取り対象から外す。
調査時点: 2026-05。WSL2(Ubuntu)上で Claude Code を動かし、Windows ホストから Obsidian を使う前提。
Obsidian は Markdown のノート管理アプリで、Vault はノートと設定をまとめたフォルダ。MCP(Model Context Protocol)は、Claude Code などの AI ツールに外部のデータや操作機能を接続するための共通プロトコル。
全体像と設計原則
Windows ├─ Obsidian Desktop(UI) ─┐ \\wsl$\Ubuntu\home\... または WSLg で Linux 版 └─ Browser │──────────────────────────┼──────────────────────WSL2 (Ubuntu) ▼ ├─ ~/vault/ ← 単一の真実(Markdown + frontmatter) ├─ Claude Code → filesystem MCP で ~/vault/ を操作 └─ (任意) Obsidian Local REST API + obsidian-mcp- Vault は WSL2 の Linux ファイルシステム(
~/vault/)に置く。/mnt/c/は性能と inotify の問題で不可 - ディレクトリレイアウトと frontmatter 規約を最初に固める。後から数百ノートを直すのは高コスト
- Claude 連携は filesystem MCP を主軸にする。Obsidian アプリの稼働に依存せず、自動化にも回しやすい
- Obsidian 専用 MCP は補助。検索・グラフ・タグなど Obsidian の機能を呼びたいときだけ足す
Vault 設計
レイアウト(PARA + Daily)
~/vault/├── 00-Inbox/ # 未分類の捕捉。週次で空にする├── 10-Projects/ # 締切か完了条件のある個別プロジェクト│ └── <slug>/README.md(必須・正), log/, assets/├── 20-Areas/ # 継続的責任領域(profile.md など)├── 30-Resources/ # 参考資料・調べ物├── 40-Archive/ # 完了・保留├── 50-Daily/ # YYYY-MM-DD.md├── 60-Ideas/ # まだプロジェクト化していないアイデア├── _attachments/ # 共有添付(from-affine/ など)└── _templates/ # Templater 用数字プレフィックスで並び順を制御し、_ 始まりはシステム用と一目で分かるようにする。PARA(情報を Projects / Areas / Resources / Archives に分ける整理法) に加えて Inbox / Daily / Ideas を独立して持つ。
frontmatter 規約
---type: project # project | area | idea | profile | resource | daily | logstatus: active # active | paused | done | someday | archivedcreated: 2026-05-10updated: 2026-05-10tags: [domain/llm, lang/ts]links: []---type の候補は最小限から始め、必要になったら増やす。Dataview / Bases から横断クエリできることが目的。
タグとリンク
- 階層タグ(
domain/llm、lang/ts、area/health)。Dataview でWHERE contains(tags, "domain/llm")と引ける。フリーフォームのタグは Inbox 内だけ許し、定期的に階層へ昇格させる - wikilink はファイル名ベース(
[[my-project]])。ファイル名は英小文字 + ハイフン。表示名を変えるなら[[my-project|表示名]]。ブロック参照([[note#^id]])は引用・定義の再利用に限る
プロフィールの置き方と機密の分離
20-Areas/profile.md に要約・スキル・関心・Active Projects(Dataview クエリ)・公開 ID を置くと、AI がこれを読むだけで「現在地」を把握できる。
機密(職歴詳細、連絡先、住所、契約金額)は profile.private.md に分離する。
.gitignoreに**/*.private.md- 同期(LiveSync)の暗号化対象に含める
.claudeignoreなどで AI の読み取り対象から外し、明示許可時だけ読む運用にする
セルフホストでデータ主権を取るのに、Vault 内に平文の機密があるのは整合しない。
Obsidian 本体の配置パターン
| パターン | Obsidian | Vault | 性能 | 備考 |
|---|---|---|---|---|
| A. Windows 版 + WSL Vault | Windows | \\wsl$\Ubuntu\home\<user>\vault | 中 | inotify 越境で同期遅延。.obsidian/workspace*.json に Windows / Linux パスが混在しうる |
| B. WSLg で Linux 版 | WSL2 | ~/vault | 高 | WSLg 必須。Claude Code と同居でき摩擦が最小 |
| C. Windows 版 + Windows Vault | Windows | C:\Users\...\vault | Windows 側は高い | WSL2 から /mnt/c/ 経由になり性能が落ちる |
推奨は B。日常の編集体験を優先するなら A も実用的(File → Open vault で \\wsl$\... を開く)。
プラグインの初期セット
| プラグイン | 役割 | 必須度 |
|---|---|---|
| Templater | Daily / Project のテンプレート | 高 |
| QuickAdd | ホットキー 1 発のキャプチャ | 高 |
| Dataview | ノート横断の疑似 SQL | 高 |
| Periodic Notes | Daily / Weekly / Monthly | 中 |
| Tag Wrangler | タグの整理 | 中 |
| Local REST API | Obsidian の機能を HTTP で公開 | 連携拡張時 |
| Excalidraw | 手書き図 | AFFiNE 併用なら不要 |
| Smart Connections | ベクトル検索 | AI が代替するため任意 |
Bases(Obsidian 1.9 同梱の Database ビュー)が使えるなら Dataview と併用か代替を検討する。標準機能なので壊れにくい。プラグインは最初 7 個以内に抑える。
Claude 連携(MCP)
| 方式 | 実体 | 強み | 弱み |
|---|---|---|---|
| A. filesystem MCP | @modelcontextprotocol/server-filesystem を ~/vault/ に向ける | 公式。Obsidian の起動に依存しない | リンク解決・タグ・グラフは生で扱う |
| B. Local REST API + obsidian-mcp | Obsidian プラグイン + サードパーティ MCP | 検索・タグ・Daily Note など Obsidian の機能を呼べる | Obsidian 起動必須。トークン管理 |
| C. 併用(推奨) | A を主、B で補強 | 常時動作 + 検索強化 | 設定が増える |
filesystem MCP の登録
claude mcp add vault \ --scope user \ -- npx -y @modelcontextprotocol/server-filesystem /home/<user>/vault- 絶対パスで指定する。
~はシェル展開のタイミングによって設定に~のまま残ることがある - WSL2 の Claude Code は Linux 側
~/.claude.jsonに書く。Windows 版 Claude Desktop の%APPDATA%\Claude\claude_desktop_config.jsonとは別物 - 確認は
claude mcp listと、セッション内の/mcp
Local REST API + obsidian-mcp
- Obsidian で Local REST API プラグインを有効化し API キーを発行
- キーは
~/.config/obsidian-tools/credentials.json(chmod 600)に置き、コードにハードコードしない MarkusPfundstein/mcp-obsidian、cyanheads/obsidian-mcp-serverなどから選び、各 README に従ってclaude mcp add obsidian --scope user --env OBSIDIAN_API_URL=... --env OBSIDIAN_API_KEY=... -- npx -y <package>の形で登録する。実装ごとに環境変数名と対応エンドポイントが違うので、採用前に主要エンドポイントのカバレッジを比べる
Windows 版 Obsidian の REST API(既定ポート 27124 / 27123)に WSL2 から届くかは curl で確認する。パターン B なら localhost で済む。
使い分け
- 読む・書く(grep、新規ノート、追記): filesystem MCP
- 検索(全文、タグ、リンクの逆引き): obsidian-mcp があれば優先、なければ Bash の ripgrep
- グラフ・関連性: obsidian-mcp の検索 + AI の解釈
キャプチャと整理の運用
- 捕捉の摩擦をゼロにする。すべてまず
00-Inbox/か Daily Note に着地させ、最初から正しい場所に置こうとしない(QuickAdd のホットキーで 1 行) - Daily Note のテンプレートに「今日の捕捉」「今日の作業」「active プロジェクト一覧(Dataview)」を入れる
- 週次 15 分: Inbox を空にする、プロジェクトの
statusを更新、Ideas から育てるものを Projects へ昇格、Daily を見て陳腐化を再評価
AI への依頼例: 「過去 30 日の Daily Note から、プロジェクト化していないが繰り返し言及されているテーマを 3 つ挙げて」「profile.md のスキルと active プロジェクトのギャップを指摘して」「60-Ideas で 1 か月以上更新のないものを列挙し、育てる / 捨てる / Archive を理由付きで提案して」。
同期とバックアップ
| 方式 | 仕組み | 評価 |
|---|---|---|
| Self-hosted LiveSync | CouchDB + プラグイン | リアルタイム、競合解決が強い、Docker で立てやすい。複数デバイスならこれ |
| Syncthing | P2P | シンプル。競合は手動 |
| git(private) | コミット & プッシュ | 履歴に強い。リアルタイム性なし |
| Obsidian Sync | 公式有料 | 楽だがセルフホストの目的に反する |
| rclone + クラウド | 単方向 | 同期ではなく退避用 |
単一デバイス + バックアップなら git + rclone で十分。LiveSync でも競合は完全には消えないので、重要ノートは git にも push する保険を持つ。モバイル捕捉(Obsidian モバイル + LiveSync)は諦めない。
バックアップの最小構成は cron で日次 tar --zstd、30 日経過分を削除。WSL2 では標準で cron が動かない点と、確実性を取るなら Windows タスクスケジューラ経由にする点は WSL2 で常駐サービスを動かす設定。WSL2 のディスクが壊れるとバックアップも消えるので rclone で外部にも送る。
認証情報と git 除外
- 認証情報は
~/.config/<tool>/credentials.json(chmod 600)に統一し、Vault 内には置かない。コードからは環境変数経由で読む .gitignore:_attachments/private/、**/.obsidian/workspace*.json、**/.obsidian/cache/。.obsidian/自体はプラグイン構成・テンプレート・ホットキーが共有資産なので管理対象に入れる
構築フェーズ
- Vault のディレクトリを作り Obsidian で開く(30 分)
- テンプレートと frontmatter の
typeを確定し、profile.md を埋める(1〜2 時間) - filesystem MCP を登録し、Claude から読み書きできることを確認(30 分)
- Dataview / Bases で active プロジェクト一覧を埋め込む(1 時間)
- 同期(LiveSync / git / Syncthing)とバックアップ(半日)
- 任意で Local REST API + obsidian-mcp(1〜2 時間)
各フェーズで動く状態を確認してから次へ進む。
注意点
- AFFiNE などの視覚ツールと二重管理しない。Vault が正。Obsidian と AFFiNE の併用設計
- スキーマを変えるときは一括移行スクリプトを書く
- ノートをデータベース化しすぎない。スキーマは「まずゆるく、痛みが出たら締める」
関連
更新履歴
- 2026-05-10: 初版(ローカル調査ノート)
- 2026-10-17: Wiki へ移植、概念ページとして再構成。冒頭に定義を追加