<?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>Sat, 18 Apr 2026 23:01:37 +0900</lastBuildDate><atom:link href="https://daitai.dev/tags/mcp/index.xml" rel="self" type="application/rss+xml"/><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;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;
&lt;p&gt;Claude Code 使い始めたのが割と最近なので、セッション数も100ほど。これをまず全部マークダウンへ変換して、&lt;code&gt;~/.cache/qmd-sessions&lt;/code&gt; へ配置する。&lt;/p&gt;
&lt;p&gt;そして、このディレクトリを QMD へ食わせる。&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 collection add ~/.cache/qmd-sessions --name claude-sessions
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これだけだと過去のセッションだけの登録になってしまうので、終わったセッションを片っ端から食わせるために、Stop hook に仕掛けを入れた。&lt;/p&gt;</description></item></channel></rss>