Throughline について
Throughlineは、Claudeからローカルのソフトウェアリポジトリを検索するMCPサーバーです。シンボル、インポート、呼び出し関係、Git履歴を索引化し、構造上の重要度で並べた結果をファイルパスと行番号付きで返します。ローカルで動作し、既定では読み取り専用です。
主な機能
- 01コードシンボルの抽出と呼び出しグラフの構築
- 02Git履歴を含むリポジトリ索引
- 03構造的重要度による検索結果の順位付け
- 04ファイルパスと行番号の提示
- 05ローカル動作と既定の読み取り専用設定
- 06プレビューと確認を伴う書き込み
活用シーン
- 01機能の実装箇所の特定
- 02呼び出し元と名前変更の影響確認
- 03ルートから中核ロジックまでの処理追跡
- 04リポジトリの構成や導入資料の整理
MCP 対応
Throughlineは、リポジトリの索引作成と検索ツールをMCPサーバーとしてClaudeに提供します。Claude Desktopに対応し、アクセスを許可されたディレクトリだけを読み取ります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
マシン上のリポジトリを指定してください。すべてのファイルを読み込み、tree-sitter でシンボルを抽出し、インポートを呼び出しグラフに解決し、git の履歴を取り込んで、そのすべてを正確な検索ツールとして Claude に公開します。
実際に知りたいことを尋ねれば、たとえば 「レート制限はどこで処理されていますか?」、「これを変更したら何が壊れますか?」 といった質問に、もっともらしい推測ではなく、実際のファイルパスと行番号で答えます。
すべてローカルで実行されます。この拡張機能は、いかなる種類のネットワークリクエストも行いません。
表示例
あなた: インデックス作成では、ファイルが変更されたとどこで判断していますか?
3 matches for "where does indexing decide a file has changed"
### src/core/services/index-repository.ts:171-186
method IndexingService.index — src/core/services/index-repository.ts:171-186
why: text match; 15 inbound references; 6 matches in this file
const hash = contentHash(buffer);
const previous = known.get(scanned.relPath);
...
if (mode === 'incremental' && previous === hash) {
unchanged.push(scanned.relPath);
continue;
}
この why: の行が重要です。結果は、単語の出現回数ではなく、参照元の数、エクスポート状態、アーキテクチャ上の役割といった構造上の中心性に基づいて順位付けされます。キャッシュについて 言及している ファイルより、キャッシュを 実装している ファイルが優先されます。
質問できること
| 質問 | 動作 |
|---|---|
| 「支払いはどこで処理されていますか?」 | コードで実際に使われている仕組み(stripe、charge、invoice、checkout)へと概念を展開し、構造上の重要度で順位付けします |
「validateToken を呼び出しているのはどこですか?」 | すべての呼び出し箇所を提示します。ヒューリスティックによる一致にはその旨を明記するため、名前を変更する前に何を再確認すべきかが分かります |
「リクエストが /login に届くと何が起きますか?」 | ルートハンドラーからコアロジックまでの呼び出し経路をたどり、シーケンス図として表示します |
| 「このリポジトリの概要を教えてください」 | スタック、エントリーポイント、レイヤー構造、ホットスポット、既存ドキュメントを、すべて根拠を示して提示します |
| 「ここに使われていないものはありますか?」 | 参照されていない非エクスポートのシンボルを提示し、静的解析では検出できないものについて明示的に警告します |
| 「オンボーディングガイドの草案を作成して」 | インデックスからガイドを組み立てます。書き込みには別のツールを使い、明示的な承認がある場合に限って実行します |
ツールは全部で 18 個あります。docs/TOOLS.md をご覧ください。
対応言語
シンボルを完全に抽出 — TypeScript · TSX · JavaScript · JSX · Python · Go · Java · Kotlin · C# · Rust · C · C++ · YAML · JSON
テキスト検索のみ対応 — SQL · Markdown · Dockerfile · Terraform (文法はまだ同梱されていません。ファイルはインデックス化され検索可能ですが、シンボルは抽出されません)
その他のファイルもすべてカタログ化され、テキストとして検索できます。
インストール
リリースからインストール — throughline.mcpb をダウンロードし、Claude
Desktop で 設定 → 拡張機能 → 詳細設定 → 拡張機能をインストール に進みます。
コネクターに読み取りを許可するディレクトリを尋ねられます。
ソースからインストール — docs/INSTALL.md をご覧ください。
npm install
npm run grammars # vendor tree-sitter WASM grammars
npm run build
npm run smoke -- . # watch it index itself
macOS または Windows 上の Claude Desktop が必要です。Node は Claude Desktop に付属しているため、ほかにインストールするものはありません。
初回実行
- 「ワークスペースを一覧表示して」 — ディレクトリが許可されたことを確認します。
- 「このプロジェクトをインデックス化して」 — 5,000 ファイルのリポジトリでは 20~60 秒かかります。
- 何でも質問してください。後で 「インデックスを更新して」 と尋ねると、編集内容が約 1 秒で反映されます。
プロンプトの例
- 「このリポジトリをインデックス化して、認証の仕組みを説明してください。ファイルを引用してください。」
- 「
getUserByIdの名前を変更したいです。呼び出し元をすべて表示し、リスクの高いものに印を付けてください。」 - 「このサービスのエントリーポイントはどこですか?」
- 「
src/billingの依存関係グラフを描いてください。」 - 「変更頻度が最も高く、かつ最も複雑なファイルはどれですか?」
- 「アーキテクチャの概要を作成してください。まだディスクには書き込まないでください。」
仕組み
2 パスのパイプラインです。パス 1 では、tree-sitter を使ってすべてのファイルを並列に解析し、共有状態は持ちません。パス 2 では全体を見渡し、名前を解決してシンボルテーブル、インポートグラフ、呼び出しグラフを構築します。
検索では、BM25 の語彙ランカーとシンボル名ランカーを逆順位融合で統合し、その後、グラフ中心性に基づいて再ランク付けします。RRF は順位の位置のみを使うため、スコアの尺度が互換性のないランカー同士でも調整なしで組み合わせられます。さらに、グラフによる再ランク付けによって、概念的なクエリが、その概念に言及しているだけの 12 個のファイルではなく、実装を見つけられます。
設計上の根拠と、各判断で何を優先し何を犠牲にしたかを含む 11 項目は、docs/ARCHITECTURE.md に記載されています。
プライバシーポリシー
発効日: 2026-01-01 · 最終更新日: 2026-01-01
Throughline はローカルで動作するデスクトップ拡張機能です。Claude Desktop の子プロセスとして、すべてお使いのコンピューター上で実行されます。
コネクターがアクセスする情報
- インストール時に明示的に許可したディレクトリ内のファイルです。それらのディレクトリ外は読み取りません。許可したディレクトリの外を参照するシンボリックリンクは拒否されます。
- それらのディレクトリ内の Git メタデータです。コミットの件名、作成者名とメールアドレス、タイムスタンプ、各コミットで変更されたファイルが含まれます。コミットメッセージ本文は保存されません。
- その他の情報にはアクセスしません。 独自の設定以外の環境変数、ブラウザーデータ、システム上の他の場所にあるファイル、他のアプリケーションにはアクセスしません。
コネクターが保存する情報と保存場所
インデックスは、許可した各プロジェクトディレクトリ内の .throughline/index.db に書き込まれます。ファイルパス、シンボル名とシグネチャ、ドキュメントコメント、インポート関係、呼び出しエッジ、Git メタデータ、検索に使用するソースコードの抜粋が含まれます。
インデックスがマシンの外に出ることはありません。.throughline ディレクトリを削除すると、インデックスも完全に削除されます。拡張機能をアンインストールしてもインデックスは残ります。削除したい場合は、ディレクトリを手動で削除してください。
コネクターが送信する情報
この拡張機能は、いかなる種類のネットワークリクエストも行いません。 テレメトリー、分析、クラッシュレポート、更新確認、リモート API のいずれもありません。これは単なる約束ではなく、構造上そうなっています。ソケットを開かず、Git 操作ではリモートに接続するのではなく、ローカルのオブジェクトデータベースを直接読み取ります。
境界について、明確にしておく必要があります。Claude がツールを呼び出すと、ツールのレスポンス(プロジェクト内のコードスニペット、ファイルパス、シンボル名)は Claude に返されるため、会話に自分でコードを貼り付けた場合と同様に、Anthropic のプライバシーポリシーに基づいて Anthropic によって処理されます。コネクターは、返す情報を制御する範囲に限って、マシンの外に出る情報を制御します。リポジトリ全体ではなく、対象を限定したサイズ上限付きの抜粋を返し、まずシークレットをマスキングします。ディレクトリの内容を Claude に渡したくない場合は、そのディレクトリを許可しないでください。
シークレットのマスキング
内容を保存または返す前に、認証情報のパターン(API キー、トークン、秘密鍵、接続文字列、代入されたパスワード)をスキャンし、一致した箇所を [REDACTED:kind] に置き換えます。マスキングは書き込み時に行われるため、シークレットがインデックスに保存されることもありません。
これは安全策であり、保証ではありません。パターンマッチングですべてのシークレットを検出できるわけではありません。会話に含めたくない認証情報があるディレクトリへのアクセスを許可しないでください。また、機密性の高いパスを除外するには security.denyGlobs を使用してください。
ファイルへの書き込み
デフォルトでは読み取り専用です。書き込み可能な唯一のツール — write_documentation —
を使用するには、設定で書き込みを有効にしたうえで、正確な内容のプレビューを確認してから
個別の書き込みを承認する必要があります。このツールが書き込めるのは、許可されたディレクトリ内で、
指定したパスのみです。
データ共有、保持、問い合わせ先
データは誰とも共有されません。サーバーもアカウントもサードパーティもありません。 データの保持は完全にユーザーの管理下にあります。インデックスはプロジェクト ディレクトリに保存され、削除すると消去されます。これは子どもを対象としない開発者向けツールであり、 個人情報を収集することはありません。
質問や懸念がある場合: issue を作成してください。
正確な秘匿化パターンとデータモデルを含むポリシー全文は、 docs/PRIVACY.md をご覧ください。
セキュリティ
- デフォルトでは読み取り専用です。書き込みには二重のゲートがあり、事前にプレビューを確認します。
- シェルは一切実行しません。
gitを呼び出さず、プロセス内で Git を読み取ります。 - 解決後の 実際の パスを基準にパスの包含を強制するため、シンボリックリンクで許可されたディレクトリの外にアクセスすることはできません。
stdoutには JSON-RPC のみが出力され、診断情報はすべてstderrに出力されます。- リポジトリ内の設定ファイルによってコネクターのアクセス範囲が広がることはありません — 許可されたディレクトリはインストールダイアログで指定され、それ以外の方法で追加することはできません。
脅威モデル:docs/SECURITY.md。
設定
任意です。プロジェクトのルートに connector.config.json を配置して、除外項目、
上限、検索動作を調整できます — connector.config.example.json と
docs/CONFIGURATION.md をご覧ください。
制限事項
利用にあたって、事前に知っておくべき点:
- 参照は型ではなく名前で解決されます。 型チェッカーは使用しません。エッジには
exactまたはheuristicのラベルが付きます。ヒューリスティックなエッジは誤っている場合があります。 - 動的ディスパッチは検出できません。 リフレクション、依存性注入、 文字列キーによるルーティング、イベントバスからはエッジが生成されません。「デッドコード」の検出結果は 候補であり、確定ではありません。
- Blame は近似値です。 行への帰属は履歴をたどって再構築されますが、
git blame -Mのように コードの移動を追跡することはありません。 - 4 つの言語はテキストとしてのみ解析されます — SQL、Markdown、Dockerfile、Terraform。
- 大規模なリポジトリには上限があります。 デフォルトのファイル上限は 50,000 です。上限に達すると警告が表示され、黙って切り詰められることはありません。
コントリビューション
docs/CONTRIBUTING.md。言語の追加に必要なのは通常、
文法、.scm クエリファイル、レジストリの行です — パイプラインを変更する必要はありません。
ライセンス
MIT — LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。