GrooveSeek

Semantic search over a Markdown knowledge base, served over MCP.

View the Project on GitHub alphabet-h/grooveseek

Markdown ファイルがチャンク化を経て、意味の経路と字句の経路が 1 点に集まり、順位付けされた結果が MCP クライアントへ抜けていく図。

GrooveSeek ドキュメント

Markdown / プレーンテキストのナレッジベースに対するセマンティック検索を提供する MCP サーバ。コマンド名は groove。

English version: index.md

導入と最初の 1 検索までは表紙にあります: github.com/alphabet-h/grooveseek。 以下はリファレンスです。

各ページに英語版と日本語版があり、冒頭で相互にリンクしています。

リファレンス

  English 日本語
全サブコマンド — index, status, serve, search, graph, validate, doctor, eval, tune, service usage.md usage.ja.md
groove.toml の全キー、探索順、どの場所が信頼されるか configuration.md configuration.ja.md
.mcp.json のレシピ、HTTP トランスポート、PostToolUse フック、ファイル監視 clients.md clients.ja.md
MCP の面: ツール / プロンプト / kb:// リソース mcp-tools.md mcp-tools.ja.md
何が索引に入り、どこに保存され、どのファイルが拒否されるか behavior.md behavior.ja.md
どのプロセスの形で配置するか、常駐が何を買うか、同一ホスト制約がどこから来るか deployment-topologies.md deployment-topologies.ja.md

検索

  English 日本語
RRF、reranking、MMR、parent retriever を実行順に retrieval-pipeline.md retrieval-pipeline.ja.md
検索結果を絞り込む filters.md filters.ja.md
match_spans とバイトオフセット — 出典を正確に引用するために citations.md citations.ja.md
golden query set に対して検索品質を測る eval.md eval.ja.md

プロジェクト

  English 日本語
ソース構造と、クエリがそこをどう流れるか ARCHITECTURE.md ARCHITECTURE.ja.md
1.0.0 が凍結するもの、および意図的に凍結しないもの stability.md stability.ja.md

決定

Architecture Decision Record — 何を選び、どの代替案を退け、その代償は何だったか。 どこまでが ADR に残す決定で、どこからは changelog で足りるかは ADR-0000 にあります。

  English 日本語
0. アーキテクチャ上重要な決定を ADR として記録する en ja
1. .xls (レガシー BIFF) 対応を取り下げる en ja
2. クエリを全文検索用のトークン単位 OR フレーズにコンパイルする en ja
3. .kb-mcpignore が縛るのは索引であってアクセスではない。ignore はマッチャとしてのみ使う en ja
4. リソース読み出しの境界はファイルシステムではなく索引 en ja
5. 各ドキュメントのサイズを索引に記録する en ja
6. golden set を引用しているコーパスを報告し、引用が 1 つでは足りないことにする en ja
7. プロジェクトを GrooveSeek に改名し、コマンドは groove にする en ja
8. 1.0.0 が凍結するものを宣言し、Rust API はその外に置く en ja
9. DNS リバインディングのゲートを 1 つにし、こちらで持つ en ja
10. ADR-0008 が開けたままにしたコマンドラインの 3 問に決着を付ける en ja
11. ハイブリッド検索の両脚から語を除外する en ja
12. コードは定義で切り、覆えなかった範囲は行で埋める en ja
13. grammar は 1 つだけ焼き込み、残りは読み込む en ja
14. chunker は時計ではなく入力の形で縛る en ja
15. 定義は短くてよい en ja
16. plugin の置き場は知識ベースの外に置く en ja
17. chunk 数の上限を、バイトを捨てずに守る en ja
18. 同じ範囲は 1 つの定義として扱う en ja
19. frontmatter の key はすべて保持し、名指しは schema に任せる en ja
20. schema が宣言したものを索引に持たせる en ja
21. 渡された socket だけを受け、自分では作らない en ja
22. embedding を provider 境界の後ろに置き、既定は FastEmbed のままにする en ja
23. サーバが開ける名前だけを索引し、その判定を 1 つの述語に集める en ja
24. 強制再構築が索引を空にする前に embedding endpoint を試す en ja
25. embedding endpoint が断った入力は skip し、一時的な失敗は再試行する en ja
26. 索引のサイズ上限を設定可能にし、無制限は綴らせ、読み出し上限は据え置く en ja
27. docx の見出しは style の名前と basedOn の連鎖で決める en ja
28. 既存索引の docx は一度だけ読み直し、行ごとに決着させる en ja
29. 変わっていない文書は、形式ごとの policy key で一度だけ読み直す en ja
30. 表の行の位置は chunk ごとの NULL 可の列に持ち、追いつきは形式ごとの key で行う en ja

ADR-0003 のファイル名は今も kb-mcpignore のままです。そこで説明されているファイルは 現在 .grooveignore ですが、ADR は merge 後に編集しません。2026-08-17 より前の 日付のものに出てくる kb-mcp が本プロジェクトを指す理由は ADR-0007 にあります。

ADR-0000 は .dev/ を決定記録の置き場から外す理由の 1 つとして「nested repository が 無く、backup も無い」を挙げていますが、これは 2026-08-10 に .dev/ が private mirror を 持った時点で事実ではなくなりました。決定自体は変わりません — 変わっていない残り 2 つの 理由、すなわち「clone に付いて来ない」「公開ドキュメントから参照できない」がそのまま 成立するからです。記録は ADR-0003 のファイル名と同じ理由で、書かれたまま残してあります。