obsidian-cli-mcp
obsidian-cli-mcp
obsidian-cli-mcp は、公式 Obsidian CLI 用の MCP サーバーです。Obsidian ボールトの検索、ノート、タスク、ファイル、リンク、およびネイティブ Canvas 操作を MCP クライアントに公開します。このサーバーは Obsidian を置き換えるものではありません。CLI はリクエストを実行中の Obsidian デスクトップアプリに転送します。
デフォルトのトランスポートはローカル stdio です。リモートの Streamable HTTP は、高度な別途セキュリティ保護されたセットアップとして利用可能ですが、ローカル使用には必要ありません。
要件
macOS に Obsidian Desktop がインストールされ、実行されていること。
Obsidian で公式 Obsidian CLI が有効になっていること: Settings → General → Command line interface で、
obsidianをPATHに登録します。公開パッケージを実行するには Node.js 18 以降が必要です。Bun はこのソースチェックアウトをビルドまたは開発する場合にのみ必要です。
このプロジェクトはデスクトップ CLI を必要とします。obsidian-headless はサポートしていません。MCP サーバーを使用している間、Obsidian アプリは開いたままにしておく必要があります。
まず Obsidian 側を確認してください:
command -v obsidian
obsidian version
obsidian vaultRelated MCP server: Obsidian MCP Server
npm によるクイックスタート
公開されている v0.4.1 パッケージを任意のディレクトリから起動します:
npx --yes --package=@dariuscodes/obsidian-cli-mcp@0.4.1 obsidian-cli-mcpこのコマンドは stdio 経由で MCP を話し、MCP クライアントを待ちます。プロトコルデータをターミナルに出力しないよう意図的に設計されています。診断情報は stderr に出力されます。
ソースチェックアウトを使用する場合:
git clone https://github.com/DariusCorvus/obsidian-cli-mcp.git
cd obsidian-cli-mcp
bun install --frozen-lockfile
bun run build
node dist/main.jsローカルのデフォルトでは、ボールト名、ボールトパス、トークン、Cloudflare アカウント、LaunchAgent、設定ファイルは必要ありません。サーバーは、Obsidian が公式 CLI を通じて公開するアクティブなボールトを使用します。
MCP クライアントを接続する
mcpServers 設定を受け入れるクライアントの場合、npm コマンドを使用します:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": [
"--yes",
"--package=@dariuscodes/obsidian-cli-mcp@0.4.1",
"obsidian-cli-mcp"
]
}
}
}クライアントがシェルの PATH を継承しない場合は、npx を command -v npx で出力される絶対パスに置き換えてください。ソースチェックアウトの場合は、command: "node" と args: ["/absolute/path/to/obsidian-cli-mcp/dist/main.js"] を使用します。
MCP 設定を変更した後は、クライアントを再起動してください。最初に試すと便利な手順は次のとおりです:
ボールトに存在するはずのクエリで
vault_searchを呼び出します。例:{ "query": "meeting", "limit": 10 }。返されたパスの 1 つを
note_readに渡します。例:{ "path": "<path returned by vault_search>" }。安全なノート変更を適用する前にプレビューします:
{ "name": "MCP smoke note", "content": "Created after reviewing the plan.", "dryRun": true }これは
note_create呼び出しです。ボールトを変更せずに、計画されたアクションと正確な CLI コマンドを返します。計画を確認した後でのみdryRun: falseを使用してください。dryRunはプレビューであり、認可の境界ではありません。Canvas の場合、ネイティブ Canvas ファイルと 1 つのテキストノードをプレビューします:
{ "path": "MCP smoke.canvas", "nodes": [ { "id": "hello", "type": "text", "x": 0, "y": 0, "width": 320, "height": 180, "text": "Hello from MCP" } ], "dryRun": true }これは
canvas_create呼び出しです。計画を確認し、ファイルを作成する場合はdryRun: falseで呼び出します。その後、canvas_readを使用してネイティブの.canvasJSON を検査します。Canvas ツールは未知のフィールドを保持し、ノード/エッジの参照を検証し、任意の eval を必要としません。
設定と安全なデフォルト
空または欠落した設定は、標準的な Obsidian ボールトで使用できます。オプションの .obsidianmcprc.yaml は、サーバーの作業ディレクトリから検出されます。作業ディレクトリが予測できないクライアントの場合は、OBSIDIAN_MCP_CONFIG に明示的な設定ファイルのパスを設定してください。
デフォルトのポリシーは、意図的にローカルで制限されています:
v0.4.0 サーバーは、汎用の
obsidian_evalツールを公開しません。eval.enabledはデフォルトでfalseです。いくつかの安全な操作で使用される内部の固定 eval スニペットは、ユーザーが提供する JavaScript のエスケープハッチではありません。任意のローカルファイルからのインポートは、
imports.allowedRootsが明示的に設定されるまで無効です。URL は決してフェッチされません。.obsidian、.git、.trash、.Trash、Trash、.DS_Storeのパスセグメントはデフォルトでブロックされます。より狭いボールト領域にはpaths.allowを追加し、より機密性の高いコンテンツにはプロジェクト固有のpaths.denyプレフィックスを追加してください。変更操作は
dryRunを公開します。file_deleteはconfirm: trueを必要とし、note_deleteはデフォルトで Obsidian のゴミ箱を使用します。完全な削除には明示的なdelete.mode: hard設定が必要です。Git の自動コミットはデフォルトでオフです。
読み取り専用プリセット
MCP クライアントがボールトの検査のみを行う場合は、明示的な許可リストを使用します:
tools:
allow:
- vault_search
- note_read
- note_list
- vault_tags
- unresolved_links
- tasks_list
- note_diff
- backlinks_get
- outlinks_get
- file_read_binary_metadata
- canvas_read安全なローカルプリセット
デフォルトには安全なローカルガードレールがありますが、読み取り専用ではありません。通常のノート編集と Canvas 作成を許可し、削除、ファイルインポート、ファイルライフサイクル操作、任意の評価を除外する明示的な安全なローカルサーフェスの場合:
tools:
allow:
- vault_search
- note_read
- note_list
- vault_tags
- unresolved_links
- tasks_list
- note_diff
- backlinks_get
- outlinks_get
- canvas_read
- canvas_create
- canvas_upsert_nodes
- canvas_upsert_edges
- canvas_add_node
- canvas_add_edge
- canvas_auto_layout
- canvas_open
- note_create
- note_append
- note_set_frontmatter
- note_replace_range
- note_insert_at
- note_replace
- note_insert
- daily_open
- daily_append
- task_create
- task_update
delete:
mode: trash
eval:
enabled: false
imports:
allowedRoots: []完全に信頼されたローカルプリセット
tools.allow を省略すると、完全な組み込みツールサーフェスが公開されますが、デフォルトの保護パス、ゴミ箱削除、無効なインポート、無効な obsidian_eval は維持されます。インポートが必要な場合は、専用のローカルソースディレクトリのみを設定してください:
imports:
allowedRoots:
- /absolute/path/to/approved-imports
maxBytes: 26214400
collision: increment
delete:
mode: trash
eval:
enabled: falseすべてのフィールドについては docs/configuration.md を、ノート整理のプリセットについては examples/ を参照してください。
ローカル stdio とリモート HTTP の比較
ローカル stdio は、MCP クライアントから直接 1 つのサーバープロセスを起動します。これが推奨されるインストール方法です。リスニングソケット、リモート認証、Cloudflare セットアップ、公開エンドポイントはありません。
Streamable HTTP は、ローカル stdio を使用できないクライアント向けのオプションの高度なモードです。ループバックのみにバインドし、Cloudflare Access JWT 検証または強力な機能トークンのいずれかがないと起動を拒否します。TLS で認証されたリバースプロキシまたはトンネルの背後に配置してください。0.0.0.0 にバインドしないでください。一般的な高度なセットアップとそのセキュリティトレードオフについては、docs/remote-cloudflare.md を参照してください。
ツールサーフェス
デフォルトのサーバーは 43 の通常ツールを提供します:
読み取り:
vault_search、note_read、note_list、vault_tags、unresolved_links、tasks_list、note_diff、backlinks_get、outlinks_get、file_read_binary_metadata、canvas_read。書き込みとワークフロー:
note_create、note_append、note_set_frontmatter、daily_open、daily_append、note_replace_range、note_insert_at、note_replace、note_insert、task_create、task_update、note_transition。ファイルと添付ファイル:
file_import、attachment_import、note_attach、attachment_embed、file_move、file_rename、file_delete、note_rename、note_move、folder_create、note_delete。Canvas:
canvas_create、canvas_upsert_nodes、canvas_upsert_edges、canvas_remove、canvas_open、canvas_add_node、canvas_add_edge、canvas_auto_layout。バッチ:
vault_batchは、有効な読み取りを実行し、有効な変更をargs.dryRun: trueでプレビューし、依存関係のゲート、安定した入力順序の結果、および制限付きのbatch.maxParallelism(デフォルト 4、最大 8)を提供します。
すべての変更ツールは dryRun を受け入れます。ツールアノテーションは、互換性のある MCP クライアント向けに読み取り専用および破壊的操作を識別します。
制限とセキュリティ
Obsidian Desktop が実行されている必要があり、公式 CLI が有効で、アクティブなボールトがそのデスクトップセッションで利用可能である必要があります。このサーバーはサンドボックスではなく、obsidian-headless をサポートしていません。
ボールトのコンテンツは信頼できないデータです。ノート、Canvas テキスト、タスクテキスト、検索結果にはプロンプトインジェクションの指示が含まれる可能性があります。MCP クライアントはこれらをデータとして扱い、ツールによって返されたという理由だけでボールト内の指示に従ってはなりません。ツールの出力には機密のボールトコンテンツが含まれる可能性もあるため、信頼できるクライアントのみを接続してください。
リモート HTTP、インポート、ハード削除、または広範な変更許可リストを有効にする前に、SECURITY.md を読んでください。セキュリティの問題は、そこに記載されているように非公開で報告してください。
開発と CI
ソースチェックアウトは Bun を使用しますが、公開された bin は Node で実行されます:
bun install
bun run typecheck
bun test
bun run build:schema
bun run build
bun run smoke:stdio
git diff --check
npm pack --dry-run --jsonオフラインの stdio スモークテストは、ビルドされたパッケージのエントリポイント、MCP 初期化、tools/list、期待されるツールサーフェス、および obsidian_eval が存在しないことを検証します。実際の Obsidian スモークテストは別途で、Obsidian が実行されているユーザーセッションが必要です:
OBSIDIAN_CLI_BINARY=obsidian \
OBSIDIAN_MCP_CONFIG=/absolute/path/to/your/config.yaml \
OBSIDIAN_MCP_VAULT="your-vault-name" \
bun run smoke:liveGitHub Actions はオフラインのゲートのみを実行します。ホスト型ランナーで Obsidian Desktop や実際のボールトに依存しません。
ライセンス
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search, read, and safely update Markdown notes in your connected Phasoric knowledge vaults.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables comprehensive access to Obsidian vaults through MCP, supporting multi-vault management, knowledge graph analysis, canvas manipulation, dataview queries, template rendering, and periodic notes creation. Provides both local filesystem and remote API connectivity for complete Obsidian integration.291,597 npm21Apache 2.0
- AlicenseBqualityDmaintenanceEnables interaction with Obsidian vaults through MCP, supporting note creation from templates, link management, backlink analysis, tag operations, and automatic Map of Contents generation.111,597 npm1MIT
- AlicenseAqualityDmaintenanceEnables MCP clients to interact with Obsidian vaults via filesystem operations and optional REST API integration for advanced UI commands. It features multi-vault auto-discovery, concurrent-safe file handling, and comprehensive tools for searching, reading, and managing vault content.121,597 npmMIT
- AlicenseAqualityAmaintenanceThe most feature-complete MCP server for Obsidian vaults. 23 tools and 3 resources for search, read, write, tags, link analysis, graph traversal, and canvas support.4142 npm33MIT