QMD の MCP サーバーをやめて Bash で直接叩くようにした
TL;DR — QMD の MCP サーバーが重すぎたので、プラグインを削除して
qmd query --no-rerankを Bash で直接呼ぶ運用に切り替えた。リランカーなしでも BM25 + ベクトル検索の組み合わせで十分実用的。
以前の記事で QMD を MCP サーバーとして導入した話を書いた。
その後、重さが気になり過ぎて運用を見直した話。
いや、本気で重かったのよ。全然結果が返ってこない。
なにこれとか思って調べたら GPU なしだとこんなもんだろうとのこと。
そうですかぁ…
今の運用
ということでどうしたかというと、Claude さんが過去セッションを検索するときは、MCP ツールではなく Bash コマンドを直接叩くようになった。
qmd query --no-rerank "調べたいキーワード"
CLAUDE.md に「QMD は qmd query --no-rerank で使う」と書いてあるので、Claude さんが自動でこの形式で呼ぶ。settings.json の permissions.allow には Bash(qmd *) を追加済み。
なぜ重かったか
以下 Claude さんの解説。
QMD は内部で 2 つのローカル ML モデルを動かしている。
| モデル | サイズ | 用途 |
|---|---|---|
| embeddinggemma-300M-Q8_0.gguf | 314 MB | ベクトル埋め込み生成 |
| Qwen3-Reranker-0.6B-Q8_0.gguf | 610 MB | 検索結果のリランキング |
自分の環境は専用 GPU がなく CPU 推論になるので、2 モデル合計で 924 MB がオンメモリに乗る。MCP サーバーとして常駐させていると、起動のたびにこれをロードして複数プロセスを spawn する。qmd query(MCP が使う推奨コマンド)はさらにリランキングまで走らせるので、検索 1 回に数分かかることもあった。