项目简介
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编码助手中,扩展其代码理解能力。
安装步骤
-
安装 'uv' (推荐): 'uv' 是一个快速的Python包管理器和环境工具。如果您的系统尚未安装 'uv',请先安装:
curl -LsSf https://astral.sh/uv/install.sh | sh # 或者对于macOS用户:brew install uv -
安装 CICADA: 进入您的Elixir项目根目录,然后执行以下命令来安装CICADA并进行初始设置:
uv tool install git+https://github.com/wende/cicada.git cd /path/to/your/elixir/project # 确保您在要分析的Elixir项目目录中 cicada # 运行设置脚本。它将自动安装所需的Python依赖、索引您的Elixir代码库,并生成MCP配置文件。 -
索引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项目根目录下执行:
此命令会获取您仓库的所有Pull Request信息并进行索引。cicada-index-pr .
服务器配置
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提交历史。"
信息
分类
开发者工具