Skip to main content
Glama
JonHollander

Obsidian Vault MCP Server

by JonHollander

Obsidian + Claude via Cloudflare

Cloudflare Workers + Containers上のMCPサーバーを使用して、Claude(Web、デスクトップ、Code)からObsidian Vaultにアクセスします。

NASもDocker Composeもトンネルも不要です。CloudflareのインフラとAgents SDKを使用する、本格的なMCPサーバーです。

アーキテクチャ

Obsidian (phone, desktop)
        │
        │ Obsidian Sync (your existing subscription)
        ▼
Cloudflare Container (Node.js 22)
   runs `ob sync --continuous`
   serves vault files over HTTP API
        ▲
        │ container fetch (native)
        │
Cloudflare Worker (MCP server via Agents SDK)
   tools: list, read, search, write, append, delete
   auth via bearer token (or OAuth / Cloudflare Access)
        ▲
        │ MCP over Streamable HTTP
        │
Claude (web, desktop, Code)

コンテナが唯一の信頼できる情報源(Single Source of Truth)となります。obsidian-headlessを実行してObsidian Syncと同期し、ファイル操作のためのHTTP APIを公開します。WorkerはすべてのMCPツール呼び出しをコンテナのAPIにプロキシします。

Related MCP server: obsidianMCP

MCPツール

ツール

説明

list_notes

パス、サイズ、日付を含むすべてのMarkdownノートを一覧表示

read_note

パスを指定してノートの全内容を読み取る

search_notes

スニペット付きですべてのノートを全文検索

write_note

ノートを作成または上書きする

append_to_note

既存のノートに追記する(存在しない場合は作成)

delete_note

ノートを削除する

create_folder

フォルダを作成する(中間ディレクトリも含む)

delete_folder

フォルダを削除する(空または再帰的)

list_folders

指定パスの直下にあるサブフォルダを一覧表示

前提条件

  • Cloudflareアカウント(Workers有料プラン:月額5ドル)

  • 有効な Obsidian Sync サブスクリプション

  • ワークステーションにNode.js 22以上

  • wrangler CLI: npm install -g wrangler

セットアップ

0. Wranglerログイン

wrangler login

必要なスコープはすべてデフォルトで付与されます。

1. Obsidian認証トークンの生成

ワークステーションでの初回のみのステップ:

npm install -g obsidian-headless

ob login
# Enter email, password, MFA code if enabled

ob sync-list-remote
# Note your vault name

2. 環境設定

サンプル環境ファイルをコピーし、値を入力します:

cp .dev.vars.example .dev.vars

.dev.varsを編集し、Obsidianの認証情報とオプションのMCP認証トークンを入力します。このファイルはwrangler devによるローカル開発およびセットアップスクリプトによるCloudflareへのシークレットプッシュに使用されます。すでに.gitignoreに含まれています。

3. デプロイ

セットアップスクリプトを実行してすべてのシークレットをプッシュし、デプロイします:

./scripts/setup.sh

または、各ステップを個別に実行します:

./scripts/setup.sh secrets         # Push secrets to Cloudflare
./scripts/setup.sh validate        # Check prerequisites
./scripts/setup.sh deploy          # Validate + install deps + deploy + restart container
./scripts/setup.sh status          # Check sync container health
./scripts/setup.sh restart         # Restart sync container
./scripts/setup.sh container-logs  # View sync container logs

MCPサーバーは以下で公開されます: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

4. Claudeへの接続

Claude.ai (Web)

設定 → コネクタ → カスタムコネクタを追加:

  • URL: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp?token=YOUR_MCP_AUTH_TOKEN

  • OAuthフィールドは空のままにします(URL内のトークンが認証を処理します)

Claude Code

claude mcp add \
  --transport http \
  --scope user \
  obsidian-vault \
  https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

Claude Desktop

claude_desktop_config.jsonに追加:

{
  "mcpServers": {
    "obsidian-vault": {
      "url": "https://obsidian-mcp.<your-subdomain>.workers.dev/mcp"
    }
  }
}

データフロー

スマホでノートを編集した場合:

  1. Obsidian Syncが変更をプッシュ

  2. コンテナのob sync --continuous/vaultにプル

  3. 次回Claudeが読み取りまたは検索を行う際、WorkerがコンテナのHTTP APIにリクエストをプロキシし、/vaultから直接読み取る

Claudeがノートを作成した場合:

  1. WorkerがMCPのwrite_note呼び出しを受信

  2. WorkerがコンテナのHTTP APIにプロキシ

  3. コンテナが/vaultにファイルを書き込み

  4. ob syncが新しいファイルを検出し、Obsidian Sync経由でプッシュ

  5. スマホやデスクトップに反映される

開発

# Local dev (MCP server only, no container)
npm run dev

# Deploy
npm run deploy

コスト

サービス

使用状況

コスト

Workers有料プラン

支払い済み

月額5ドル(すべてカバー)

コンテナ

1インスタンス、ほぼアイドル

Workersプランに含まれる

追加合計

$0

プロジェクト構造

obsidian-mcp/
├── src/
│   └── index.ts              # MCP server (Agents SDK, proxies to container)
├── sync-container/
│   ├── Dockerfile            # Headless sync container image
│   ├── entrypoint.sh         # Auth, sync startup
│   └── server.js             # HTTP API for vault file operations
├── scripts/
│   └── setup.sh              # Push secrets, deploy
├── .dev.vars.example         # Template for env vars / secrets
├── wrangler.jsonc            # Worker + Container config
└── package.json

次のステップ

以下の項目は、ニーズに合わせてセットアップを強化するための演習として残されています:

認証の強化

含まれている認証(MCP_AUTH_TOKENシークレット)は、Authorization: Bearerヘッダーと?token=クエリパラメータの両方をサポートしています。URLトークン方式は、カスタムヘッダーが利用できないClaude.aiコネクタで便利です。

共有または公開デプロイの場合は、より強力なオプションを検討してください:

  • Cloudflare Access: Workerの前にZero Trust Accessを配置し、コード変更なしで監査ログ付きのIDベースSSOを実現する

  • OAuth: GitHub/Google OAuthフローのためにworkers-oauth-providerを統合する

コンテナ認証

obsidian-headlessob loginに対して--tokenや環境変数ベースの認証をサポートしているか確認し、対話型プロンプトを回避してください。サポートされていない場合は、初回ログインの認証セッションを永続化し、コンテナ起動時に復元するようにします。

コンテナ再起動への耐性

obのsqlite状態ファイルは一時的なコンテナディスク上にあります。再起動すると完全な再同期がトリガーされます。これを修正するには、entrypoint.shに状態ファイルを永続化するSIGTERMトラップを追加し、起動時に復元するようにします。

検索パフォーマンス

ブルートフォース検索はクエリごとにすべての.mdファイルを読み取ります(500ファイル未満なら問題ありません)。より大きなVaultの場合は、D1またはWorkers KVで検索インデックスを構築してください。

添付ファイル

現在は.mdのみにフィルタリングされています。画像、PDF、その他のVault添付ファイルをサポートするためにツールを拡張してください。

トラブルシューティング

Dockerが実行されていること — 同期コンテナにはDockerが必要です。docker infoで確認してください。validateサブコマンドがこれを自動的にチェックします。

2つのパスワードOBSIDIAN_PASSWORDはObsidianアカウントのパスワード(obsidian.mdへのログインに使用)です。VAULT_PASSWORDはObsidian → Sync → 暗号化で設定される個別のエンドツーエンド暗号化パスワードです。VaultでE2EEを使用していない場合は、VAULT_PASSWORDを空のままにしてください。

デプロイでコンテナが再起動しないwrangler deployは実行中のコンテナを再起動しません。セットアップスクリプトがこれを自動的に処理します。手動でデプロイする場合は、./scripts/setup.sh restartで再起動してください。

コンテナログがwrangler tailに出ない — コンテナのstdoutはwrangler tail経由ではストリーミングされません。代わりに./scripts/setup.sh container-logsを使用してください。

コンポーネントリファレンス

コンポーネント

役割

obsidian-headless

公式Obsidian CLI、Vaultをヘッドレスで同期

McpAgent (Agents SDK)

MCPトランスポート、セッション、認証を処理

McpServer (MCP SDK)

ツール登録、JSON-RPCプロトコル

Cloudflare Containers

Workerと並行して同期プロセスを実行

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    This MCP server enables Claude to interact with an Obsidian vault for persistent, structured memory, providing tools for note creation, semantic search, graph traversal, and session memory.
    18
    9 npm
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides Claude with read, search, and write access to an Obsidian vault through MCP tools.
    6,209 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bidirectional MCP server that connects Claude with an Obsidian vault, enabling note management, full-text search, graph traversal, and daily notes operations.
    2,545 npm
    MIT