tokennuke について
TokenNukeは、コーディングエージェントや開発者向けにコードリポジトリを索引化するMCPサーバーです。構文を考慮したシンボル抽出、ハイブリッド検索、呼び出しグラフ、ソースの直接取得を備え、変更ファイルを差分で再索引します。
主な機能
- 01ローカル・リモートリポジトリの索引化
- 0210言語のシンボル抽出
- 03キーワードとベクトルのハイブリッド検索
- 04バイトオフセットによるソース取得
- 05呼び出し元と呼び出し先の追跡
- 06変更ファイルの差分再索引
活用シーン
- 01コードベースの把握時に関連コードを検索
- 02関数変更前に呼び出し元を確認
- 03リファクタリング前に依存関係を把握
- 04索引間のシンボル変更を確認
MCP 対応
FastMCPにより、コード索引化と検索の15個のツールをstdioまたはHTTPで公開します。MCPクライアントからリポジトリの索引化、シンボルやテキストの検索、ソース間の関係の確認ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
TokenNuke
インテリジェントなコードインデックス作成 MCP サーバーです。15 個のツール、10 言語、tree-sitter による AST 抽出、ハイブリッド検索(FTS5 + ベクトル)、呼び出しグラフ、リモートリポジトリのインデックス作成、差分インデックス作成に対応しています。
トークンを 99% 節約 — ファイル全体を読み込む代わりに、バイトオフセットを指定してシークすることで、関数のソースを正確に取得できます。
以前の名称は
codemunch-proです。同じコードに、より良い名前が付いたものです。
インストール
pip install tokennuke
クイックスタート
Claude Desktop / Cline
MCP クライアントの設定に追加します。
{
"mcpServers": {
"tokennuke": {
"command": "tokennuke"
}
}
}
HTTP サーバー
tokennuke --transport streamable-http --port 5002
15 個の MCP ツール
| ツール | 説明 |
|---|---|
index_folder | ローカルディレクトリのインデックスを作成します(差分対応、SHA-256 ベース) |
index_repo | GitHub/GitLab リポジトリのインデックスを作成します(tarball のダウンロード、git 不要) |
list_repos | インデックス済みのすべてのリポジトリを統計情報付きで一覧表示します |
invalidate_cache | リポジトリのインデックスを強制的に再作成します |
file_tree | ファイル数付きのディレクトリツリーを取得します |
file_outline | 単一ファイル内のシンボルを一覧表示します |
repo_outline | リポジトリ内のすべてのシンボルを一覧表示します(概要) |
get_symbol | 1 つのシンボルのソース全体を取得します(O(1) バイトシーク) |
get_symbols | 複数のシンボルをまとめて取得します |
search_symbols | ハイブリッド検索(FTS5 + ベクトル RRF) |
search_text | ファイル内容を全文検索します |
get_callees | この関数は何を呼び出しますか? |
get_callers | この関数を呼び出しているのは誰ですか? |
diff_symbols | 前回のインデックス作成から何が変わりましたか?(PR レビュー) |
dependency_map | このファイルは何に依存していますか?このファイルに依存しているのは何ですか? |
10 言語
Python、JavaScript、TypeScript、Go、Rust、Java、C、C++、C#、Ruby
すべて tree-sitter-language-pack を使用します — コンパイル不要で、ビルド済みバイナリを利用できます。
主な機能
O(1) シンボル取得
すべてのシンボルはバイトオフセットと長さを保持します。get_symbol は関数のソースを直接シークして取得するため、ファイル全体を読み込む必要はありません。40KB のファイルから 200 バイトの関数を取得する場合、トークンを 99.5% 節約できます。
差分インデックス作成
ファイルはハッシュ化(SHA-256)されます。変更されたファイルだけが再解析されます。10K ファイルのリポジトリで 1 ファイルを変更した後の再インデックス作成は、数ミリ秒で完了します。
ハイブリッド検索(FTS5 + ベクトル)
BM25 キーワードマッチングと、Reciprocal Rank Fusion によるセマンティックなベクトル類似度を組み合わせます。「authentication middleware」を検索すると、auth_middleware、verify_token、login_handler が見つかります。
呼び出しグラフ
AST をたどって関数呼び出しを追跡します。get_callees("main") は main が呼び出す関数を表示します。get_callers("authenticate") は authenticate を呼び出す関数を表示します。深さを指定した走査にも対応しています。
リモートリポジトリのインデックス作成
URL を指定するだけで、公開されている任意の GitHub または GitLab リポジトリのインデックスを作成できます — git バイナリは不要です。API 経由で tarball をダウンロードして展開し、インデックスを作成します。SHA ベースの鮮度チェックとともにローカルにキャッシュされます。認証トークンを使ったプライベートリポジトリや、スパースパスにも対応しています。
全文コンテンツ検索
文字列リテラル、TODO コメント、設定値、エラーメッセージなど、ファイルの生の内容を検索します。シンボル名だけに限りません。
仕組み
- 解析 — tree-sitter が各ソースファイルの AST を構築します
- 抽出 — AST を走査して、関数、クラス、メソッド、型、インターフェースを検出します
- 保存 — リポジトリごとの SQLite データベースに FTS5 仮想テーブルとともに保存します
- 埋め込み — FastEmbed(ONNX、CPU のみ)がセマンティック検索用の 384 次元ベクトルを生成します
- グラフ化 — 関数本体から呼び出し式を抽出し、エッジを保存して解決します
- 提供 — FastMCP が stdio または HTTP 経由で 15 個のツールを公開します
アーキテクチャ
~/.tokennuke/
├── myproject_a1b2c3d4e5f6.db # Per-repo SQLite database
├── otherproject_7890abcdef.db
└── ...
Each DB contains:
├── files # Indexed files with SHA-256 hashes
├── symbols # Functions, classes, methods, types
├── symbols_fts # FTS5 full-text search index
├── symbols_vec # sqlite-vec 384-dim vector index
├── call_edges # Call graph (caller → callee)
└── file_content_fts # Raw file content search
ユースケース
- AI コーディングエージェント:コンテキストを浪費せずに、コードベースをエージェントが正確に扱えるようにします
- コードレビュー:関数のシグネチャを変更する前に、その関数を呼び出すすべての箇所を見つけます
- オンボーディング:シンボルを意味的に検索します — 「エラー処理はどこにあるか?」という検索で、関連するコードが見つかります
- リファクタリング:関数をモジュール間で移動する前に、呼び出しグラフを把握します
- ドキュメント:シグネチャと docstring を含むすべての公開 API を抽出します
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。