GrooveSeek

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

View the Project on GitHub alphabet-h/grooveseek

7. プロジェクトを GrooveSeek に改名し、コマンドは groove とする

背景と課題

本プロジェクトは 0.x を 25 回、kb-mcp という名前でリリースしてきた。この名前の 問題は 2 つあり、どちらも 1.0 が視野に入って初めて blocker になった。

同じことをするプロジェクトに同じ名前を取られている。 github.com/moikas-code/kb-mcp は自身を “cli tool and mcp server to help ai manage a knowledge base of your code projects” と説明している。同カテゴリ、同名で、 どちらを探した利用者も両方に行き着く。

名前が製品をプロトコルに縛っている。 MCP はこのサーバの読まれ方の一方でしかない。 もう一方はブラウザ — 人が /ui を開いて自分のノートを検索する経路である。-mcp は 機械向けの半分だけを名乗り、人間向けの半分について何も言っていない。そして MCP が 廃れれば、名前だけが指す対象より長く残る。

どちらも新しい問題ではない。変わったのは、この名前がまもなく永続化することだ。 名前はラベルではなく、利用者のファイルシステムに書き込まれる実体である:

.kb-mcp.db                   索引
kb-mcp.toml                  設定
.kb-mcpignore                除外ファイル
.kb-mcp-eval-history.json    eval の履歴
KB_MCP_CONFIG_HOME           config home の override
<config_dir>/kb-mcp/<service>/   サービスの config home

1.0 の後に改名すれば、既存のインストールはすべて自分の DB も設定も登録済みサービスも 見失う。両方の名前を面倒見るなら「旧名も探す」層を 1.x の全期間にわたって抱えることに なる。0.x で、かつ明示的に beta である今なら、その層はそもそも要らないやるなら今しかなく、その窓は 1.0.0 で閉じる

判断基準

検討した選択肢

約 90 語を crates.io / npm / GitHub search に対して実測した。200 でも 404 でもない 応答は UNKNOWN として記録し、結論を出さないようにした。失敗した測定が 「空いている」に見えるのを防ぐためである。

決定

製品名は GrooveSeek。 crate は grooveseek、コマンドと on-disk 識別子はすべて groove とする。

crate      grooveseek          crates.io / npm 空き、GitHub 衝突なし
command    groove              同名の標準コマンドなし
files      .groove.db  groove.toml  .grooveignore  .groove-eval-history.json
env        GROOVE_CONFIG_HOME  GROOVE_TRAY_LOG  GROOVE_BIN
satellite  groove-svc  groove-tray   (crate 名 = バイナリ名。どちらも publish しない)

製品名と識別子を意図的に分けている。 ripgrep crate が rg というコマンドを 置くのと同じ形である。得られるものは 2 つ。.grooveseekignore では目で切れないものが .grooveignore なら切れること。そして将来もし製品名を変えても、利用者のディスク上の ものは 1 つも動かなくてよいこと — 二度目の改名は、今回がそうでないのとは逆に、 無料で済む。

MCP サーバが名乗る名前は CARGO_PKG_NAME 由来の grooveseek のままとする。 serverInfo.name はクライアントに報告される製品識別子であって、パスでも利用者が 打つ文字列でもないので、コマンドではなく製品に従う。

影響