代码符号搜索工具

解析React和Sass文件,提取所有符号并通过MCP服务器使其可搜索,适用于AI代理。

  • by aradnom
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aradnom/App-Structure-MCP-Server

使用说明

Oracle风格

解析React和Sass文件,提取所有符号,并通过MCP服务器为Claude/AI代理进行搜索。

它的作用

  • 提取React组件(props、state、hook等)
  • 提取Sass/CSS内容(选择器、变量、混入等)
  • 使用全文搜索将所有内容存储在SQLite中
  • 为语义搜索创建向量嵌入
  • 运行MCP服务器,以便Claude可以搜索您的代码库

搜索结合了关键字匹配+向量相似性+AI重新排序,以实际找到您要查找的内容。

为什么这很有用

你是否曾在大型代码库中工作,花了20分钟寻找“具有加载状态的按钮组件”或“处理卡阴影的混入”?

传统的搜索工具只搜索文本,所以你最终会得到47个“按钮”的结果,并且必须手动检查每个结果。这个东西实际上理解代码的作用,所以你可以问“带加载微调器的按钮”,它会找到 LoadingButton 即使“加载”一词从未出现在文件名中。

样式也是如此——询问“卡片阴影样式”,它会找到创建卡片阴影的相关混合、变量和选择器,即使它们分散在不同的文件中,名称如下 _elevations.sass 和 $shadow-depth-2.

基本上将你的代码库变成你可以与之对话的东西,而不是玩文本匹配的打地鼠游戏。

运作原理

Parse files → Store in SQLite + FAISS → Search via MCP server

组件

  • extractor/ -解析React/Sass文件,处理奇怪的语法边缘情况
  • docker/ -带可选web UI的SQLite设置
  • embeddings/ -创建OpenAI嵌入和FAISS索引
  • server/ -MCP服务器+BGE再银行服务器

需求

  • Python 3.12
  • Node.js 20+
  • Docker(用于SQLite web UI,可选)
  • 拥抱脸CLI(适用于BGE型号)
  • OpenAI API密钥

设置

# Install stuff
pip install -r requirements.txt
cd extractor && npm install

# Set up Hugging Face (for reranking models)
huggingface-cli login

# Extract symbols from your project  
node extractor/extract-symbols.js /path/to/your/src

# Create embeddings (needs OPENAI_API_KEY)
python embeddings/create_embeddings.py

# Start servers
./start-servers.sh

你得到了什么

提取后,您将获得:

  • symbols.jsonl -所有提取的符号
  • components.json -React组件信息
  • families.json -边界元模式关系
  • breakpoints.json -您的响应断点
  • 带全文搜索的SQLite数据库
  • 用于语义搜索的FAISS矢量索引

然后,Claude(或其他MCP兼容工具)可以搜索您的代码库,并真正了解其中的内容。

备注

  • 提取器具有多种回退策略,因此不会因奇怪的Sass语法而受阻
  • 边界元模式检测在识别元件族方面效果很好
  • 混合搜索(关键字+向量+重新排序)通常会找到您要查找的内容
  • 之所以这样做,是因为现有的代码搜索工具在理解上下文方面很糟糕