Context compaction for AI code assistants – Give your AI structured, token-efficient access to 17+ languages including Elixir, Python, TypeScript, JavaScript, Rust, and more. 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
Add this skill
npx mdskills install wende/cicadaComprehensive MCP server delivering AST-level code intelligence across 17+ languages with semantic search and git attribution
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" |
# 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
Try before installing permanently Runs CICADA on demand (worse indexing quality, but zero install).
uvx cicada-mcp claude # or cursor, vs
or
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
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:
# 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"
gh and your existing OAuth token.~/.cicada/projects//
├─ index.json # modules, functions, call sites, metadata
├─ config.yaml # indexing options + mode
├─ hashes.json # incremental indexing cache
└─ pr_index.json # optional PR metadata + reviews
Your repo only gains an editor config (.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.
cd /path/to/project
cicada claude # or cicada cursor / cicada vs / cicada gemini / cicada codex / cicada opencode / cicada zed
brew install gh # or apt install gh
gh auth login
cicada index-pr . # incremental
cicada index-pr . --clean # full rebuild
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**
{
"mcpServers": {
"cicada": {
"command": "cicada-mcp",
"args": ["--watch"],
"env": {
"CICADA_CONFIG_DIR": "/home/user/.cicada/projects/"
}
}
}
}
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 |
"Index file not found"
Run the indexer first:
cicada index /path/to/project
Ensure indexing completed successfully. Check for ~/.cicada/projects//index.json.
"Module not found"
Use the exact module name as it appears in code (e.g., MyApp.User, not User).
If module was recently added, re-index:
cicada index .
MCP Server Won't Connect
Troubleshooting checklist:
Verify configuration file exists:
# For Claude Code
ls -la .mcp.json
# For Cursor
ls -la .cursor/mcp.json
# For VS Code
ls -la .vscode/settings.json
Check paths are absolute:
cat .mcp.json
# Should contain: /absolute/path/to/project
# Not: ./project or ../project
Ensure index exists:
ls -la ~/.cicada/projects/
# Should show directory for your project
Restart editor completely (not just reload window)
Check editor MCP logs:
PR Features Not Working
Setup 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
Common issues:
cicada index-pr .Force rebuild:
cicada index-pr --clean
Keyword Search Not Working
Error: "Keyword search not available"
Cause: Index was built without keyword extraction.
Solution:
# Re-index with keyword extraction
cicada index . # or --keywords
Verify:
cat ~/.cicada/projects//config.yaml
# Should show:
# indexing:
# mode: keywords
More detail: PR Indexing, Incremental Indexing.
Python 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:
# Ensure .venv is excluded
echo "/.venv/" >> .gitignore
# Use keywords mode for quickest indexing
cicada index --keywords .
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).
git clone https://github.com/wende/cicada.git
cd cicada
uv sync
pytest
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.
Install via CLI
npx mdskills install wende/cicadaCICADA is a free, open-source AI agent skill. Context compaction for AI code assistants – Give your AI structured, token-efficient access to 17+ languages including Elixir, Python, TypeScript, JavaScript, Rust, and more. 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
Install CICADA with a single command:
npx mdskills install wende/cicadaThis downloads the skill files into your project and your AI agent picks them up automatically.
CICADA works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Codex, Gemini Cli, Amp, Roo Code, Goose, Opencode, Trae, Qodo, Command Code. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.