Obsidian Vault MCP Server
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ツール
ツール | 説明 |
| パス、サイズ、日付を含むすべてのMarkdownノートを一覧表示 |
| パスを指定してノートの全内容を読み取る |
| スニペット付きですべてのノートを全文検索 |
| ノートを作成または上書きする |
| 既存のノートに追記する(存在しない場合は作成) |
| ノートを削除する |
| フォルダを作成する(中間ディレクトリも含む) |
| フォルダを削除する(空または再帰的) |
| 指定パスの直下にあるサブフォルダを一覧表示 |
前提条件
Cloudflareアカウント(Workers有料プラン:月額5ドル)
有効な Obsidian Sync サブスクリプション
ワークステーションにNode.js 22以上
wranglerCLI: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 name2. 環境設定
サンプル環境ファイルをコピーし、値を入力します:
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 logsMCPサーバーは以下で公開されます:
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_TOKENOAuthフィールドは空のままにします(URL内のトークンが認証を処理します)
Claude Code
claude mcp add \
--transport http \
--scope user \
obsidian-vault \
https://obsidian-mcp.<your-subdomain>.workers.dev/mcpClaude Desktop
claude_desktop_config.jsonに追加:
{
"mcpServers": {
"obsidian-vault": {
"url": "https://obsidian-mcp.<your-subdomain>.workers.dev/mcp"
}
}
}データフロー
スマホでノートを編集した場合:
Obsidian Syncが変更をプッシュ
コンテナの
ob sync --continuousが/vaultにプル次回Claudeが読み取りまたは検索を行う際、WorkerがコンテナのHTTP APIにリクエストをプロキシし、
/vaultから直接読み取る
Claudeがノートを作成した場合:
WorkerがMCPの
write_note呼び出しを受信WorkerがコンテナのHTTP APIにプロキシ
コンテナが
/vaultにファイルを書き込みob syncが新しいファイルを検出し、Obsidian Sync経由でプッシュスマホやデスクトップに反映される
開発
# 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-headlessがob 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を使用してください。
コンポーネントリファレンス
This server cannot be deployed
Maintenance
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Cloudflare Workers MCP server: claude-skill-validator
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Related MCP Servers
- AlicenseAqualityBmaintenanceThis 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.189 npm13MIT
- AlicenseNot gradedqualityDmaintenanceProvides Claude with read, search, and write access to an Obsidian vault through MCP tools.6,209 npmApache 2.0
- AlicenseAqualityCmaintenanceA local MCP connector that lets Claude read, write and search any Obsidian vault directly from disk.20MIT
- AlicenseNot gradedqualityDmaintenanceBidirectional MCP server that connects Claude with an Obsidian vault, enabling note management, full-text search, graph traversal, and daily notes operations.2,545 npmMIT