<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MCP on 大体動かない</title><link>https://daitai.dev/tags/mcp/</link><description>Recent content in MCP on 大体動かない</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Wed, 29 Apr 2026 22:04:13 +0900</lastBuildDate><atom:link href="https://daitai.dev/tags/mcp/index.xml" rel="self" type="application/rss+xml"/><item><title>QMD の MCP サーバーをやめて Bash で直接叩くようにした</title><link>https://daitai.dev/posts/qmd-bash-direct/</link><pubDate>Wed, 29 Apr 2026 22:04:13 +0900</pubDate><guid>https://daitai.dev/posts/qmd-bash-direct/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — QMD の MCP サーバーが重すぎたので、プラグインを削除して &lt;code&gt;qmd query --no-rerank&lt;/code&gt; を Bash で直接呼ぶ運用に切り替えた。リランカーなしでも BM25 + ベクトル検索の組み合わせで十分実用的。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://daitai.dev/posts/qmd/"&gt;以前の記事&lt;/a&gt;で QMD を MCP サーバーとして導入した話を書いた。&lt;/p&gt;
&lt;p&gt;その後、重さが気になり過ぎて運用を見直した話。&lt;/p&gt;
&lt;p&gt;いや、本気で重かったのよ。全然結果が返ってこない。&lt;/p&gt;
&lt;p&gt;なにこれとか思って調べたら GPU なしだとこんなもんだろうとのこと。&lt;/p&gt;
&lt;p&gt;そうですかぁ…&lt;/p&gt;
&lt;h2 id="今の運用"&gt;今の運用&lt;/h2&gt;
&lt;p&gt;ということでどうしたかというと、Claude さんが過去セッションを検索するときは、MCP ツールではなく Bash コマンドを直接叩くようになった。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;qmd query --no-rerank &lt;span class="s2"&gt;&amp;#34;調べたいキーワード&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;CLAUDE.md に「QMD は &lt;code&gt;qmd query --no-rerank&lt;/code&gt; で使う」と書いてあるので、Claude さんが自動でこの形式で呼ぶ。&lt;code&gt;settings.json&lt;/code&gt; の &lt;code&gt;permissions.allow&lt;/code&gt; には &lt;code&gt;Bash(qmd *)&lt;/code&gt; を追加済み。&lt;/p&gt;
&lt;h2 id="なぜ重かったか"&gt;なぜ重かったか&lt;/h2&gt;
&lt;p&gt;以下 Claude さんの解説。&lt;/p&gt;
&lt;p&gt;QMD は内部で 2 つのローカル ML モデルを動かしている。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;モデル&lt;/th&gt;
 &lt;th&gt;サイズ&lt;/th&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;embeddinggemma-300M-Q8_0.gguf&lt;/td&gt;
 &lt;td&gt;314 MB&lt;/td&gt;
 &lt;td&gt;ベクトル埋め込み生成&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Qwen3-Reranker-0.6B-Q8_0.gguf&lt;/td&gt;
 &lt;td&gt;610 MB&lt;/td&gt;
 &lt;td&gt;検索結果のリランキング&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;自分の環境は専用 GPU がなく CPU 推論になるので、2 モデル合計で 924 MB がオンメモリに乗る。MCP サーバーとして常駐させていると、起動のたびにこれをロードして複数プロセスを spawn する。&lt;code&gt;qmd query&lt;/code&gt;（MCP が使う推奨コマンド）はさらにリランキングまで走らせるので、検索 1 回に数分かかることもあった。&lt;/p&gt;</description></item><item><title>Claude Code のセッション履歴をベクトル検索できる QMD を入れた</title><link>https://daitai.dev/posts/qmd/</link><pubDate>Sat, 18 Apr 2026 23:01:37 +0900</pubDate><guid>https://daitai.dev/posts/qmd/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — QMD は BM25 + ベクトル検索でローカル Markdown を横断検索できる MCP ツール。Stop hook で Claude Code セッション終了時に自動インデックス化することで、複数リポジトリのセッション履歴を横断検索できる。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;nanoclaw（Claude Code の fork）をアップデートしているとき、内部で QMD が使われているのを見かけた。調べてみたら「お、これ良さそう」となったので入れた。&lt;/p&gt;
&lt;h2 id="qmd-とは"&gt;QMD とは&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://github.com/tobil/qmd"&gt;QMD&lt;/a&gt; は、ローカルの Markdown ファイルを対象に検索エンジンを立てる CLI ツール兼 MCP サーバー。単純な grep と違うのは、&lt;strong&gt;BM25（キーワード検索）とベクトル検索を組み合わせて意味的に近いドキュメントを引ける&lt;/strong&gt;こと。検索用の埋め込みモデルもローカルで動く（GPU がなくても動作する、が後ほど書くけど CPU だとクソ重い処理が一回だけある）。&lt;/p&gt;
&lt;h2 id="インストール"&gt;インストール&lt;/h2&gt;
&lt;p&gt;本体は以下のように、npm でインストール。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install -g @tobilu/qmd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Claude Code はプラグインとして追加する。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin marketplace add tobi/qmd
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin install qmd@qmd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="今回やりたかったことと設定"&gt;今回やりたかったことと設定&lt;/h2&gt;
&lt;p&gt;自分は複数のリポジトリで Claude Code を使っていて、技術的な会話もリポジトリをまたいでいる。そこで、QMD のコレクションに全リポジトリのセッション Markdown を入れておけば、「あのリポジトリでやった話、なんだったっけ」を後から引ける。&lt;/p&gt;
&lt;p&gt;同じようなことを実現できるものとして、&lt;a href="https://github.com/thedotmack/claude-mem"&gt;claude-mem&lt;/a&gt; がある。&lt;/p&gt;
&lt;p&gt;そもそもこれ入れればいいじゃんって話もあるけど、なんか分からんけど直感で QMD いいかもって思ってしまったので仕方ない。直感で突き進みます。&lt;/p&gt;
&lt;p&gt;まずは、Claude のセッションをマークダウンに変換するスクリプト &lt;code&gt;convert-sessions.js&lt;/code&gt; を用意して、&lt;code&gt;~/.claude/hooks&lt;/code&gt; 配下に配置。&lt;/p&gt;</description></item></channel></rss>