Geneziz MCPサーバーを最大限に活用する
geneziz mcp register を実行して、アシスタントがナレッジベースを
参照できるようになりました。接続は簡単な部分です。価値は使い方から
生まれます。これは私たち自身が使っているプレイブックで、セッションの
両側(プロンプトする人間と、ツールを扱うエージェント)に向けて
書かれています。
ルール1:検索の前に方位を取る
ナレッジベースはウェブインデックスではありません。検索の前に、良い エージェントは1往復だけ使って何が入っているかを把握します。 ツールだけで:
get_recent(days=7, limit=10) → 最近保存されたもの
list_categories() → アーカイブの形(ツール、記事、トピック)
list_tags(limit=20) → どう整理されているか
list_domains() → 実際にどのソースから保存しているか
これで、ベースに存在しないものを検索して、空の結果の 周りで幻覚を見る、という典型的な失敗を防げます。
注:全体の統計はリソース
knowledge://statsにあり、ツールでは ありません。MCPリソースを表示できるクライアントは読めますが、 ツールしか一覧できないアシスタントは上の4呼び出しで方位を取って ください。
ルール2:2つの検索ツール、2つの別の仕事
Genezizには2つの検索ツールがあり、最初に正しい方を選ぶことが、 最大のスピード向上につながります:
| ツール | 使うとき | 仕組み |
|---|---|---|
search_fulltext | 正確な単語が分かるとき(ライブラリ名、エラー文字列、タイトル) | BM25キーワード検索。高速で、常に利用可能。 |
search_knowledge | 概念を探すとき(「local-first syncについての記事」「マイクロサービスに反対するあの投稿」) | ハイブリッド:キーワード+セマンティック埋め込み。正確に名指せないものを見つける。 |
実践パターン:search_fulltext から始め、キーワード結果が
"近いけど違う"と感じられたときだけ search_knowledge にエスカレート
する。 セマンティック検索はより多く読む一方で、より曖昧な質問に答えます。
ノートに既に "FastMCP import error" の正確な文字列があるなら、
そのコストを払う必要はありません。
知っておくべき2つの挙動:
search_knowledgeは優雅に劣化します:ベクトルインデックスが 未構築なら、失敗する代わりにdegraded: trueマーカーとベスト エフォートのキーワード結果を返します。エージェントは両方の形を 扱うべきです。- サーバーはレート制限(毎分約120回)があります。読み取りを まとめ、密なループでクエリしないこと。
どちらもハイライト付きスニペットを返します。結果が重要なら、 スニペットで止まらないで:
ルール3:スニペットはトリアージ:読んで、展開する
search_* はプレビューを返します。ヒットが本物なら、結果が持つ
slugでファイル全体を取得します:
get_article(name="local-first-vs-cloud-bookmarks")
get_tool(name="ripgrep")
そして検索にできないことをする:横に展開します。
find_related(filename="local-first-vs-cloud-bookmarks", limit=5)
find_related は既に信頼するファイルの最近傍を返します。良い
ヒットから、それに属する5つの記事への最短経路です。ブックマーク中心
のベースなら、get_bookmark(author="...") はリッチなX.comエントリ
(本文、エンゲージメント、フォルダ)を直接取得します。
ルール4:巨大なリミットではなくフィルタで一覧する
list_tools と list_articles はページネーションします(limit は
100上限、offset を使用)。「全部一覧」ではなくフィルタ付きの一覧を
アシスタントに促します:
list_tools(category="ai", limit=20)
list_articles(domain="github.com", tag="rust")
offset ページネーションは「同じクエリの次の20件」を意味します。
「400件ください、自分でスクロールします」ではありません。
コンテキストウィンドウの節約になります。
ルール5:意図をもって保存し、検索可能になる時を知る
2つのキャプチャツール、2つの目的:
add_note(title, body):本物のノートを書く。決定、学び、後で 見つけたい断片に。タグを付ける(tags=["rust", "perf"])。タグは 未来の自分の検索方法です。save_url(url, note="..."):リンクを任意の注記とともに 保存。ページは取得しません。 URL+ノート、約450バイトのスタブ です。これは設計によるもの。全ページのキャプチャはブラウザ拡張の 仕事(完全なスナップショットを保存)で、hydrate/enrichが後で 本文を埋められます。
避けるべき失敗:エージェントが save_url で空のノートとともに
「記事を保存」し、その後、検索が記事のコンテンツを見つけられない
のはなぜかと混乱する。今すぐ内容が重要なら、それは note に入れるか、
拡張でキャプチャします。
保存はいつ検索可能になりますか? 次にインデクサが走ったときです。
デスクトップアプリのパイプラインは自動で行い、ターミナルからは
geneziz index です。数秒前に保存されたファイルはまだ検索可能では
なく、それは期待された動作です。エージェントに伝えないと、保存を
検索で「確認」して誤って失敗を報告します。
MCP経由で保存されたものすべてに真の出自(via: MCP save/
mcp-note タグ)が付き、エージェント保存のアイテムは統計で常に
拡張保存と区別できます。
ルール6:ついでに整理する
find_duplicates(threshold=0.92) は埋め込み類似度でほぼ重複した
記事を表面化します。レポート専用です。マージも削除もしません。
時々実行して指摘されたものを手でマージすると、セマンティック検索が
健全に保たれます:重複は場所を浪費するだけでなく、「同じ」アイデアを
ベクトル間で分割し、結果を希釈します。
実際のセッション、最初から最後まで
これは仮定ではありません。上のプレイブックがこの通り検証されました。
あるエージェントがツール設定を終え、3手でループを閉じました:参照
記事を save_url ×7(各々に一行の理由付き)、決定記録を
add_note ×1(タグ:best-practices、mcp、dogfooding)、そし
てインデックス1回。保存したクライアントだけでなく、将来のすべての
セッション(任意のMCPクライアント)がリンクだけでなく推論を
検索できるようになりました。
アシスタント用のコンパクトなプロンプト
Claude Code、Cursor、ZCodeなど任意のMCPクライアントを使うなら、 プロジェクトの指示にこれをドロップしてください。上のすべてを 凝縮しています:
Genezizナレッジベースを扱うとき:
1. まず方位を取る:get_recent(7)、list_categories、list_tags。
盲目的に検索しない。
2. 正確な名前/エラーにはsearch_fulltext。曖昧な概念のみ
search_knowledgeにエスカレート。"degraded"フォールバック形式を処理。
3. 結果のslugでget_article/get_toolにより全文を読み、find_relatedで
展開。レート制限は約120呼び出し/分。読み取りをまとめる。
4. フィルタ(category/domain/tag)+オフセットページネーションで
一覧。無制限の一覧を要求しない。
5. save_urlはURL+ノートのみ(フェッチなし。重要な内容はノートに)。
独立した学びにはadd_note、常にタグ付き。新しい保存はインデクサが
走った後にのみ検索可能。保存をすぐ検索して「確認」しない。
6. 時々find_duplicatesを実行し、発見を手でマージする。
複利になる習慣
上のツールはすべて設計上ほぼ読み取り専用です。MCPの表面は、
エージェントに探索させるのに安全です。複利効果はルール5から来ます:
add_note("何を決めたか", ...) またはよく注記された save_url で
終わるすべてのセッションが、次のセッションのルール1〜4を賢くします。
それこそセカンドブレインの要点です:使ったというだけで、あなたを
助けるのが上手くなるべきなのです。