mcpField
C
CICADA

CICADA

本地服务
github.com开发工具405 周前更新

关于 CICADA

CICADA 是一个面向 AI 编码助手的代码智能 MCP 服务,支持 17 种以上编程语言,通过预先建立的结构化索引为 AI 提供更紧凑的代码上下文。项目作者已声明该项目已停止维护,并不建议继续使用。

主要功能

  1. 01基于 AST 的模块、函数与类定义索引
  2. 02支持 17 种以上编程语言
  3. 03追踪别名、导入与调用点引用
  4. 04基于关键词或 Ollama 嵌入的语义搜索
  5. 05结合 Git 与 PR 信息的变更归属查询

适用场景

  1. 01让 AI 助手查看模块的函数签名与调用方
  2. 02在大型多语言代码库中定位函数的全部调用点
  3. 03查询某行代码由哪个 PR 引入

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 query、search_module、search_function、git_history 等 7 个只读代码查询工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wende-cicada": {
"command": "uvx",
"args": [
"cicada-mcp"
]
}
}
}
启动命令uvx cicada-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicicada-mcp0.6.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

README 配图

CICADA

警告

⚠️ 免责声明 — 如今的 AI Agent 与本项目构思之初相比,运作方式已截然不同。在当前基准测试中,使用代码智能工具对前沿模型几乎没有任何帮助。CICADA 已停止维护,我不建议使用它或任何其他“代码智能”工具。


Code Intelligence:Contextual Analysis、Discovery 和 Attribution

面向 AI 代码助手的上下文压缩 – 为你的 AI 提供对 17+ 种语言的结构化、节省 token 的访问能力,包括 Elixir、Python、TypeScript、JavaScript、Rust 等。

减少最多 50% 的等待时间 · 减少最多 70% 的 token · 减少最多 99% 的解释工作 上下文越精简,质量越好

Python Version License: MIT codecov MCP Compatible

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

Install MCP Server

快速安装 · 安全性 · 开发者 · AI 助手 · 文档


为什么选择 CICADA?

核心问题: AI 代码助手在盲目搜索上浪费上下文。当你只需要一个函数签名时,Grep 却会倾倒整个文件,留给实际推理的空间就更少了。

上下文压缩方案

CICADA 不会倾倒原始文本,而是为你的 AI 提供结构化、预先索引的知识:

传统搜索CICADA
Grep 倾倒整个文件仅返回签名和调用位置
遗漏别名导入跟踪所有引用类型
不具备语义理解能力当你询问“身份验证”时,关键词搜索会找到 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
先试用,再决定是否永久安装 按需运行 CICADA(索引质量较差,但无需安装)。
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 - 启动 REST API 服务,通过 HTTP 访问所有 MCP 工具
  • cicada status - 显示索引状态、PR 索引、链接状态、Agent 文件和 MCP 配置
  • cicada stats [repo] - 显示使用统计信息(工具调用、令牌、执行时间)
  • cicada watch - 监视文件变更并自动重新索引
  • cicada index - 使用自定义选项重新索引代码(-f/--force、--keywords、--embeddings、--watch)
  • cicada index-pr - 为 PR 归属信息建立索引
  • cicada run [tool] - 直接通过 CLI 执行任意一个 MCP 工具
  • cicada agents install - 将 Claude Code Agent 安装到 ./.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

这样就能提出“哪一个 PR 引入了第 42 行?”或“审查者对 billing.ex 有什么看法?”之类的问题。

使用监视模式自动重新索引

启动 MCP 服务时添加 --watch 标志,即可在文件变更时自动重新索引:

** .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检查索引状态、链接状态和 Agent 文件设置后、排查问题时
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。

“未找到模块”

使用代码中显示的完整模块名称(例如,MyApp.User,而不是 User)。

如果模块是最近添加的,请重新建立索引:

cicada index .
MCP 服务无法连接

故障排除清单:

  1. 确认配置文件存在:

    # For Claude Code
    ls -la .mcp.json
    
    # For Cursor
    ls -la .cursor/mcp.json
    
    # For VS Code
    ls -la .vscode/settings.json
    
  2. 检查路径是否为绝对路径:

    cat .mcp.json
    # Should contain: /absolute/path/to/project
    # Not: ./project or ../project
    
  3. 确认索引存在:

    ls -la ~/.cicada/projects/
    # Should show directory for your project
    
  4. 彻底重启编辑器(而不只是重新加载窗口)

  5. 检查编辑器的 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。这可能需要一分钟。

已知限制(Beta):

  • 首次索引可能比 Elixir 慢(SCIP 生成步骤)
  • 会自动排除大型虚拟环境(.venv)
  • 某些动态 Python 模式可能无法捕获

性能提示:

# Ensure .venv is excluded
echo "/.venv/" >> .gitignore

# Use keywords mode for quickest indexing
cicada index --keywords .

**报告问题:**请在 GitHub Issues 中添加 “Python” 标签


面向 AI 助手

CICADA 提供 7 个专用 MCP 工具,旨在高效探索 Elixir、Python 和 Erlang 代码库。

🧭 应该使用哪个工具?
需求工具说明
开始探索query🚀 从这里开始 - 使用关键词/模式并结合筛选条件(范围、最近、路径)进行智能发现
查看模块的完整 APIsearch_module函数、签名、规范、文档。使用 what_calls_it/what_it_calls 进行双向分析
查找函数的使用位置search_function定义和所有调用点。支持通配符(*)和 OR(|)模式
跟踪 git 历史git_history统一工具:blame、提交、PR、函数演变(替代 4 个旧工具)
深入查看结果expand_result自动展开 query 结果中的模块或函数
高级索引查询query_jq面向高级用户的自定义 jq 查询

想看看这些工具的实际用法? 请查看完整工作流示例,其中包含专业技巧和真实场景。

核心工具

query - 智能代码发现(从这里开始)

  • 自动识别关键词与模式
  • 筛选条件:scope(公开/私有)、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)
  • 按可见性筛选(公开/私有/全部)

search_function - 函数使用情况跟踪

  • 查找定义及所有调用位置
  • what_calls_it=true(默认)→ 查看所有调用方
  • what_it_calls=true → 查看所有依赖项
  • 使用 include_usage_examples=true 包含代码示例
  • 按 usage_type 筛选:源代码、测试或全部
Git 历史(统一工具)

git_history - 一个工具即可执行所有 Git 操作

  • 单行:git_history("file.ex", start_line=42) → 代码归属信息 + PR
  • 行范围:git_history("file.ex", start_line=40, end_line=60) → 分组的代码归属信息
  • 函数跟踪: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。

节省 Token 的响应

所有工具均返回结构化的 Markdown/JSON 片段(签名、调用位置、PR 元数据),而非完整文件,从而精简提示词。

v0.5.1 新增: 所有工具现在默认使用紧凑输出,以尽量减少 Token 用量。使用 verbose=true 可查看包含完整文档和规格的详细输出。



文档

深入阅读:


路线图

当前状态

已可用于生产环境:

  • ✅ 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)

与其他方案的比较

功能CICADASerenaCodicil(仅支持 Elixir)
分析方法SCIP(静态索引)LSP(实时服务)大模型摘要 + 嵌入
代码编辑❌✅❌
Git 上下文✅ PR 历史、blame、演进记录❌❌
资源使用低(从磁盘读取)高(持久运行的服务进程)中(API 调用)
隐私100% 本地100% 本地需要外部大模型 API
语义搜索本地 Ollama 或关键词❌OpenAI/Anthropic 嵌入
调用图双向,支持别名解析基于 LSP❌

选择 CICADA 的情况: 你希望优先在本地运行,同时获得丰富的 Git 上下文(PR 归属信息、blame、函数演进跟踪)和高效的令牌使用。

选择 Serena 的情况: 你需要通过 LSP 编辑代码,并且可以接受较高的资源使用量。

选择 Codicil 的情况: 你有一个 Elixir 项目,并且偏好由大模型驱动的语义摘要(仅支持 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 使用 CICADA。

开始使用 · 报告问题

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。