The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Cicada listing page.
mcp-name: io.github.wende/cicada
Context compaction for AI code assistants – Give your AI structured, token-efficient access to 17+ languages including Elixir, Python, TypeScript, JavaScript, Rust, and more.
Up to 50% less waiting · Up to 70% less tokens · Up to 99% less explanations to do Tighter context = Better Quality
Quick Install · Security · Developers · AI Assistants · Docs
The core problem: AI code assistants waste context on blind searches. Grep dumps entire files when you only need a function signature, leaving less room for actual reasoning.
Instead of raw text dumps, CICADA gives your AI structured, pre-indexed knowledge:
| Traditional Search | CICADA |
|---|---|
| Grep dumps entire files | Returns only signatures + call sites |
| Misses aliased imports | Tracks all reference types |
| No semantic understanding | Keyword search finds verify_credentials when you ask for "authentication" |
or
Uses your editor's built-in MCP management to install CICADA.
Available commands after installation:
cicada [claude|cursor|vs|gemini|codex|opencode|zed] - One-command interactive setup per projectcicada-mcp - MCP server (auto-started by editor)cicada serve - Start REST API server for HTTP access to all MCP toolscicada status - Show index status, PR index, link status, agent files, MCP configscicada stats [repo] - Display usage statistics (tool calls, tokens, execution times)cicada watch - Watch for file changes and automatically reindexcicada index - Re-index code with custom options (-f/--force, --keywords, --embeddings, --watch)cicada index-pr - Index pull requests for PR attributioncicada run [tool] - Execute any of the 7 MCP tools directly from CLIcicada agents install - Install Claude Code agents to ./.claude/ directorycicada link [parent_dir] - Links current repository to an existing indexcicada clean - Completely removes cicada integration from your folder as well as all settingsAsk your assistant:
gh and your existing OAuth token..mcp.json, .cursor/mcp.json, .vscode/settings.json, .gemini/settings.json, .codex/mcp.json, or .opencode.json).Wire CICADA into your editor once, and every assistant session inherits the context.
Unlocks questions like "Which PR introduced line 42?" or "What did reviewers say about billing.ex?"
Enable automatic reindexing when files change by starting the MCP server with the --watch flag:
** .mcp.json**
When watch mode is enabled:
.ex, .exs (Elixir) and .py (Python) files for changesdeps, _build, node_modules, .git, assets, priv, .venv, venvNote: Language detection is automatic – CICADA detects Elixir (mix.exs) and Python (pyproject.toml) projects automatically.
| Command | Purpose | Run When |
|---|---|---|
cicada claude | Configure MCP + incremental re-index | First setup, after local changes |
cicada status | Check index health, link status, agent files | After setup, troubleshooting |
cicada stats | View usage statistics and token metrics | Monthly reviews, optimization |
cicada watch | Monitor files and auto-reindex on changes | During active development |
cicada index --keywords . | Rebuild with keyword indexing | After large refactors or enabling keywords mode |
cicada index --embeddings . | Rebuild with embeddings (semantic search) | When you want Ollama-powered semantic analysis |
cicada index-pr . | Sync PR metadata/reviews | After new PRs merge |
Run the indexer first:
Ensure indexing completed successfully. Check for ~/.cicada/projects/<hash>/index.json.
Use the exact module name as it appears in code (e.g., MyApp.User, not User).
If module was recently added, re-index:
Troubleshooting checklist:
Verify configuration file exists:
Check paths are absolute:
Ensure index exists:
Restart editor completely (not just reload window)
Check editor MCP logs:
Setup GitHub CLI:
Common issues:
cicada index-pr .Force rebuild:
Error: "Keyword search not available"
Cause: Index was built without keyword extraction.
Solution:
Verify:
More detail: PR Indexing, Incremental Indexing.
Requirements:
First-time setup: CICADA automatically installs scip-python via npm on first index. This may take a minute.
Known limitations (Beta):
Performance tips:
Report issues: GitHub Issues with "Python" label
CICADA ships 7 focused MCP tools designed for efficient code exploration across Elixir, Python, and Erlang codebases.
| Need | Tool | Notes |
|---|---|---|
| Start exploring | query | 🚀 START HERE - Smart discovery with keywords/patterns + filters (scope, recent, path) |
| View a module's complete API | search_module | Functions, signatures, specs, docs. Use what_calls_it/what_it_calls for bidirectional analysis |
| Find where a function is used | search_function | Definition + all call sites. Supports wildcards (*) and OR (|) patterns |
| Track git history | git_history | Unified tool: blame, commits, PRs, function evolution (replaces 4 legacy tools) |
| Drill down into results | expand_result | Auto-expands modules or functions from query results |
| Advanced index queries | query_jq | Custom jq queries for power users |
Want to see these tools in action? Check out Complete Workflow Examples with pro tips and real-world scenarios.
query - Smart code discovery (your starting point)
scope (public/private), recent (last 14 days), filter_type (modules/functions), match_source (docs/strings)path_pattern to filter by locationsearch_module - Deep module analysis
what_calls_it=true → See who uses this module (impact analysis)what_it_calls=true → See what this module depends onMyApp.*, Python: api.handlers.*) and OR patterns (MyApp.User|MyApp.Post)search_function - Function usage tracking
what_calls_it=true (default) → See all callerswhat_it_calls=true → See all dependenciesinclude_usage_examples=trueusage_type: source, tests, or allgit_history - All git operations in one tool
git_history("file.ex", start_line=42) → blame + PRgit_history("file.ex", start_line=40, end_line=60) → grouped blamegit_history("file.ex", function_name="create_user") → evolutiongit_history("file.ex") → all PRs/commitsrecent=true (14d), recent=false (>14d), recent=null (all)author="john"expand_result - Drill down from query results
query_jq - Advanced index queries
| schemaDetailed parameters + output formats: MCP_TOOLS_REFERENCE.md.
All tools return structured Markdown/JSON snippets (signatures, call sites, PR metadata) instead of full files, keeping prompts lean.
New in v0.5.1: All tools now use compact output by default to minimize token usage. Use verbose=true for detailed output with full docs and specs.
Deep Dives:
Production Ready:
Beta:
| Feature | CICADA | Serena | Codicil (Elixir-only) |
|---|---|---|---|
| Analysis Method | SCIP (static index) | LSP (real-time server) | LLM summaries + embeddings |
| Code Editing | ❌ | ✅ | ❌ |
| Git Context | ✅ PR history, blame, evolution | ❌ | ❌ |
| Resource Usage | Low (read from disk) | High (persistent server processes) | Medium (API calls) |
| Privacy | 100% local | 100% local | Requires external LLM APIs |
| Semantic Search | Local Ollama or keywords | ❌ | OpenAI/Anthropic embeddings |
| Call Graph | Bidirectional with alias resolution | LSP-based | ❌ |
When to choose CICADA: You want local-first operation with rich git context (PR attribution, blame, function evolution tracking) and efficient token usage.
When to choose Serena: You need code editing capabilities through LSP and can accept higher resource usage.
When to choose Codicil: You have an Elixir project and prefer LLM-powered semantic summaries (Elixir-only).
Before submitting a PR:
black cicada testspytest --cov=cicada --cov-report=term-missing)We welcome issues/PRs for:
MIT – see LICENSE.
Stop wasting context on blind searches. Give your AI CICADA.