CICADA について
CICADA は AI コーディングアシスタント向けのコードインテリジェンス MCP サーバーで、17 以上のプログラミング言語に対応しています。事前にインデックス化された構造化データを提供することで、アシスタントがコンパクトなコードコンテキストを扱えるようにします。作者はプロジェクトの開発終了を表明しており、利用は推奨されていません。
主な機能
- 01モジュール、関数、クラスの AST レベルのインデックス
- 0217 以上のプログラミング言語への対応
- 03エイリアス、インポート、参照の呼び出し箇所の追跡
- 04キーワードまたは Ollama 埋め込みによるセマンティック検索
- 05Git と PR に基づく変更履歴の帰属情報
活用シーン
- 01AI アシスタントによるモジュールの関数シグネチャと呼び出し元の確認
- 02多言語コードベースにおける関数のすべての呼び出し箇所の特定
- 03特定のコード行を導入したプルリクエストの調査
MCP 対応
本プロジェクトは MCP サーバーとして、query、search_module、search_function、git_history など 7 つの読み取り専用コード検索ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CICADA
警告
⚠️ 免責事項 — 現在の AI エージェントは、このプロジェクトが構想された当時とはまったく異なる動作をします。現在のベンチマークでは、コードインテリジェンスツールを使っても最先端モデルに対する利点はほとんど、あるいはまったくありません。CICADA は開発終了しています。CICADA やその他の「コードインテリジェンス」ツールの使用はおすすめしません。
Code Intelligence: Contextual Analysis, Discovery, and Attribution
AI コードアシスタント向けのコンテキスト圧縮 – Elixir、Python、TypeScript、JavaScript、Rust など、17 以上の言語にわたる構造化されたトークン効率の高いアクセスを AI に提供します。
待ち時間を最大 50% 削減 · トークンを最大 70% 削減 · 説明の手間を最大 99% 削減 コンテキストを絞り込む = 品質を向上させる
クイックインストール · セキュリティ · 開発者向け · AI アシスタント · ドキュメント
CICADA を選ぶ理由
根本的な問題: AI コードアシスタントは手当たり次第の検索でコンテキストを浪費します。関数シグネチャだけが必要な場合でも、Grep はファイル全体を出力するため、実際の推論に使える余地が少なくなります。
コンテキスト圧縮のアプローチ
生のテキストをそのまま出力する代わりに、CICADA は AI に構造化された事前インデックス済みの情報を提供します。
| 従来の検索 | CICADA |
|---|---|
| Grep はファイル全体を出力 | シグネチャと呼び出し箇所のみを返す |
| エイリアスされたインポートを見落とす | すべての参照タイプを追跡 |
| 意味を理解しない | 「authentication」と尋ねると、キーワード検索で verify_credentials が見つかる |
利用できる機能
- AST レベルのインデックス作成 – シグネチャ、仕様、ドキュメントを含むモジュール/関数/クラスの定義
- 17 以上の言語をサポート – Elixir、Python、TypeScript、JavaScript、Rust、Go、Java、Kotlin、Scala、C/C++、Ruby、C#、Visual Basic、Dart、PHP、Erlang(ベータ版)
- 呼び出し箇所を完全に追跡 – サポートするすべての言語で、エイリアス、インポート、動的参照を追跡
- セマンティック検索 – キーワード抽出または埋め込み表現(Ollama 統合)で、概念からコードを検索
- Git と PR による出典情報 – コードの内容だけでなく、コードが存在する理由を明らかにする
- 依存関係の分析 – 双方向の追跡(これを呼び出すもの、これが呼び出すもの)
- 言語の自動検出 – 複数言語が混在するコードベースでもシームレスに動作
インストール
# 1. Install uv (if needed)
# curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install cicada-mcp
# In your repo
cicada claude # or: cicada cursor, cicada vs, cicada gemini, cicada codex, cicada opencode, cicada zed
uvx cicada-mcp claude # or cursor, vs
または
claude mcp add cicada uvx cicada-mcp
gemini mcp add cicada uvx cicada-mcp
codex mcp add cicada uvx cicada-mcp
kimi mcp add --transport stdio cicada -- cicada-mcp
エディターに組み込まれた MCP 管理機能を使って CICADA をインストールします。
インストール後に使用できるコマンド:
cicada [claude|cursor|vs|gemini|codex|opencode|zed]- プロジェクトごとの対話型セットアップをワンコマンドで実行しますcicada-mcp- MCP サーバー(エディターによって自動起動されます)cicada serve- すべての MCP ツールに HTTP でアクセスするための REST API サーバーを起動しますcicada status- インデックスの状態、PR インデックス、リンクの状態、エージェントファイル、MCP 設定を表示しますcicada stats [repo]- 使用統計(ツールの呼び出し回数、トークン数、実行時間)を表示しますcicada watch- ファイルの変更を監視し、自動的に再インデックスしますcicada index- カスタムオプション(-f/--force、--keywords、--embeddings、--watch)を指定してコードを再インデックスしますcicada index-pr- PR の帰属を追跡するためにプルリクエストをインデックスしますcicada run [tool]- 7 つの MCP ツールのいずれかを CLI から直接実行しますcicada agents install- Claude Code のエージェントを./.claude/ディレクトリにインストールしますcicada link [parent_dir]- 現在のリポジトリを既存のインデックスにリンクしますcicada clean- フォルダーから cicada の統合とすべての設定を完全に削除します
アシスタントに次のように尋ねます:
# Elixir
"Show me the functions in MyApp.User"
"Where is authenticate/2 called?"
# Python
"Show me the AuthService class methods"
"Where is login() used in the codebase?"
# Both languages
"Find code related to API authentication"
プライバシーとセキュリティ
- 100%ローカル: 解析とインデックス作成はお使いのマシン上で行われ、外部からアクセスされることはありません。
- テレメトリーなし: CICADA は使用状況データやテレメトリーを収集しません。
- 読み取り専用ツール: MCP エンドポイントはインデックスを読み取るだけで、リポジトリを変更することはできません。
- GitHub へのアクセスは任意: PR 機能は
ghと既存の OAuth トークンを使用します。 - データの配置:
リポジトリに追加されるのは、エディター設定(~/.cicada/projects/<repo_hash>/ ├─ index.json # modules, functions, call sites, metadata ├─ config.yaml # indexing options + mode ├─ hashes.json # incremental indexing cache └─ pr_index.json # optional PR metadata + reviews.mcp.json、.cursor/mcp.json、.vscode/settings.json、.gemini/settings.json、.codex/mcp.json、または.opencode.json)だけです。
開発者向け
CICADA をエディターに一度組み込めば、すべてのアシスタントセッションでコンテキストを利用できます。
インストールと設定
cd /path/to/project
cicada claude # or cicada cursor / cicada vs / cicada gemini / cicada codex / cicada opencode / cicada zed
PR の帰属情報を有効にする(任意)
brew install gh # or apt install gh
gh auth login
cicada index-pr . # incremental
cicada index-pr . --clean # full rebuild
「42 行目を導入した PR はどれですか?」や「billing.ex についてレビュー担当者は何と言っていましたか?」といった質問ができるようになります。
ウォッチモードによる自動再インデックス
--watch フラグを付けて MCP サーバーを起動すると、ファイルの変更時に自動で再インデックスできます。
** .mcp.json**
{
"mcpServers": {
"cicada": {
"command": "cicada-mcp",
"args": ["--watch"],
"env": {
"CICADA_CONFIG_DIR": "/home/user/.cicada/projects/<hash>"
}
}
}
}
ウォッチモードが有効な場合:
- 別プロセスが
.ex、.exs(Elixir)、.py(Python)ファイルの変更を監視します - 変更は自動的に再インデックスされます(増分処理のため高速です)
- 2 秒のデバウンスにより、短時間に編集が続いても過剰な再インデックスを防ぎます
- MCP サーバーの停止時に、ウォッチプロセスも自動的に停止します
- 除外ディレクトリ:
deps、_build、node_modules、.git、assets、priv、.venv、venv
CLI チートシート
注: 言語は自動検出されます。CICADA は Elixir(mix.exs)および Python(pyproject.toml)のプロジェクトを自動的に検出します。
| コマンド | 目的 | 実行するタイミング |
|---|---|---|
cicada claude | MCP の設定と増分再インデックス | 初回セットアップ後、ローカルで変更した後 |
cicada status | インデックスの状態、リンクの状態、エージェントファイルを確認 | セットアップ後、トラブルシューティング時 |
cicada stats | 使用統計とトークン指標を表示 | 月次レビュー時、最適化時 |
cicada watch | ファイルを監視し、変更時に自動再インデックス | 開発を進めている間 |
cicada index --keywords . | キーワードインデックスを使って再構築 | 大規模なリファクタリング後、またはキーワードモードを有効にした後 |
cicada index --embeddings . | 埋め込み(セマンティック検索)を使って再構築 | Ollama を利用したセマンティック分析を行いたいとき |
cicada index-pr . | PR のメタデータとレビューを同期 | 新しい PR がマージされた後 |
トラブルシューティング
「インデックスファイルが見つかりません」
まずインデクサーを実行してください:
cicada index /path/to/project
インデックス作成が正常に完了したことを確認してください。~/.cicada/projects/<hash>/index.json があるか確認します。
「モジュールが見つかりません」
コード内に記載されている正確なモジュール名を使用してください(例:User ではなく MyApp.User)。
モジュールを最近追加した場合は、再度インデックスを作成してください:
cicada index .
MCP サーバーに接続できない
トラブルシューティングのチェックリスト:
-
設定ファイルが存在することを確認します:
# For Claude Code ls -la .mcp.json # For Cursor ls -la .cursor/mcp.json # For VS Code ls -la .vscode/settings.json -
パスが絶対パスであることを確認します:
cat .mcp.json # Should contain: /absolute/path/to/project # Not: ./project or ../project -
インデックスが存在することを確認します:
ls -la ~/.cicada/projects/ # Should show directory for your project -
エディターを完全に再起動します(ウィンドウの再読み込みだけでは不十分です)
-
エディターの MCP ログを確認します:
- Claude Code:--debug
- Cursor:Settings → MCP → View Logs
- VS Code:出力パネル → MCP
PR 機能が動作しない
GitHub CLI をセットアップします:
# Install GitHub CLI
brew install gh # macOS
sudo apt install gh # Ubuntu
# or visit https://cli.github.com/
# Authenticate
gh auth login
# Index PRs
cicada index-pr
よくある問題:
- 「PR インデックスが見つかりません」→
cicada index-pr .を実行します - 「GitHub リポジトリではありません」→ リポジトリに GitHub リモートが設定されていることを確認します
- インデックス作成が遅い → 初回のインデックス作成ではすべての PR を取得します。以降の実行は差分のみが対象です
- レート制限 → GitHub API にはレート制限があります。制限に達した場合は、しばらく待ってから再試行してください
強制的に再構築します:
cicada index-pr --clean
キーワード検索が動作しない
エラー:「キーワード検索を利用できません」
**原因:**キーワード抽出を行わずにインデックスが作成されました。
解決方法:
# Re-index with keyword extraction
cicada index . # or --keywords
確認方法:
cat ~/.cicada/projects/<hash>/config.yaml
# Should show:
# indexing:
# mode: keywords
詳しくは、PR のインデックス作成、差分インデックス作成をご覧ください。
Python のインデックス作成
要件:
- Node.js(scip-python インデクサー用)
- pyproject.toml を含む Python プロジェクト
初回セットアップ: CICADA は初回のインデックス作成時に、npm 経由で scip-python を自動的にインストールします。完了までに 1 分ほどかかる場合があります。
既知の制限事項(ベータ版):
- 初回のインデックス作成は Elixir より遅くなる場合があります(SCIP 生成のため)
- 大規模な仮想環境(.venv)は自動的に除外されます
- 一部の動的な Python パターンは取得されない場合があります
パフォーマンスのヒント:
# Ensure .venv is excluded
echo "/.venv/" >> .gitignore
# Use keywords mode for quickest indexing
cicada index --keywords .
問題を報告する:「Python」ラベルを付けて GitHub Issues に報告してください
AI アシスタント向け
CICADA には、Elixir、Python、Erlang のコードベースを効率的に調査するために設計された、用途を絞った 7 つの MCP ツールが用意されています。
🧭 どのツールを使うべきですか?
| 必要なこと | ツール | 備考 |
|---|---|---|
| 調査を始める | query | 🚀 まずはこちら - キーワード/パターンとフィルター(スコープ、最近の項目、パス)を使ったスマートな探索 |
| モジュールの API 全体を確認する | search_module | 関数、シグネチャ、仕様、ドキュメント。双方向分析には what_calls_it/what_it_calls を使用します |
| 関数の使用箇所を見つける | search_function | 定義とすべての呼び出し箇所。ワイルドカード(*)と OR(|)パターンに対応しています |
| Git 履歴を追跡する | git_history | blame、コミット、PR、関数の変遷を扱う統合ツールです(従来の 4 つのツールを置き換えます) |
| 結果を詳しく調べる | expand_result | クエリ結果からモジュールまたは関数を自動的に展開します |
| 高度なインデックスクエリ | query_jq | 上級ユーザー向けのカスタム jq クエリ |
これらのツールの実際の使い方を見たいですか? プロのヒントや実際のシナリオを含むワークフローの完全な例をご覧ください。
コアツール
query - スマートなコード検索(最初に使うツール)
- キーワードとパターンを自動判別します
- フィルター:
scope(public/private)、recent(過去14日間)、filter_type(モジュール/関数)、match_source(ドキュメント/文字列) - 次のステップを提案するスマートなスニペットを返します
- 場所で絞り込むには
path_patternを使います
search_module - モジュールの詳細分析
- 関数、シグネチャ、仕様、ドキュメントなど、API 全体を表示します
- Python の場合:メソッド数とシグネチャを含むクラスを表示します
- Elixir の場合:アリティ表記で関数を表示します
- 双方向分析:
what_calls_it=true→ このモジュールを使っている箇所を表示します(影響分析)what_it_calls=true→ このモジュールが依存する対象を表示します
- ワイルドカード(Elixir:
MyApp.*、Python:api.handlers.*)と OR パターン(MyApp.User|MyApp.Post)に対応しています - 可視性(public/private/all)で絞り込みます
search_function - 関数の使用状況の追跡
- 定義とすべての呼び出し箇所を検索します
what_calls_it=true(デフォルト)→ 呼び出し元をすべて表示しますwhat_it_calls=true→ すべての依存先を表示しますinclude_usage_examples=trueでコード例を含めますusage_type(source、tests、all)で絞り込みます
Git 履歴(統合ツール)
git_history - すべての Git 操作を1つのツールで実行します
- 1行:
git_history("file.ex", start_line=42)→ blame + PR - 行範囲:
git_history("file.ex", start_line=40, end_line=60)→ blame をグループ化 - 関数の追跡:
git_history("file.ex", function_name="create_user")→ 変更の推移 - ファイルの履歴:
git_history("file.ex")→ すべての PR/コミット - 期間の絞り込み:
recent=true(14日間)、recent=false(14日より前)、recent=null(すべて) - 作成者で絞り込み:
author="john" - 利用可能な場合、PR インデックスを自動的に統合します
その他のツール
expand_result - クエリ結果を掘り下げて確認します
- モジュールか関数かを自動判別します
- 使用例を含む詳細情報をすべて表示します
- 含める項目(コード、依存先、呼び出し元)を設定できます
search_moduleとsearch_functionを便利に使えるラッパーです
query_jq - 高度なインデックスクエリ
- インデックスに対して jq クエリを直接実行します
| schemaでスキーマを確認できます- コンパクト出力(デフォルト)または整形出力
- 大きな結果向けのサンプルモード
詳細なパラメーターと出力形式:MCP_TOOLS_REFERENCE.md。
トークンに配慮した応答
すべてのツールはファイル全体ではなく、構造化された Markdown/JSON のスニペット(シグネチャ、呼び出し箇所、PR メタデータ)を返すため、プロンプトを簡潔に保てます。
v0.5.1 の新機能: トークンの使用量を最小限に抑えるため、すべてのツールでコンパクト出力がデフォルトになりました。詳細なドキュメントや仕様を含む出力には、verbose=true を使います。
ドキュメント
- Codebook – 機能の完全なリファレンスとユーザーガイド
- Workflows – ツールを連携させる実践的な例
- Installation – すべてのエディター向けのステップバイステップのセットアップ手順
- Contributing – 開発ガイドラインとアーキテクチャ
- CHANGELOG.md – リリースノート
詳細情報:
- キーワード抽出分析 – セマンティック検索の内部動作
- PR のインデックス作成 – GitHub 統合の詳細
- MCP ツール呼び出しのベンチマーク – トークン/時間のベンチマーク
- ツールの見つけやすさ – UX 改善の調査
ロードマップ
現在の状況
本番環境対応済み:
- ✅ Elixir(tree-sitter)
- ✅ Python(SCIP)
- ✅ TypeScript(SCIP)
- ✅ JavaScript(SCIP)
- ✅ Rust(SCIP)
ベータ版:
- 🚧 Erlang(tree-sitter)
- 🚧 Go(SCIP)
- 🚧 Java/Kotlin/Scala(SCIP)
- 🚧 C/C++(SCIP)
- 🚧 Ruby(SCIP)
- 🚧 C#/Visual Basic(SCIP)
- 🚧 Dart(SCIP)
- 🚧 PHP(SCIP)
代替ツールとの比較
| 機能 | CICADA | Serena | Codicil(Elixir 専用) |
|---|---|---|---|
| 分析方法 | SCIP(静的インデックス) | LSP(リアルタイムサーバー) | LLM の要約+埋め込み |
| コード編集 | ❌ | ✅ | ❌ |
| Git コンテキスト | ✅ PR 履歴、blame、進化 | ❌ | ❌ |
| リソース使用量 | 低(ディスクから読み込み) | 高(サーバープロセスを常時実行) | 中(API 呼び出し) |
| プライバシー | 100% ローカル | 100% ローカル | 外部 LLM API が必要 |
| セマンティック検索 | ローカルの Ollama またはキーワード | ❌ | OpenAI/Anthropic の埋め込み |
| 呼び出しグラフ | エイリアス解決に対応した双方向 | LSP ベース | ❌ |
CICADA を選ぶ場合: 豊富な Git コンテキスト(PR の帰属、blame、関数の進化の追跡)と効率的なトークン使用量を備えた、ローカル優先の運用を求める場合です。
Serena を選ぶ場合: LSP によるコード編集機能が必要で、より多くのリソース使用量を許容できる場合です。
Codicil を選ぶ場合: Elixir プロジェクトで、LLM を活用したセマンティックな要約を求める場合です(Elixir 専用)。
コントリビューション
git clone https://github.com/wende/cicada.git
cd cicada
uv sync
pytest
PR を送信する前に、以下を行ってください。
black cicada testsを実行する- テストとカバレッジが通ることを確認する(
pytest --cov=cicada --cov-report=term-missing) - 動作に変更がある場合は、ドキュメントを更新する
以下に関する issue/PR を歓迎します。
- 新しい言語文法
- ツール出力の改善
- オンボーディング用ドキュメントとチュートリアルの改善
ライセンス
MIT – LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。