やりたいこと
ObsidianのvaultにあるデータをCursorからMCP経由でゴニョゴニョしたい。 vaultにあるのはmdなので、普通にファイルをコンテキストで与えてもいいんだけど、それなしでも簡単に参照してくれると楽で嬉しい。 あと、全文検索とかそっち系の機能をAIエージェントに与えたいというのもある。
ObsidianとCursorをMCPで連携する
色々調べた結果、以下でうまくいきそうとわかった。
- Obsdian Local Rest APIプラグインをObsidianに入れる
- MCPサーバとして、mcp-obisidianを使うようCursorに設定する
やってみる
まずObsidian側で、Obsdian Local Rest APIプラグインで入れる。インストール後、設定画面でAPI_KEYとか見れるようになる。こいつを後で、Cursorに設定するときに使う。
MCPサーバはmcp-obisidianを使う。以下みたいにnpxで呼び出せるのでnode環境あれば特にどっかにインストールする必要もなさそう。
$env OBSIDIAN_API_KEY=<your_local_api_key> npx -y obsidian-mcp <your_obsidian_vault>
上記のワンライナーをcursorのmcpにtype=commandで設定してあげればおっけい。
構成のメモ
上で何やってるのか分かりづらかったのでメモ。
前提として、Obsidianをプログラマブルに操作する方法として、まずObsdian Local Rest APIというのがある。こいつをObsidianにプラグインとしてインストールすれば、Obsidianのvalutに対する操作用のローカルRESTサーバーを立ててくれる。ほんで、Cursor側でMPCサーバー経由でそいつを呼び出すようにしてあげれば良い。 図にすると以下みたいな感じ。
graph LR Cursor[Cursor <br>(MCPクライアント)] -- MCP --> MCPサーバ MCPサーバ -- HTTP --> Obsidian[(Obsidian<br>+ Local REST API)]
sequenceDiagram participant Cursor as Cursor participant MCP as MCP participant Obsidian as Obsidian Cursor->>MCP: コマンド実行 MCP->>Obsidian: Obsidian内のファイル操作 Obsidian-->>MCP: 操作結果 MCP-->>Cursor: 結果返却
P.S
運用していたら、Cursorが毎回Obsidian見にいくようになってしまい、関係ない業務などの効率落ちちゃったので、一旦OFFにした。@Obisidianみたいな感じでCursorに明示的に文脈与えられるようにできたらまたONにしたい。
参考リンク
https://github.com/MarkusPfundstein/mcp-obsidian https://arc.net/l/quote/ycbuapec https://zenn.dev/takna/articles/mcp-server-tutorial-01-install