codemogger — コードインデクシングとMCPサーバー
概要
CodemoggerはAIコーディングエージェント向けに設計された軽量なコードインデクシングライブラリとMCP(Multi-Client-Protocol)対応のサーバーコンポーネントです。ソースコードをtree-sitterでパースし、関数・クラス・構造体・implブロック等の「意味的チャンク」に分割してローカルで埋め込みを作成、ベクトル検索と全文検索を組み合わせた単一のSQLiteデータベース(.db)に格納します。外部APIやコンテナを必要とせず、ローカルだけで高速かつプライベートにコード検索・参照を行えます。エージェントがコードベースを素早く理解・検索・参照するためのインフラをシンプルに提供します。
リポジトリの統計情報
- スター数: 32
- フォーク数: 3
- ウォッチャー数: 32
- コミット数: 8
- ファイル数: 17
- メインの言語: TypeScript
主な特徴
- tree-sitterによる言語パースで意味的な単位(関数・クラス等)を抽出してチャンク化
- ローカルでの埋め込み生成と、ベクトル検索+全文検索を組み合わせた単一のSQLiteデータベース保存
- Dockerや外部APIキー不要で簡単に導入・運用できる設計
- MCPサーバーとしてエージェントと連携し、インデックスの提供や検索リクエストを処理
技術的なポイント
Codemoggerの技術的な中核は「言語構文解析→意味的チャンク化→埋め込み化→高速検索」という一連のパイプラインです。まずtree-sitterを使うことで、ファイルをトークン単位ではなく構文木に基づいた意味単位(関数、メソッド、クラス、構造体、implブロックなど)に精度よく分割します。これにより、検索や文脈提示時にノイズの少ない候補を返せる点が利点です。チャンク化された各ユニットにはソース位置や周辺コンテキストが紐づけられ、必要に応じて周辺コードも一緒に取り出せます。
次に各チャンクを埋め込みベクトルに変換します。READMEの方針として「No Docker, no server, no API keys」を謳っているため、外部サービスに依存せずローカルで完結する運用を重視しています。埋め込みはローカルで生成し、結果は単一のSQLiteファイルに格納されます。このSQLiteはベクトル検索に対応するエクステンションや、全文検索(FTS)を組み合わせて用いる設計になっており、ベクトル類似度とキーワードベースの検索を同時に活用してリコールと精度のバランスをとります。
MCPサーバー機能により、複数のAIコーディングエージェントやツールからインデックスを参照・検索するための軽量プロトコルを提供します。これにより、エージェントが「どのファイルのどの関数を参照すべきか」を素早く特定して、コード補完やリファクタ提案、ドキュメント生成などの上位タスクに集中できます。TypeScript実装のため、Node.js環境への組み込みや他のJS/TSベースツールとの連携が容易です。
開発面ではファイル数・コミット数が少ないことからまだ初期段階のプロジェクトであり、拡張やモデルの差し替え、より多言語対応やスケーリング機能を期待できます。ローカル完結の特性はプライバシーやオフラインでの実行性に強く、企業でのコードベース取り扱いや個人のローカル開発環境に適しています。
プロジェクトの構成
主要なファイルとディレクトリ:
- .cursor: dir
- .github: dir
- .gitignore: file
- .mcp.json: file
- CLAUDE.md: file
…他 12 ファイル
まとめ
ローカル完結のコードインデックス基盤として実用的で、AIエージェント統合に適した軽量ライブラリ。
リポジトリ情報:
- 名前: codemogger
- 説明: Codemogger is a code indexing library and MCP server for AI coding agents
- スター数: 32
- 言語: TypeScript
- URL: https://github.com/glommer/codemogger
- オーナー: glommer
- アバター: https://avatars.githubusercontent.com/u/331197?v=4
READMEの抜粋:
codemogger
Code indexing library for AI coding agents. Parses source code with tree-sitter, chunks it into semantic units (functions, structs, classes, impl blocks), embeds them locally, and stores everything in a single SQLite file with vector + full-text search.
No Docker, no server, no API keys. One .db file per codebase.
Why
Coding agents need to understand codebases. They need to find where things …