代码索引分析工具

Code Index MCP 是一个智能代码索引和分析服务器,提供高级搜索、代码导航和多语言支持,帮助AI模型理解和分析复杂代码库。适用于代码审查、重构、调试和项目学习等场景。

作者 By johnhuang316
本地部署 代码索引 代码分析
GitHub

代码索引MCP

大型语言模型的智能代码索引和分析

通过高级搜索、分析和导航功能,改变人工智能理解代码库的方式。

code-index-mcp MCP server

概述

代码索引MCP是 模型上下文协议 弥合人工智能模型和复杂代码库之间差距的服务器。它提供智能索引、高级搜索功能和详细的代码分析,帮助AI助手有效地理解和导航您的项目。

非常适合: 代码审查、重构、文档生成、调试协助和架构分析。

快速开始

🚀 推荐设置(大多数用户)

开始使用任何兼容MCP的应用程序的最简单方法:

先决条件: Python 3.10+和 紫外线

  1. 添加到MCP配置 (例如。, claude_desktop_config.json~/.claude.json):

JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “code-index”: { “command”: “uvx”, “args”: [“code-index-mcp”] } } }


> 可选:附加 `--project-path /absolute/path/to/repo` 到 `args` 因此,服务器
> 自动使用该存储库进行初始化(相当于调用 `set_project_path`
> 启动后)。
2. **重新启动应用程序** – `uvx` 自动处理安装和执行
3. **开始使用** (向您的AI助手提供以下提示):

1 2 3 4Set the project path to /Users/dev/my-react-app Find all TypeScript files in this project
Search for “authentication” functions Analyze the main App.tsx file


*如果你用 `--project-path`,您可以跳过上面的第一个命令-服务器已经
知道项目位置。*


### Codex CLI配置


如果您使用的是Anthropic的Codex CLI,请将服务器添加到 `~/.codex/config.toml`.
在Windows上,该文件位于 `C:\Users\<you>\.codex\config.toml`:


TOML```
1
2
3
4[mcp_servers.code-index]
type = "stdio"
command = "uvx"
args = ["code-index-mcp"]

您可以追加 --project-path C:/absolute/path/to/repoargs 列表以设置项目 启动时自动(与运行 set_project_path 工具)。

在Windows上, uvx 需要标准配置文件目录存在。 将环境覆盖保持在同一块中,以便MCP可靠启动:

TOML``` 1 2 3 4 5 6env = { HOME = “C:\Users\”, APPDATA = “C:\Users\\AppData\Roaming”, LOCALAPPDATA = “C:\Users\\AppData\Local”, SystemRoot = “C:\Windows” }


Linux和macOS已经公开了所需的XDG路径和 `HOME`,因此您通常可以省略 `env`
桌子在那里。
仅当在受限容器内运行CLI时,才添加覆盖。


### FastMCP和发现清单


- 跑 `fastmcp run fastmcp.json` 通过以下方式启动服务器 [FastMCP](https://fastmcp.wiki/) 和
正确的源入口点和依赖元数据。通过 `--project-path` (或致电
`set_project_path` 启动后的工具),以便索引针对正确的存储库启动。
- 送达或复制 `.well-known/mcp.json` 共享符合标准的MCP清单。客户认为
支持 `.well-known` 惯例(例如,Claude Desktop、Codex CLI)可以导入此文件
直接创建配置,而不是手动创建配置。
- 发布 `.well-known/mcp.llmfeed.json` 当您想公开更丰富的LLM Feed元数据时。
它引用了相同的内容 `code-index` 服务器定义加上文档/源链接
帮助注册表自动呈现描述、标签和功能。


共享清单时,提醒消费者提供 `--project-path` (或致电
`set_project_path`)因此,服务器对预期的存储库进行索引。


## 典型使用案例


**代码审查**:“使用旧API查找所有位置”

**重构帮助**:“此函数在哪里调用?”

**学习项目**:“向我展示这个React项目的主要组件”

**调试**:“搜索所有与错误处理相关的代码”


## 主要特点


### 🔍 **智能搜索与分析**


- **双重战略架构**:针对10种核心语言的专门树型解析,针对50多种文件类型的回退策略
- **直接树保姆集成**:专用语言没有正则表达式回退-快速失败,错误明显
- **高级搜索**:自动检测并使用最佳可用工具(ugrep、ripgrep、ag或grep)
- **通用文件支持**:从高级AST解析到基本文件索引的全面覆盖
- **文件分析**:运行后深入了解结构、导入、类、方法和复杂性度量 `build_deep_index`


### 🗂️ **多语言支持**


- **10种树型AST解析语言**:Python、JavaScript、TypeScript、Java、Kotlin、C#、Go、Objective-C、Zig、Rust
- **50多种具有回退策略的文件类型**:C/C++、Ruby、PHP和所有其他编程语言
- **文档和配置文件**:Markdown、JSON、YAML、XML,并进行适当处理
- **Web前端**:Vue、React、Svelte、HTML、CSS、SCSS
- **Java Web和构建**:JSP/标记文件(`.jsp`, `.jspx`, `.jspf`, `.tag`, `.tagx`),Grails/GSP(`.gsp`)Gradle和Groovy构建(`.gradle`, `.groovy`), `.properties`,以及协议缓冲区(`.proto`)
- **数据库**:SQL变体、NoSQL、存储过程、迁移
- **配置**:JSON、YAML、XML、Markdown
- **查看完整列表**


### ⚡ **实时监控和自动刷新**


- **文件监视器**:文件更改时自动更新索引
- **跨平台**:本机操作系统文件系统监控
- **智能处理**:批量快速更改以防止过度重建
- **浅层索引刷新**:监视文件更改并保持文件列表最新;需要符号元数据时运行深度重建


### ⚡ **性能和效率**


- **树保姆AST解析**:用于精确符号提取的本机语法解析
- **持久缓存**:存储索引以实现闪电般快速的后续访问
- **智能过滤**:智能排除构建目录和临时文件
- **内存效率高**:针对大型代码库进行了优化
- **直接依赖关系**:无回退机制-快速失败,错误消息清晰


## 支持的文件类型



**📁 Programming Languages (Click to expand)**
**具有专门树保姆策略的语言:**


- **python** (`.py`, `.pyw`)-具有类/方法提取和调用跟踪的完整AST分析
- **JavaScript** (`.js`, `.jsx`, `.mjs`, `.cjs`)-ES6+类和函数解析树
- **TypeScript** (`.ts`, `.tsx`)-使用接口完成类型感知符号提取
- **Java** (`.java`)-完整的类层次结构、方法签名和调用关系
- **Kotlin** (`.kt`, `.kts`)-使用方法和调用关系进行包感知符号提取
- **C** (`.cs`)-使用调用关系进行命名空间感知类型/成员提取
- **去** (`.go`)-结构方法、接收器类型和功能分析
- **锈** (`.rs`)-函数、模块感知名称、impl方法、结构/枚举/特征和基本调用关系
- **内存管理** (`.m`, `.mm`)-用+/-符号区分类/实例方法
- **之字形** (`.zig`, `.zon`)-使用树型AST进行函数和结构解析


**所有其他编程语言:**
所有其他编程语言都使用 **后备解析策略** 它提供基本的文件索引和元数据提取。这包括:


- **系统和低级别:** C/C++(`.c`, `.cpp`, `.h`, `.hpp`)
- **面向对象:** Scala(`.scala`),斯威夫特(`.swift`)
- **脚本和动态:** 红宝石(`.rb`),PHP(`.php`),壳牌(`.sh`, `.bash`)
- **40多种文件类型** -所有这些都通过基本索引的回退策略进行处理




**🌐 Web & Frontend (Click to expand)**
**框架和库:**


- 视图(`.vue`)
- 斯维尔特(`.svelte`)
- 星的`.astro`)


**造型:**


- CSS(`.css`, `.scss`, `.less`, `.sass`, `.stylus`, `.styl`)
- HTML(`.html`)


**模板:**


- 把手(`.hbs`, `.handlebars`)
- EJS (`.ejs`)
- 帕格(`.pug`)
- FreeMarker(`.ftl`)
- 芥末(`.mustache`)
- 液体(`.liquid`)
- ERB(`.erb`)




**🗄️ Database & SQL (Click to expand)**
**SQL变体:**


- 标准SQL(`.sql`, `.ddl`, `.dml`)
- 数据库特定(`.mysql`, `.postgresql`, `.psql`, `.sqlite`, `.mssql`, `.oracle`, `.ora`, `.db2`)


**数据库对象:**


- 程序和功能(`.proc`, `.procedure`, `.func`, `.function`)
- 视图和触发器(`.view`, `.trigger`, `.index`)


**迁移和工具:**


- 迁移文件(`.migration`, `.seed`, `.fixture`, `.schema`)
- 特定工具(`.liquibase`, `.flyway`)


**NoSQL和现代:**


- 图形与查询(`.cql`, `.cypher`, `.sparql`, `.gql`)




**📄 Documentation & Config (Click to expand)**
- Markdown(`.md`, `.mdx`)
- 配置(`.json`, `.xml`, `.yml`, `.yaml`, `.properties`)



### 🛠️ **开发设置**


为了促进或地方发展:


1. **克隆并安装:**


BASH```
1
2
3git clone https://github.com/johnhuang316/code-index-mcp.git
cd code-index-mcp
uv sync
  1. 配置本地开发:

JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “code-index”: { “command”: “uv”, “args”: [“run”, “code-index-mcp”] } } }

3. **使用MCP检查器进行调试:**


BASH```
1npx @modelcontextprotocol/inspector uv run code-index-mcp

Alternative: Manual pip Installation 如果您更喜欢传统的pip管理:

BASH``` 1pip install code-index-mcp


然后配置:


JSON```
1
2
3
4
5
6
7
8{
  "mcpServers": {
    "code-index": {
      "command": "code-index-mcp",
      "args": []
    }
  }
}

可用工具

🏗️ 项目管理

工具说明
set_project_path初始化项目目录的索引
refresh_index文件更改后重建浅层文件索引
build_deep_index生成用于深度分析的完整符号索引
get_settings_info查看当前项目配置和状态

build_deep_index 当您需要符号级数据时;默认的浅索引支持快速文件发现。

🔍 搜索与发现

工具说明
search_code_advanced默认匹配文字的智能搜索,可选 regex=True、模糊匹配、文件过滤和分页结果(默认每页10个);正则表达式模式需要一个本机搜索工具,因为基本回退仅限于文字
find_files使用glob模式定位文件(例如。, **/*.py)
get_file_summary分析文件结构、函数、导入和复杂性(需要深度索引)

🔄 监控和自动刷新

工具说明
get_file_watcher_status检查文件监视器状态和配置
configure_file_watcher启用/禁用自动刷新和配置设置

🛠️ 系统和维护

工具说明
create_temp_directory为索引数据设置存储目录
check_temp_directory验证索引存储位置和权限
clear_settings重置所有缓存的数据和配置
refresh_search_tools重新检测可用的搜索工具(ugrep、ripgrep等)

用法示例

🎯 快速启动工作流

1.初始化您的项目

1Set the project path to /Users/dev/my-react-app

自动为代码库建立索引并创建可搜索的缓存

2.探索项目结构

1Find all TypeScript component files in src/components

使用: find_files 以模式 src/components/**/*.tsx

3.分析关键文件

1Give me a summary of src/api/userService.ts

使用: get_file_summary 显示功能、导入和复杂性 提示:跑步 build_deep_index 首先,如果你得到一个 needs_deep_index 回应。

🔍 高级搜索示例

Code Pattern Search

1Search for all function calls matching "get.*Data" using `regex=True`

发现: getData(), getUserData(), getFormData()等等。正则表达式搜索是可选的;安装本机搜索工具并使用 regex=True 因为基本回退仅保持字面意思。

Fuzzy Function Search

1Find authentication-related functions with fuzzy search for 'authUser'

比赛: authenticateUser, authUserToken, userAuthCheck等等。

Language-Specific Search

1Search for "API_ENDPOINT" only in Python files

使用: search_code_advanced 通过文字匹配和 file_pattern: "*.py" (默认为10场比赛;使用 max_results 扩大或 start_index 到页面)

Auto-refresh Configuration

1Configure automatic index updates when files change

使用: configure_file_watcher 启用/禁用监控并设置去抖动定时

Project Maintenance

1I added new components, please refresh the project index

使用: refresh_index 更新可搜索缓存

故障排除

🔄 自动刷新不起作用

如果文件更改时自动索引更新不起作用,请尝试:

  • pip install watchdog (可能解决环境隔离问题)
  • 使用手动刷新:调用 refresh_index 更改文件后的工具
  • 检查文件监视器状态:使用 get_file_watcher_status 验证监控是否处于活动状态

macOS文件监视器选项

默认的FSEvents观察器适用于大多数项目。如果您遇到问题,可以通过以下方式切换到其他观察者 configure_file_watcher:

  • "auto" (默认):平台默认值(macOS上的FSEvents)
  • "kqueue":Kqueue观察器(macOS/BSD)
  • "fsevents":强制FSEvents(仅限macOS)
  • "polling":跨平台轮询回退

注意:Kqueue为每个关注的文件打开一个文件描述符。对于使用kqueue的大型项目,您可能需要增加限制: ulimit -n 10240

发展与贡献

🔧 从源头构建

BASH``` 1 2 3 4git clone https://github.com/johnhuang316/code-index-mcp.git cd code-index-mcp uv sync uv run code-index-mcp


### 🐛 **调试**


BASH```
1npx @modelcontextprotocol/inspector uvx code-index-mcp

🤝 贡献

欢迎投稿!请随时提交拉取请求。


📜 许可证

MIT许可证

🌐 翻译

  • 繁体中文
  • 日本语