代码索引MCP
大型语言模型的智能代码索引和分析
通过高级搜索、分析和导航功能,改变人工智能理解代码库的方式。
概述
代码索引MCP是 模型上下文协议 弥合人工智能模型和复杂代码库之间差距的服务器。它提供智能索引、高级搜索功能和详细的代码分析,帮助AI助手有效地理解和导航您的项目。
非常适合: 代码审查、重构、文档生成、调试协助和架构分析。
快速开始
🚀 推荐设置(大多数用户)
开始使用任何兼容MCP的应用程序的最简单方法:
先决条件: Python 3.10+和 紫外线
- 添加到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/repo到args列表以设置项目 启动时自动(与运行set_project_path工具)。
在Windows上, uvx 需要标准配置文件目录存在。
将环境覆盖保持在同一块中,以便MCP可靠启动:
TOML```
1
2
3
4
5
6env = {
HOME = “C:\Users\
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
- 配置本地开发:
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许可证
🌐 翻译
- 繁体中文
- 日本语