やりたいこと

ObsidianのvaultにあるデータをCursorからMCP経由でゴニョゴニョしたい。 vaultにあるのはmdなので、普通にファイルをコンテキストで与えてもいいんだけど、それなしでも簡単に参照してくれると楽で嬉しい。 あと、全文検索とかそっち系の機能をAIエージェントに与えたいというのもある。

ObsidianとCursorをMCPで連携する

色々調べた結果、以下でうまくいきそうとわかった。

  1. Obsdian Local Rest APIプラグインをObsidianに入れる
  2. 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