Claudeのトークン節約とMCPVault──Obsidianを賢く使う話

この記事でわかること:Claudeのトークンとは何か・obsidian-mcpで詰まった話・MCPVaultで検索が一瞬になった設定方法

スポンサーリンク

目次

まず「トークン」って何?という話から

この記事を読んでいる方の中には「トークン節約ってよく聞くけど実際どういうこと?」と思っている方もいるかもしれないので、最初に少し説明させてください。

トークンとは、Claudeが文章を処理するときの「単位」みたいなものです。ざっくり言うと読む量が増えるほどトークンを消費する、という仕組みです。APIを使っているなら直接コストに直結しますし、使っていなくても1回の会話で処理できる量に上限があります。

ノートが100枚あって「この中から○○について書いたやつを探して」と頼んだとします。全部読んだら100枚分の処理が必要になる。でも先に検索で「それっぽいノートが3枚あった」と絞り込めたら、3枚分だけ読めばいい。当たり前のことのようですが、これだけでかなりの節約になります。

「全文読み → 検索で絞り込んでから読む」というのがトークン節約の核心です。

前の記事(MCPの設定方法の話)では、ObsidianとClaudeをつなぐ方法までを書きました。でもトークンの話には触れていなかったので、今回はその続きとして書きます。

Claude CodeにMCPを設定してObsidianとWordPressを操作できるようにした話

Obsidianを「AIが使えるナレッジベース」にしたかった

もともとObsidianには何年分もの記録が入っています。旅行の記録、英語学習のメモ、ブログのネタ、仕事の覚え書き……なんでも放り込んでいるので、自分でもどこに何を書いたか把握しきれないくらいの量になってきました。

「ClaudeにこのVaultを検索させたら、過去の記録をAIが活用してくれるのでは?」と思って試し始めたわけです。「なんでもっと早くやらなかったんだろう」と後で思う系のやつです笑

ノートが増えれば増えるほど便利になる、という未来が見えた気がして、かなりワクワクしながら設定を始めました。

最初に試したobsidian-mcpで詰まりまくった話

詰まりポイント①:検索が数時間待っても返ってこない

MCPでObsidianを繋げるツールとして最初に試したのが obsidian-mcp でした。設定自体はうまくいって、ツールも認識された。

よし、じゃあ検索してみよう。search-vault を実行したところ……

返ってこない。

5分待っても、10分待っても、ずっとぐるぐるしたまま。「もしかしてVaultのファイルがGoogle Driveにあってネット経由でアクセスしてるから遅いのかな?」とClaude君に聞いてみたら「ローカルに同期されてるから関係ないですよ」と言われ、じゃあなんで?とモヤモヤが止まりませんでした笑

VaultファイルがSynologyやGoogle Driveにある場合も、ローカルに同期済みであれば速度には影響しません。

詰まりポイント②:ESCキーを押すと「拒否」になると知らなかった

検索が遅すぎてしびれを切らし、何度かESCキーを押してキャンセルしました。「やり直せばいいか」と思って再実行しても、また返ってこない。

「あれ、なんで何回試してもうまくいかないんだろう」と悩んでいたのですが、原因は後でわかりました。

ESCキーを押すとClaude Codeには「ユーザーが拒否した」という記録が残ります。それ以降は同じツールを実行しようとすると自動的に拒否扱いになって動かなくなります。

壊れてると思ったら自分で壊していたというオチです。爆

詰まりポイント③:MCPはObsidianのネイティブ検索機能を使うわけじゃなかった

少し話は変わりますが、最初は「MCPでつないだんだから、ObsidianのネイティブSearch機能が使えるはず」と思っていました。あの一瞬で膨大なノートを検索してくれる、Obsidian内蔵のあの爆速検索機能です。

でも実際はそうじゃなかった。

MCPはObsidianのアプリを経由するわけじゃなくて、Vaultのフォルダのファイルを直接読みに行く仕組みなんですね。Obsidianのネイティブ検索とは全然別の話です。

「じゃあMCPってなんのためにあるんだ?」ってなりましたが、MCPはあくまで「ツールとしてClaudeから呼べるようにする仕組み」で、検索の速さはMCPサーバー側の実装次第ということです。obsidian-mcpの検索が遅かったのはここに原因があったわけです。

調べたら選択肢がいくつかあった

詰まりながら調べていくうちに、Obsidian × Claude連携には複数の方法があることがわかりました。

方法検索エンジンObsidian起動私の評価
obsidian-mcpファイル全文読み不要❌ 遅すぎて断念
Local REST APIObsidianのネイティブ検索必要△ 起動しっぱなしが前提
MCPVaultBM25(独自アルゴリズム)不要✅ 採用

自分の使い方として「VSCodeだけで完結させたい。Obsidianをわざわざ起動したくない」というのがあって。

Local REST APIはObsidianのネイティブ検索が使えて魅力的なのですが、Obsidianを常時起動しておく必要がある。そうなると結局Obsidianを別ウィンドウで開いておかないといけない。それは避けたかったので、起動不要でVaultのファイルを直接検索できるMCPVaultが自分には一番合っていたという結論になりました。リモートで外出先から操作していた時も、あ、Obsidianたちあげてなかった、ということがないようにもしたいですよね。 Claude君を外出先から操作するブログ記事も書きました、こちらです。

Claude Code Remote Control を試した──iPhoneから承認できるってほんと?

MCPVaultへの乗り換えは設定1行だけだった

~/.mcp.json を開いて、obsidianのサーバー設定のcommandを変えました。

{
  "mcpServers": {
    "obsidian": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@bitbonsai/mcpvault@latest",
        "/Users/●●●/Obsidian-Vaults/Vault名"
      ]
    }
  }
}

obsidian-mcp から @bitbonsai/mcpvault@latest に変えて、VSCodeで「Developer: Reload Window」をするだけ。

たったこれだけ。設定1行で別世界になりました。Reload Windowを忘れずに。

数時間待っても返ってこなかった検索が、一瞬で返ってくるようになりました。

「なんでもっと早く試さなかったんだろう」という気持ちが湧いてきたのは言うまでもありません笑

BM25ってそもそも何?

MCPVaultが使っているBM25という検索アルゴリズム、名前だけ聞くとなんか難しそうですが笑

ざっくり言うと「キーワードがどれくらい関連しているか」をスコアリングして、スコアの高い順に返してくれる仕組みです。Googleの検索もベースの考え方は似ていて、業界では昔からよく使われている手法なんだそうです。

「AIの検索じゃないの?」と思いましたが、AIを使わないぶん爆速で動くというのがポイント。「AIっぽいインテリジェントな検索」ではないですが、ノートを全文読まずに関連しそうなものだけを先に絞り込んでくれる。それで十分なんですよね。

BM25はベクトル検索(意味検索)より処理が軽く高速。ノートが何百枚になっても安定して動きます。

使い始めて変わったこと

検索が一瞬になったことで、「このノートに何か書いた気がするけど…」という曖昧な記憶からでも、ClaudeがVaultの中から拾ってきてくれるようになりました。

以前は「全部読む → 遅い → 途中で諦める」という流れだったのが、今は「キーワードで絞り込む → 関連ノートだけ読む」という流れになっています。ノートが増えれば増えるほどこの差は広がるはずなので、今から設計しておいて損はないと思っています。

「とりあえずObsidianに書いておけば、ClaudeがVaultから拾ってくれる」という安心感はなかなかいいですよ♪(´θ`)ノ

まとめ

  • トークンとは Claudeが読む量の単位。全部読むより絞り込んでから読む方が節約になる
  • obsidian-mcp の search-vault は遅くて私の環境では実用的じゃなかった
  • ESCキーは「キャンセル」ではなく「拒否」になるので要注意
  • MCPはObsidianのネイティブ検索を使うわけではない(MCPサーバーの実装次第)
  • MCPVault はBM25で独自検索・Obsidian起動不要・爆速
  • 設定は ~/.mcp.json の1行を変えるだけ

同士の皆さんも、まだobsidian-mcpで全文読みをしていてなんか遅いな…と感じているなら、MCPVaultへの乗り換えは試してみる価値があると思います。


参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です