CICADA

io.github.wende由 GitHub 账号 wende 发布v0.6.4更新于 Oct 24, 2026

Code intelligence MCP server for 17+ programming languages.

已验证STDIO仅桌面知识与记忆开发者工具

概览

AI 生成的概览

CICADA 是一个本地代码智能 MCP 服务器,为代码库建立索引,让助手查询模块、函数、调用点和 Git 历史。

可以做什么
  • 按关键词或模式检索索引,可按可见性、时间、路径和结果类型过滤
  • 查看模块 API:函数、签名、规格、文档,以及谁调用它、它调用谁
  • 查找函数定义与全部调用点,可选附带用法示例并按测试代码过滤
  • 追踪 Git 历史:单行或区间的 blame、提交、PR 以及函数演进
  • 展开查询结果,并对索引执行自定义 jq 查询
适用场景
适合希望助手在较大或多语言仓库中导航、而不把整份文件塞进上下文的场景,也适合需要 blame 或 PR 溯源时。作者已停止维护该项目,并建议不要使用它或类似的代码智能工具。
运行要求
以 stdio 在本地运行,可用 uv tool install 安装或用 uvx 按需运行。Python 索引需要 Node.js,因为首次索引时会通过 npm 安装 scip-python。仓库需先建立索引。可选的 PR 功能需要 GitHub CLI(gh)并已登录。可选的语义搜索依赖本地 Ollama。
安装前请注意
README 标明项目已停止维护,并建议不要使用。安装会在仓库中写入编辑器 MCP 配置文件,并在用户主目录下生成索引数据。可选的 PR 索引会使用已有的 GitHub CLI OAuth 令牌,并受 GitHub API 速率限制影响。工具被描述为对索引只读。

安装

在 SourceWeft 中

  1. 打开 控制台中的 CICADA,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[图片]

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

来源:README.md,提交 5fbd626

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.6.4最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分