codebase-synapse について
codebase-synapseはリポジトリをローカルのナレッジグラフに索引化し、コーディングエージェントに検索、依存関係分析、アーキテクチャ情報を提供します。SQLiteに索引を保存し、Git履歴分析やセッションをまたぐメモリツールも備えています。
主な機能
- 01セマンティック、全文、ハイブリッド検索
- 02呼び出しグラフと依存関係の追跡
- 03影響範囲とアーキテクチャ境界の分析
- 04Git履歴と変更の連動関係の調査
- 05永続メモリとセッションメモリ
- 06codebase-guardによる重要ファイル書き込みの阻止
活用シーン
- 01関数の呼び出し元と呼び出し先を検索
- 02ファイル編集前に影響範囲を評価
- 03ファイル履歴と同時変更を追跡
- 04エージェント向けの編集コンテキストを準備
MCP 対応
stdioのMCPサーバーとして、MCPクライアントにコード検索、グラフ、アーキテクチャ、Git履歴、メモリのツールを提供します。索引は別途CLIコマンドで作成し、サーバーは既存のローカル索引を読み込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 Codebase Synapse
AI エージェントにコードベース全体の深い理解を与えます。
コードベースをローカルのナレッジグラフにインデックス化する MCP サーバーです。52 個の AI ツールを備え、セマンティック検索、呼び出しグラフのたどり、Git の履歴調査、影響範囲分析などを利用できます。
Claude Code · Cursor · Windsurf · Zed · あらゆる MCP クライアントに対応
問題
AI コーディングエージェント(Claude、Cursor など)は強力ですが、限られたコンテキストしか扱えません。開いたファイルや渡したファイルしか見ることができません。呼び出しチェーン、アーキテクチャパターン、影響範囲について尋ねても、推測するしかありません。
Codebase Synapse がこの問題を解決します。リポジトリ全体を SQLite に保存されるローカルのナレッジグラフにインデックス化し、構造分析に基づいた確かな回答を AI エージェントに提供します。幻覚ではありません。
仕組み
graph LR
A["📁 Your Codebase"] -->|Tree-sitter| B["🧩 Parser"]
B -->|Symbols & Edges| C["🕸️ Knowledge Graph"]
C -->|SQLite| D["💾 Local DB"]
D -->|52 MCP Tools| E["🤖 AI Agent"]
style A fill:#1a1b26,stroke:#7aa2f7,color:#c0caf5
style B fill:#1a1b26,stroke:#bb9af7,color:#c0caf5
style C fill:#1a1b26,stroke:#9ece6a,color:#c0caf5
style D fill:#1a1b26,stroke:#e0af68,color:#c0caf5
style E fill:#1a1b26,stroke:#f7768e,color:#c0caf5
⚡ クイックスタート
1. プロジェクトをインデックス化する(Zoekt 形式の CLI)
codebase-synapse index /path/to/your/repo
インデックス作成は独立した CLI コマンドとして実行され、~/.codebase-synapse/codebase.db に書き込みます。初回のインデックス作成には時間がかかりますが、再実行時には変更されたファイルのみを再インデックス化します。MCP サーバーはインデックスを作成せず、事前に作成されたインデックスを読み取るだけです。
2. MCP サーバーを起動する
npx codebase-synapse
これだけです。Docker もデータベースの設定もクラウドも必要ありません。サーバーは stdio 経由で起動し、事前に作成されたインデックスを MCP クライアントに提供します。
クライアントを設定する
Claude Code / Claude Desktop
claude_desktop_config.json または mcp_servers.json に追加します。
{
"mcpServers": {
"codebase-synapse": {
"command": "npx",
"args": ["-y", "codebase-synapse"]
}
}
}
Cursor
.cursor/mcp.json に追加します。
{
"mcpServers": {
"codebase-synapse": {
"command": "npx",
"args": ["-y", "codebase-synapse"]
}
}
}
その他の MCP クライアント
stdio トランスポートに対応する MCP クライアントであれば利用できます。以下を指定してください。
npx -y codebase-synapse
✨ できること
🔍 検索と探索
| ツール | 説明 |
|---|---|
semantic_search | ローカル埋め込み(all-MiniLM-L6-v2)を使用したベクトル類似検索 |
search_code | コード全体を対象とした全文検索(FTS5 + BM25 ランキング) |
search_symbol | 名前またはパターンで関数、クラス、型を検索 |
hybrid_search | RRF 融合によるセマンティック検索と語彙検索の組み合わせ |
find_similar | MinHash + LSH を使用して構造的に類似したコードを検索 |
find_symbol_everywhere | インデックス化されたすべてのプロジェクトからシンボルを検索 |
🕸️ ナレッジグラフ
| ツール | 説明 |
|---|---|
get_callers / get_callees | 呼び出しグラフをどちらの方向にもたどる |
get_imports / get_dependents | 依存関係のチェーンをたどる |
impact_analysis | ファイルを編集する前に影響範囲を算出 |
find_path | 2 つのシンボル間の最短経路を検索 |
find_dead_code | 到達不能な関数と未使用のエクスポートを検出 |
get_pagerank | アーキテクチャ内で最も重要なノードを特定 |
query_graph | ナレッジグラフに対して Cypher 風のクエリを実行 |
🏗️ アーキテクチャ
| ツール | 説明 |
|---|---|
get_architecture | プロジェクト全体のアーキテクチャ概要(言語、エントリーポイント、ホットスポット) |
get_file_structure | シンボル注釈付きのディレクトリツリー |
project_overview | 主要な指標を含む概要 |
get_route_map | HTTP ルートとハンドラーの対応関係を抽出 |
suggest_boundaries | Leiden クラスタリングによるモジュール境界の検出 |
check_boundaries | 定義された境界に照らしてモジュール間の依存関係を検証 |
get_clusters | コードベース全体でコミュニティを検出 |
🔬 Git の考古学
| ツール | 説明 |
|---|---|
git_archaeology | ファイルの詳細な履歴分析(作成者、変更量、変遷) |
get_hotspots | 複雑さ × 変更頻度が最も高いファイル |
detect_change_coupling | 常に一緒に変更されるファイル |
get_recent_semantic_changes | 最近の意味的に重要な変更 |
index_git_history | git log から時系列分析を構築 |
🧠 メモリとコンテキスト
| ツール | 説明 |
|---|---|
memory_store / memory_search / memory_list | セッションをまたいで保持されるメモ、事実、決定事項 |
session_remember / session_recall | セッション内の短期メモリ |
get_context | AI エージェント向けの予算に応じたコンテキスト準備 |
get_edit_context | 特定のファイル編集に特化したコンテキスト |
get_working_set | 最近アクセスまたは変更されたファイル |
manage_adr | Architecture Decision Records の管理 |
🛡️ コードベースガード
ボーナスとして、codebase-guard は Claude Code 用の PreToolUse フックで、エージェントが最初に impact_analysis を実行するまで、影響の大きいファイルへの書き込みをブロックします。
ナレッジグラフの PageRank スコアと影響範囲データを使って、アーキテクチャ上のハブを特定します。コアファイルを誤って編集することはもうありません。
🔧 技術詳細
| 言語 | Rust(ネイティブバイナリとしてコンパイル) |
| トランスポート | MCP stdio(JSON-RPC) |
| ストレージ | SQLite(WAL モード、設定不要) |
| エンベディング | Candle 経由の all-MiniLM-L6-v2(オフライン、ローカル、遅延ロード) |
| パース | Tree-sitter(10 言語) |
| 配布 | ビルド済みバイナリを含む npm(Windows、macOS、Linux × x64、arm64) |
対応言語
Rust · Python · TypeScript · JavaScript · Go · Java · C# · PHP · C · C++
アーキテクチャ
src/
├── parser/ # Tree-sitter parsing & entity extraction
├── graph/ # Knowledge graph, PageRank, Leiden clustering
├── indexer/ # Repository indexing pipeline
├── search/ # BM25 full-text + vector cosine + hybrid RRF
├── embedding/ # Candle-based local embeddings (feature-gated)
├── memory/ # Persistent & session memory stores
├── mcp/ # MCP protocol transport + 52 tool handlers
├── git/ # Git archaeology, intent classification, hotspots
├── context/ # Budgeted context preparation for AI
├── cypher/ # Nom-based Cypher parser → SQL CTE planner
├── similarity/ # MinHash + LSH structural similarity
├── semantic/ # Multi-signal scoring (tokens, directory, AST)
└── cli/ # Interactive TUI installer + artifact export/import
🤝 貢献
貢献を歓迎します!このプロジェクトでは、標準的な Rust ツールを使用しています。
# Run tests
cargo test
# Lint
cargo clippy -- -D warnings
# Format
cargo fmt --all
📄 ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。