本文へスキップ
ブログに戻る
チュートリアル

Geneziz MCPサーバーを最大限に活用する

William Finger8 min

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クライアントを使うなら、 プロジェクトの指示にこれをドロップしてください。上のすべてを 凝縮しています:

text
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を賢くします。 それこそセカンドブレインの要点です:使ったというだけで、あなたを 助けるのが上手くなるべきなのです。

関連記事

目次