CICADA

io.github.wendePublished by GitHub account wendev0.6.4Updated Oct 24, 2026

Code intelligence MCP server for 17+ programming languages.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

CICADA is a local code-intelligence MCP server that indexes Elixir, Python and other codebases so an assistant can look up modules, functions, call sites and…

What you can do
  • Search the index by keyword or pattern, with filters for scope, recency, path and result type
  • Inspect a module's API: functions, signatures, specs, docs, plus what calls it and what it calls
  • Find function definitions and all call sites, optionally with usage examples and test filtering
  • Trace git history: blame for lines or ranges, commits, PRs and function evolution
  • Drill into query results and run custom jq queries against the index
When to use it
Useful when you want an assistant to navigate a larger or polyglot repository without dumping whole files into context, and when git blame or PR attribution matters. The author has discontinued the project and advises against using it or similar code-intelligence tools.
Requirements
Runs locally over stdio, installed with uv tool install or run on demand via uvx. Python indexing needs Node.js, since the scip-python indexer is installed via npm on first index. The repository must be indexed first. Optional PR features need the GitHub CLI (gh) and an authenticated gh login. Optional semantic search uses a local Ollama setup.
Before you install
The README marks the project discontinued and recommends against using it. Setup writes editor MCP config files into the repository and index data under the user's home directory. Optional PR indexing uses the existing GitHub CLI OAuth token and is subject to GitHub API rate limits. Tools are described as read-only against the index.

Installation

In SourceWeft

  1. Open CICADA in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Image]

CICADA

[!WARNING] ⚠️ Disclaimer — Today's AI agents operate completely differently from when this project was conceived. In current benchmarks, using a code intelligence tool yields little to no advantage for frontier models. CICADA is discontinued, and I'd advise against using it or any other "code intelligence" tool.


Code Intelligence: Contextual Analysis, Discovery, and 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

[Python Version] [License: MIT] [codecov] [MCP Compatible]

[Elixir Support] [Python Support] [TypeScript Support] [JavaScript Support] [Rust Support] [+12 More]

[Install MCP Server]

Quick Install · Security · Developers · AI Assistants · Docs


Why CICADA?

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.

The Context Compaction Approach

Instead of raw text dumps, CICADA gives your AI structured, pre-indexed knowledge:

Traditional SearchCICADA
Grep dumps entire filesReturns only signatures + call sites
Misses aliased importsTracks all reference types
No semantic understandingKeyword search finds verify_credentials when you ask for "authentication"

What You Get

  • AST-level indexing – Module/function/class definitions with signatures, specs, docs
  • 17+ language support – Elixir, Python, TypeScript, JavaScript, Rust, Go, Java, Kotlin, Scala, C/C++, Ruby, C#, Visual Basic, Dart, PHP, Erlang (beta)
  • Complete call-site tracking – Aliases, imports, dynamic references across all supported languages
  • Semantic search – Find code by concept with keyword extraction or embeddings (Ollama integration)
  • Git + PR attribution – Surface why code exists, not just what
  • Dependency analysis – Bidirectional tracking (what calls this, what does this call)
  • Automatic language detection – Works seamlessly across polyglot codebases

Install

bash
# 1. Install uv (if needed)# curl -LsSf https://astral.sh/uv/install.sh | shuv tool install cicada-mcp
# In your repocicada 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).
bash
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 project
  • cicada-mcp - MCP server (auto-started by editor)
  • cicada serve - Start REST API server for HTTP access to all MCP tools
  • cicada status - Show index status, PR index, link status, agent files, MCP configs
  • cicada stats [repo] - Display usage statistics (tool calls, tokens, execution times)
  • cicada watch - Watch for file changes and automatically reindex
  • cicada index - Re-index code with custom options (-f/--force, --keywords, --embeddings, --watch)
  • cicada index-pr - Index pull requests for PR attribution
  • cicada run [tool] - Execute any of the 7 MCP tools directly from CLI
  • cicada agents install - Install Claude Code agents to ./.claude/ directory
  • cicada link [parent_dir] - Links current repository to an existing index
  • cicada clean - Completely removes cicada integration from your folder as well as all settings

Ask 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"

Privacy & Security

  • 100% local: parsing + indexing happen on your machine; no external access.
  • No telemetry: CICADA doesn't collect usage or any telemetry.
  • Read-only tools: MCP endpoints only read the index; they can't change your repo.
  • Optional GitHub access: PR features rely on gh and your existing OAuth token.
  • Data layout:
    ~/.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
    Your repo only gains an editor config (.mcp.json, .cursor/mcp.json, .vscode/settings.json, .gemini/settings.json, .codex/mcp.json, or .opencode.json).

For Developers

Wire CICADA into your editor once, and every assistant session inherits the context.

Install & Configure

bash
cd /path/to/projectcicada claude   # or cicada cursor / cicada vs / cicada gemini / cicada codex / cicada opencode / cicada zed

Enable PR Attribution (optional)

bash
brew install gh    # or apt install ghgh auth logincicada index-pr .     # incrementalcicada index-pr . --clean   # full rebuild

Unlocks questions like "Which PR introduced line 42?" or "What did reviewers say about billing.ex?"

Automatic Re-indexing with Watch Mode

Enable automatic reindexing when files change by starting the MCP server with the --watch flag:

** .mcp.json**

json
{  "mcpServers": {    "cicada": {      "command": "cicada-mcp",      "args": ["--watch"],      "env": {        "CICADA_CONFIG_DIR": "/home/user/.cicada/projects/<hash>"      }    }  }}

When watch mode is enabled:

  • A separate process monitors .ex, .exs (Elixir) and .py (Python) files for changes
  • Changes are automatically reindexed (incremental, fast)
  • 2-second debounce prevents excessive reindexing during rapid edits
  • The watch process stops automatically when the MCP server stops
  • Excluded directories: deps, _build, node_modules, .git, assets, priv, .venv, venv

CLI Cheat Sheet

Note: Language detection is automatic – CICADA detects Elixir (mix.exs) and Python (pyproject.toml) projects automatically.

CommandPurposeRun When
cicada claudeConfigure MCP + incremental re-indexFirst setup, after local changes
cicada statusCheck index health, link status, agent filesAfter setup, troubleshooting
cicada statsView usage statistics and token metricsMonthly reviews, optimization
cicada watchMonitor files and auto-reindex on changesDuring active development
cicada index --keywords .Rebuild with keyword indexingAfter 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/reviewsAfter new PRs merge

Troubleshooting

"Index file not found"

Run the indexer first:

bash
cicada index /path/to/project

Ensure indexing completed successfully. Check for ~/.cicada/projects/<hash>/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:

bash
cicada index .
MCP Server Won't Connect

Troubleshooting checklist:

  1. Verify configuration file exists:

    bash
    # For Claude Codels -la .mcp.json
    # For Cursorls -la .cursor/mcp.json
    # For VS Codels -la .vscode/settings.json
  2. Check paths are absolute:

    bash
    cat .mcp.json# Should contain: /absolute/path/to/project# Not: ./project or ../project
  3. Ensure index exists:

    bash
    ls -la ~/.cicada/projects/# Should show directory for your project
  4. Restart editor completely (not just reload window)

  5. Check editor MCP logs:

    • Claude Code: --debug
    • Cursor: Settings → MCP → View Logs
    • VS Code: Output panel → MCP
PR Features Not Working

Setup GitHub CLI:

bash
# Install GitHub CLIbrew install gh  # macOSsudo apt install gh  # Ubuntu# or visit https://cli.github.com/
# Authenticategh auth login
# Index PRscicada index-pr

Common issues:

  • "No PR index found" → Run cicada index-pr .
  • "Not a GitHub repository" → Ensure repo has GitHub remote
  • Slow indexing → First-time indexing fetches all PRs; subsequent runs are incremental
  • Rate limiting → GitHub API has rate limits; wait and retry if you hit limits

Force rebuild:

bash
cicada index-pr --clean
Keyword Search Not Working

Error: "Keyword search not available"

Cause: Index was built without keyword extraction.

Solution:

bash
# Re-index with keyword extractioncicada index .  # or --keywords

Verify:

bash
cat ~/.cicada/projects/<hash>/config.yaml# Should show:# indexing:#   mode: keywords

More detail: PR Indexing, Incremental Indexing.

Python Indexing

Requirements:

  • Node.js (for scip-python indexer)
  • Python project with pyproject.toml

First-time setup: CICADA automatically installs scip-python via npm on first index. This may take a minute.

Known limitations (Beta):

  • First indexing may be slower than Elixir (SCIP generation step)
  • Large virtual environments (.venv) are automatically excluded
  • Some dynamic Python patterns may not be captured

Performance tips:

bash
# Ensure .venv is excludedecho "/.venv/" >> .gitignore
# Use keywords mode for quickest indexingcicada index --keywords .

Report issues: GitHub Issues with "Python" label


For AI Assistants

CICADA ships 7 focused MCP tools designed for efficient code exploration across Elixir, Python, and Erlang codebases.

🧭 Which Tool Should You Use?

NeedToolNotes
Start exploringquery🚀 START HERE - Smart discovery with keywords/patterns + filters (scope, recent, path)
View a module's complete APIsearch_moduleFunctions, signatures, specs, docs. Use what_calls_it/what_it_calls for bidirectional analysis
Find where a function is usedsearch_functionDefinition + all call sites. Supports wildcards (*) and OR (|) patterns
Track git historygit_historyUnified tool: blame, commits, PRs, function evolution (replaces 4 legacy tools)
Drill down into resultsexpand_resultAuto-expands modules or functions from query results
Advanced index queriesquery_jqCustom jq queries for power users

Want to see these tools in action? Check out Complete Workflow Examples with pro tips and real-world scenarios.

Core Tools

query - Smart code discovery (your starting point)

  • Automatically detects keywords vs patterns
  • Filters: scope (public/private), recent (last 14 days), filter_type (modules/functions), match_source (docs/strings)
  • Returns snippets with smart next-step suggestions
  • Use path_pattern to filter by location

search_module - Deep module analysis

  • View complete API: functions, signatures, specs, docs
  • For Python: Shows classes with method counts and signatures
  • For Elixir: Shows functions with arity notation
  • Bidirectional analysis:
    • what_calls_it=true → See who uses this module (impact analysis)
    • what_it_calls=true → See what this module depends on
  • Supports wildcards (Elixir: MyApp.*, Python: api.handlers.*) and OR patterns (MyApp.User|MyApp.Post)
  • Filter by visibility (public/private/all)

search_function - Function usage tracking

  • Find definitions and all call sites
  • what_calls_it=true (default) → See all callers
  • what_it_calls=true → See all dependencies
  • Include code examples with include_usage_examples=true
  • Filter by usage_type: source, tests, or all

Git History (Unified Tool)

git_history - All git operations in one tool

  • Single line: git_history("file.ex", start_line=42) → blame + PR
  • Line range: git_history("file.ex", start_line=40, end_line=60) → grouped blame
  • Function tracking: git_history("file.ex", function_name="create_user") → evolution
  • File history: git_history("file.ex") → all PRs/commits
  • Time filtering: recent=true (14d), recent=false (>14d), recent=null (all)
  • Author filtering: author="john"
  • Automatic PR index integration when available

Additional Tools

expand_result - Drill down from query results

  • Auto-detects module vs function
  • Shows complete details with usage examples
  • Configure what to include: code, dependencies, callers
  • Convenient wrapper around search_module and search_function

query_jq - Advanced index queries

  • Direct jq queries against the index
  • Schema discovery with | schema
  • Compact (default) or pretty output
  • Sample mode for large results

Detailed parameters + output formats: MCP_TOOLS_REFERENCE.md.

Token-Friendly Responses

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.



Documentation

Deep Dives:


Roadmap

Current Status

Production Ready:

  • ✅ Elixir (tree-sitter)
  • ✅ Python (SCIP)
  • ✅ TypeScript (SCIP)
  • ✅ JavaScript (SCIP)
  • ✅ Rust (SCIP)

Beta:

  • 🚧 Erlang (tree-sitter)
  • 🚧 Go (SCIP)
  • 🚧 Java/Kotlin/Scala (SCIP)
  • 🚧 C/C++ (SCIP)
  • 🚧 Ruby (SCIP)
  • 🚧 C#/Visual Basic (SCIP)
  • 🚧 Dart (SCIP)
  • 🚧 PHP (SCIP)

Comparison to Alternatives

FeatureCICADASerenaCodicil (Elixir-only)
Analysis MethodSCIP (static index)LSP (real-time server)LLM summaries + embeddings
Code Editing❌✅❌
Git Context✅ PR history, blame, evolution❌❌
Resource UsageLow (read from disk)High (persistent server processes)Medium (API calls)
Privacy100% local100% localRequires external LLM APIs
Semantic SearchLocal Ollama or keywords❌OpenAI/Anthropic embeddings
Call GraphBidirectional with alias resolutionLSP-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).


Contributing

bash
git clone https://github.com/wende/cicada.gitcd cicadauv syncpytest

Before submitting a PR:

  • Run black cicada tests
  • Ensure tests + coverage pass (pytest --cov=cicada --cov-report=term-missing)
  • Update docs if behaviour changes

We welcome issues/PRs for:

  • New language grammars
  • Tool output improvements
  • Better onboarding docs and tutorials

License

MIT – see LICENSE.

Stop wasting context on blind searches. Give your AI CICADA.

Get Started · Report Issues

Source: README.md at commit 5fbd626

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.6.4LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts