こちらのアップデート。

ruby-knowledge-db と chiebukuro-mcp を切り離した
前回の時点では、「DBを作る側」と「DBを読む側(MCP サーバー)」が同じリポジトリに入れていました。
整理した結果、「作る責務」と「読む責務」を分けました。シンプルになりました。
- GitHub - bash0C7/ruby-knowledge-db · GitHub ── DBを作る側。各種知識を収集して SQLite に集約するオーケストレーター。複数の collector gem を呼び出してデータを投入します
- GitHub - bash0C7/chiebukuro-mcp · GitHub ── DBを読む側。任意の SQLite(vec0 セマンティック検索対応)を MCP ツールとして公開する読み取り専用サーバー
読む時の環境依存の設定を dotfiles に追い出した
chiebukuro-mcp 自体には、どの DB を使うかという情報をいっさい含めないようにしました。
設定は ~/chiebukuro-mcp/chiebukuro.json という固定パスに置きます。
複数macで同期する用途です。
ruby-knowledge-db/ ← DBを作る側(オーケストレーター) chiebukuro-mcp/ ← DBを読む側(MCP サーバー) ~/chiebukuro-mcp/ ← 環境依存設定(dotfiles で管理) chiebukuro.json
シンプルになりました。
GitHub - bash0C7/chiebukuro-mcp · GitHub
sqliteのDBファイル群を登録して、MCPサーバーとしてClaude側に提供するというものです。
複数 DB
chiebukuro-mcp の設計で一番気に入っているのが、複数の SQLite DB を chiebukuro.json に並べるだけで、DB ごとのツールが自動で生やす仕組みです。
シンプルに起動時に設定ファイルから動的に登録します。
@databases.each do |db_name, db_config| # SELECT 専用クエリツールを登録 tools << MCP::Tool.define(name: "chiebukuro_query_#{db_name}", ...) # semantic_search 設定があればベクトル検索ツールも登録 tools << MCP::Tool.define(name: "chiebukuro_semantic_search_#{db_name}", ...) if sem_cfg end
DB のキー名がそのままツール名のサフィックスになります。
何がうれしいか
たとえばいまのわたしの chiebukuro.json にはこんな DB が並んでいます。
{ "databases": { "ruby_knowledge": { ... }, "long_term_memory": { ... }, "apple_health": { ... } } }
サーバーを起動すると Claude からは次のツールが見えます。
| ツール名 | 役割 |
|---|---|
chiebukuro_query_ruby_knowledge |
PicoRuby / CRuby の仕様を SQL で引く |
chiebukuro_semantic_search_ruby_knowledge |
自然言語でRuby知識を検索 |
chiebukuro_query_long_term_memory |
わたしの長期記憶を SQL で引く |
chiebukuro_semantic_search_long_term_memory |
自然言語で長期記憶を検索 |
chiebukuro_query_apple_health |
Apple Health のデータを SQL で引く |
どのデータを Claude に渡すかは chiebukuro.json に DB を追加するだけという簡易なものです。
また、MCP リソースとして schema://ruby_knowledge のようなスキーマ情報も DB ごとに自動登録されます。Claude はクエリを書く前にスキーマを参照できるので、テーブル構造を別途教える必要がありません。
このペースでいくといろんなSQLiteのDBを作ることになるので、それらをシュッと組み込みたかったという理由です。