项目简介

CICADA是一个专门为Elixir项目设计的Model Context Protocol (MCP) 服务器。它通过深度分析Elixir代码库、索引模块和函数、跟踪调用站点以及整合Git历史和GitHub Pull Request信息,为AI编码助手提供丰富的上下文信息,帮助AI更准确地理解代码、回答问题并执行任务。

主要功能点

  • 快速模块和函数搜索: 能够迅速找到代码库中任何Elixir模块或函数的定义及其相关信息。
  • 调用站点跟踪: 精确显示函数在整个代码库中的所有使用位置和调用方式,帮助理解代码流。
  • Git历史与PR归因: 追踪任何一行代码或函数是由哪个Git提交和Pull Request引入的,揭示代码演变背景。
  • PR评审评论: 访问与代码更改相关的历史评审讨论和反馈,提供决策依据。
  • Tree-sitter解析: 采用先进的抽象语法树(AST)解析技术,确保对Elixir代码进行高精度、结构化的分析。
  • MCP集成: 作为一个MCP兼容服务器,CICADA可以无缝集成到任何支持Model Context Protocol的AI编码助手中,扩展其代码理解能力。

安装步骤

  1. 安装 'uv' (推荐): 'uv' 是一个快速的Python包管理器和环境工具。如果您的系统尚未安装 'uv',请先安装:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    # 或者对于macOS用户:brew install uv
  2. 安装 CICADA: 进入您的Elixir项目根目录,然后执行以下命令来安装CICADA并进行初始设置:

    uv tool install git+https://github.com/wende/cicada.git
    cd /path/to/your/elixir/project # 确保您在要分析的Elixir项目目录中
    cicada # 运行设置脚本。它将自动安装所需的Python依赖、索引您的Elixir代码库,并生成MCP配置文件。
  3. 索引PR信息 (可选): 如果您希望AI能够查询Git Pull Request的历史记录和评审评论,需要额外进行PR信息索引。这需要GitHub CLI ('gh') 工具:

    • 安装 GitHub CLI: 如果尚未安装,请访问 https://cli.github.com/ 获取安装指南,或使用包管理器(例如 'brew install gh')。
    • 登录 GitHub CLI: 在终端中运行 'gh auth login' 并按照提示完成GitHub身份验证。
    • 索引 PRs: 在您的Elixir项目根目录下执行:
      cicada-index-pr .
      此命令会获取您仓库的所有Pull Request信息并进行索引。

服务器配置

CICADA安装完成后,会在您的Elixir项目根目录自动生成一个名为 '.mcp.json' 的配置文件。这个文件是为您的MCP客户端(例如AI编码助手)准备的,它包含了客户端连接和启动CICADA服务器所需的信息。

典型的配置结构如下(您无需手动编辑此文件,它会自动生成):

{
  "mcpServers": {
    "cicada": {
      "command": "cicada-server",
      "env": {"CICADA_REPO_PATH": "/path/to/your/elixir/project"}
    }
  }
}
  • '"command": "cicada-server"': 告知MCP客户端,启动CICADA服务器的命令是 'cicada-server'。
  • '"env": {"CICADA_REPO_PATH": "/path/to/your/elixir/project"}': 设置了一个环境变量 'CICADA_REPO_PATH',指向您的Elixir项目目录,确保CICADA服务器知道要索引和分析哪个代码库。

您的MCP客户端会读取这个配置,并根据其中的 'command' 和 'env' 来启动CICADA服务器,从而建立连接并开始利用其提供的代码智能服务。

基本使用方法

安装并配置完成后,您可以直接在您的MCP兼容AI编码助手中,用自然语言提出关于您Elixir代码库的问题。以下是一些示例:

  • "显示 'MyApp.User' 模块中的所有函数。"
  • "'authenticate/2' 函数在哪些地方被调用了?"
  • "请告诉我 'lib/my_app/user.ex' 文件第42行代码的Git历史,它是哪个PR引入的?"
  • "展示 'User' 模块所有修改过的Pull Request以及它们的评审评论。"
  • "查找所有 'Repo.insert/2' 函数的用法。"
  • "获取 'authenticate' 函数的Git提交历史。"

信息

分类

开发者工具