Skip to main content
Glama

obsidian-cli-mcp

実行中のObsidianボールトを、公式のObsidian CLI(Obsidian 1.12以降)を介してClaudeや他のMCPクライアントから完全に制御できるMCPサーバーです。高速な直接ファイルシステム読み取りも、正確性が許す範囲で行います。

things-for-mac-mcp の仲間プロジェクトです。

他のMCPサーバーと何が違うのか?

ほとんどのObsidian MCPサーバーは、コミュニティ製のRESTプラグインと通信するか、ボールトフォルダーを直接読み取ります。前者はプラグインのインストールと信頼が必要です。後者は、ファイルを移動または名前変更した瞬間にウィキリンクを静かに壊します。なぜなら、そのファイルを指すすべてのリンク、エイリアス、埋め込みを知っているのはObsidianだけだからです。

このサーバーは、すべての操作を機能ごとにルーティングします。

一般的なファイルシステムのみのMCP

obsidian-cli-mcp

数千のノートにわたる全文検索

高速

高速(ファイルシステム)

ノートの移動または名前変更

すべての受信リンクが壊れる

リンクセーフ(Obsidian CLI)

バックリンク、エイリアス、未解決リンク

推測

Obsidian自身のリゾルバー

Basesクエリ、テンプレート変数

不可能

アプリ経由の実行時評価

書き込みがObsidianのインデックスとファイル復元に反映

いいえ

はい

iCloudで退避されたファイル

空のノートとして読み取り

検出し、Obsidianを通じて読み取り

コミュニティプラグインが必要

場合による

いいえ

アーキテクチャは姉妹プロジェクトと完全に一致します。

things-for-mac-mcp

obsidian-cli-mcp

高速読み取り

SQLite直接

ファイルシステム直接

信頼性の高い書き込み

AppleScript

Obsidian CLI

便利な作成

URLスキーム

Obsidian CLI

分割の背後にあるルール:バルク読み取りはスループットが必要なためファイルシステムに送られ、移動、名前変更、削除、リンク解決やアプリ状態に依存する操作はすべてCLIを通じて行われます。ファイルシステムアダプターは構造的にボールトを変更できず、書き込み関数を一切エクスポートしません。

要件

  • macOS、Windows、またはLinuxデスクトップで Obsidian 1.12以降

  • Obsidian CLIが有効になっていること:Obsidian、設定、一般、コマンドラインインターフェース

  • Obsidianが実行中である必要があります。 CLIはアプリのクライアントであり、スタンドアロンバイナリではありません。デスクトップのみで、モバイルはサポートされていません。

  • Node.js 18以降

インストール

git clone https://github.com/jabaho9523/obsidian-cli-mcp.git
cd obsidian-cli-mcp
npm install
npm run build

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

Claude(デスクトップ/コード)

claude_desktop_config.json(Claude Desktop)に追加するか、claude mcp add(Claude Code)を実行します。

{
  "mcpServers": {
    "obsidian": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/obsidian-cli-mcp/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT": "YourVaultName"
      }
    }
  }
}

nodeの絶対パスを使用し、単なる単語は使用しないでください。 GUIで起動されたアプリはシェルのPATHを継承しないため、多くのクライアントで"command": "node"は静かに失敗します。which nodeで自分のパスを見つけてください。

複数のボールトがある場合はOBSIDIAN_VAULTを設定してください。 そうしないと、CLIは最後にフォーカスされたボールトをターゲットにしますが、これは自動化された書き込みには最悪の特性です。単一ボールトの場合、サーバーは起動時に自動的に固定します。

設定

変数

デフォルト

目的

OBSIDIAN_BIN

/usr/local/bin/obsidian

Obsidian CLIバイナリへのパス

OBSIDIAN_VAULT

ボールトが1つだけ存在する場合は自動固定

すべてのコマンドがターゲットとするボールト名

OBSIDIAN_VAULT_PATH

CLI経由で自動検出

ファイルシステムアダプター用のボールトフォルダー

OBSIDIAN_MCP_TIMEOUT

20000

コマンドごとのタイムアウト(ミリ秒)

OBSIDIAN_MCP_ALLOW_DANGEROUS

未設定

1に設定するとティア3のコマンドを解除

OBSIDIAN_MCP_READONLY

未設定

1に設定するとすべての変更ツールを拒否

ガードレール

バイナリが起動される前に強制される3つのティア:

  • ティア1、自由: 読み取り、検索、追加書き込み(create_noteappend_noteappend_dailyset_propertyupdate_taskcapture)。

  • ティア2、ツールコールでconfirm: trueが必要: delete_notemove_noterename_noteremove_propertyrun_obsidian_command、およびパススルー経由:history:restorepublish:*plugin:enable/disable/reloadtheme:*snippet:*syncsync:restorereloadtemplate:insertworkspace:save/deleteoverwriteまたはpermanentフラグを持つ呼び出しもティア2に引き上げられます。

  • ティア3、サーバーがOBSIDIAN_MCP_ALLOW_DANGEROUS=1で実行されていない限りブロック: evalrestartplugin:installplugin:uninstallplugins:restrictdevtoolsdev:cdpdev:debugdev:mobile、およびpermanent: true付きのdelete_note

これらが何であるかについて正直に述べておきます。ティア2は偶発的な呼び出しに対する速度バンプであり、セキュリティではありません。呼び出し元のモデルは自分でconfirm: trueを設定できます。ティア3は真の境界です。サーバー環境を設定する人だけがそれを解除できるからです。重要なボールトに自律エージェントを向ける場合は、OBSIDIAN_MCP_READONLY=1で実行してください。これは、ティアに関係なく、ディスパッチ前にすべての変更コマンドを拒否します。

リンクセーフな移動と名前変更

このプロジェクトで最も重要なルール:ファイルはファイルシステムを通じて移動、名前変更、削除されることはありません。 Obsidianは操作を実行するときにボールト内のすべてのウィキリンクを更新します。単純なmvではそれを行いません。

変更前:Projects/Roadmap.mdが3つのノートからリンクされている場合:

Weekly Review.md:   Progress on [[Roadmap]] is on track.
Team Notes.md:      See [[Roadmap#Q3]] for the plan.
Index.md:           - [[Roadmap|2026 roadmap]]

move_noteto: "Archive/2026 Roadmap.md"で実行した後:

Weekly Review.md:   Progress on [[2026 Roadmap]] is on track.
Team Notes.md:      See [[2026 Roadmap#Q3]] for the plan.
Index.md:           - [[2026 Roadmap|2026 roadmap]]

3つのリンクすべてが、見出しアンカーとエイリアスを含めて更新されました。これはObsidianが移動を行ったためです。ファイルシステムでの移動では、3つのリンクが壊れ、エラーも発生しません。

なぜハイブリッドなのか?パフォーマンスの理論的根拠

CLI呼び出しはすべて、実行中のObsidianアプリを通じた1回の完全なIPCラウンドトリップです。これは正確ですが遅いです。obsidian readで2000のノートを読むことは2000回のラウンドトリップとなり、数分の壁時計時間がかかります。ディスクから読むことは1回のディレクトリウォークで、どんなSSDでも1秒未満です。

そのため、バルク読み取り(検索、リスト、タグとプロパティのスキャン、エクスポート、ダイジェスト)はファイルシステムにヒットし、CLIはObsidianだけが答えられるもの(リンク、エイリアス、Bases、テンプレート、アプリ状態)とすべての書き込みのために予約されています。自分のボールトで比較するには、パススルーobsidian_cli["search", "query=..."]で使用してsearch_notesを時間測定してみてください。

トラブルシューティング

「Obsidianが実行されていません。」 最も一般的な失敗。CLIはアプリが開いて完全に読み込まれている必要があります。Obsidianを起動して再試行してください。

「Obsidian CLIバイナリが見つかりません。」 Obsidianの設定、一般、コマンドラインインターフェースでCLIを有効にするか、OBSIDIAN_BINでバイナリを指定してください。

最初のコマンドでタイムアウト。 コールドスタートのObsidianは20秒のデフォルトを超える可能性があります。OBSIDIAN_MCP_TIMEOUTを引き上げてください。

ノートが欠落していると読み取られる、またはサーバーが頻繁にCLIにフォールバックする。 ボールトがiCloudにあり「Macストレージを最適化」がオンの場合、退避されたファイルは.name.icloudスタブとしてのみ存在します。サーバーはこれらを検出し、空のノートを報告する代わりにObsidianを通じて読み取り、再ダウンロードします。バルクスキャンは退避されたファイルをスキップし、その出力でその旨を伝えます。

書き込みが間違ったボールトに届く。 複数のボールトがあり、OBSIDIAN_VAULTが設定されていません。サーバーは起動時にstderrでこれについて警告します。1つを固定してください。

ツールがクライアントに表示されない。 クライアントのMCPログを確認し、上記の絶対nodeパスの問題を確認してください。

最新情報の入手

git pull && npm install && npm run build

サーバーは起動時に更新を確認し、最大24時間に1回、結果を~/.config/obsidian-cli-mcp/update-check.jsonにキャッシュします。オフライン時は静かに失敗し、新しいバージョンが存在する場合はstderrに1行出力します。

ツール(全39)

読み取りツール(18)

ツール

アダプター

説明

read_note

ファイルシステム、CLIフォールバック

ウィキリンク形式の名前または正確なパスでノートを読む

search_notes

ファイルシステム

フォルダー、大文字小文字、コンテキスト、制限オプション付きの全文検索

list_notes

ファイルシステム

フォルダーと拡張子でフィルタリングされたファイルのリスト

list_folders

ファイルシステム

フォルダーのリスト

get_note_info

CLI

パス、サイズ、作成日、更新日

get_outline

ファイルシステム

行番号付きの見出しツリー

get_backlinks

CLI

Obsidianによって解決された受信リンク

get_outgoing_links

CLI

送信リンク

get_tags

ファイルシステム

カウント付きのすべてのタグ、フロントマターとインライン

get_properties

ファイルシステム

ボールト全体のフロントマターキーとカウント

read_property

ファイルシステム

1つのノートの1つのフロントマターキー

get_vault_info

CLI

ボールト名、パス、統計

get_recents

CLI

最近開いたファイル

list_bases

CLI

すべての.baseファイル

query_base

CLI

Basesビュークエリを実行、アプリによって評価

list_templates

CLI

設定されたフォルダー内のテンプレート

read_template

CLI

テンプレート内容、オプションで変数を解決

get_word_count

ファイルシステム

単語数と文字数、フロントマターを除く

書き込みツール(16)

すべての書き込みはCLIを通じて行われます。それぞれに明示的なfileまたはpathターゲットが必要で、現在アクティブなファイルにフォールスルーすることはありません。

ツール

ガード階層

説明

create_note

1, 2(overwrite付き)

ノートを作成(テンプレートからも可能)

append_note

1

コンテンツを追加

prepend_note

1

フロントマターの後にコンテンツを先頭追加

read_daily

1

今日のデイリーノートを読む

append_daily

1

今日のデイリーノートに追加

prepend_daily

1

今日のデイリーノートに先頭追加

get_daily_path

1

今日のデイリーノートのパス

set_property

1

フロントマターのプロパティを設定

remove_property

2

フロントマターのプロパティを削除

move_note

2

リンクセーフな移動

rename_note

2

リンクセーフな名前変更

delete_note

2, 3(permanent付き)

ゴミ箱に移動、または完全に削除

list_tasks

1

参照付きでマークダウンタスクを一覧表示

update_task

1

参照または行番号でタスクの状態を切り替えまたは設定

open_note

1

Obsidian UIで開く(ナビゲーションのみ)

run_obsidian_command

2(実行時)

コマンドパレットのコマンド(プラグインコマンドを含む)を一覧表示または実行

run_obsidian_command はサーバーの中で最も広い扉です。コミュニティプラグインが登録したものを含む、すべてのコマンドパレットアクションに到達します。意図的に公開されており、階層2で制限されています。

ワークフローツール(4)

ツール

説明

capture

タイムスタンプ付きで今日のデイリーノートに追加。実践上最も頻度の高い操作

daily_digest

指定された日付範囲のデイリーノートを1つのドキュメントに集約

export_notes

フォルダをJSON、Markdown、またはCSVとしてエクスポート。インラインまたは保管庫外のファイルに出力

vault_health

孤立ノート、行き止まり、未解決リンク、空のノートを1つのレポートにまとめる。リンクグラフに意図的に範囲を限定

エスケープハッチ(1)

ツール

説明

obsidian_cli

任意のCLIコマンドを実行します。args は事前分割された文字列の配列として受け取り、シェル文字列としては受け取りません。そのためサーバーはシェルなしで起動し、引用符からコンテンツが抜け出すことはできません。すべてのガード階層が適用されます

MCPリソース

リソースのクライアントサポートはさまざまで、Claude Desktopは現在これらを表示しません。

リソース

コンテンツ

obsidian://vault

保管庫情報

obsidian://daily

今日のデイリーノート

obsidian://tags

カウント付きのすべてのタグ

obsidian://recents

最近開いたファイル

obsidian://orphans

インバウンドリンクのないノート

obsidian://note/{path}

保管庫相対パスによる任意のノート

MCPプロンプト

プロンプト

目的

daily_note_review

デイリーノートを要約し、未完了タスクを表示し、フォローアップを提案

vault_cleanup

保管庫ヘルスレポートを確認し、リンクセーフな修正を提案

note_from_source

貼り付けた素材を既存のテンプレートを使ってノートに変換

weekly_digest

1週間のデイリーノートをダイジェストノートに要約

アーキテクチャ

src/
├── index.ts              MCP server entry, stdio transport
├── config.ts             Environment configuration
├── adapters/
│   ├── cli.ts            execFile wrapper, vault injection, error contract
│   └── filesystem.ts     Read-only vault access, iCloud stub detection
├── tools/
│   ├── common.ts         Shared note loading with CLI fallback
│   ├── read.ts           18 read tools
│   ├── write.ts          16 write tools
│   ├── workflow.ts       4 composite tools
│   └── passthrough.ts    obsidian_cli escape hatch
├── resources/
│   └── vault.ts          MCP resources
├── prompts/
│   └── workflows.ts      MCP prompts
└── utils/
    ├── guardrails.ts     Tier policy, readonly allowlist
    ├── markdown.ts       Frontmatter, headings, tags, word counts
    ├── output.ts         Truncation at 60,000 characters
    └── update-check.ts   Daily update check

テストは、完全なargvをスキャンし、失敗、ハング、または過大な出力を生成するように指示できるスタブバイナリに対して実行されます。そのため、Obsidianがインストールされていなくてもスイート全体が合格します。

npm test

サポート

問題や機能リクエスト: GitHub issues

作者のその他の作品

ライセンス

MIT

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

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/jabaho9523/obsidian-cli-mcp'

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