代码索引MCP
   
大型语言模型的智能代码索引和分析
通过高级搜索、分析和导航功能,改变人工智能理解代码库的方式。
概述
代码索引MCP是 模型上下文协议 弥合人工智能模型和复杂代码库之间差距的服务器。它提供智能索引、高级搜索功能和详细的代码分析,帮助AI助手有效地理解和导航您的项目。
非常适合: 代码审查、重构、文档生成、调试协助和架构分析。
快速开始
🚀 推荐设置(大多数用户)
开始使用任何兼容MCP的应用程序的最简单方法:
先决条件: Python 3.10+和 紫外线
- 添加到MCP配置 (例如。,
claude_desktop_config.json或~/.claude.json):
{
"mcpServers": {
"code-index": {
"command": "uvx",
"args": ["code-index-mcp"]
}
}
}> 可选:附加 --project-path /absolute/path/to/repo 到 args 因此,服务器 > 自动使用该存储库进行初始化(相当于调用 set_project_path > 启动后)。
- 重新启动应用程序 –
uvx自动处理安装和执行
- 开始使用 (向您的AI助手提供以下提示):
Set 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\\.codex\config.toml:
[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可靠启动:
env = {
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 随着
正确的源入口点和依赖元数据。通过 --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)-完整的类层次结构、方法签名和调用关系 - 科特林 (
.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)
🛠️ 开发设置
为了促进或地方发展:
- 克隆并安装:
git clone https://github.com/johnhuang316/code-index-mcp.git
cd code-index-mcp
uv sync- 配置本地开发:
{
"mcpServers": {
"code-index": {
"command": "uv",
"args": ["run", "code-index-mcp"]
}
}
}- 使用MCP检查器进行调试:
npx @modelcontextprotocol/inspector uv run code-index-mcpAlternative: Manual pip Installation
如果您更喜欢传统的pip管理:
pip install code-index-mcp然后配置:
{
"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.初始化您的项目
Set the project path to /Users/dev/my-react-app*自动为代码库建立索引并创建可搜索的缓存*
2.探索项目结构
Find all TypeScript component files in src/components*使用: find_files 按照模式 src/components/**/*.tsx*
3.分析关键文件
Give me a summary of src/api/userService.ts*使用: get_file_summary 显示功能、导入和复杂性* *提示:跑步 build_deep_index 首先,如果你得到一个 needs_deep_index 回应。*
🔍 高级搜索示例
Code Pattern Search
Search for all function calls matching "get.*Data" using `regex=True`*发现: getData(), getUserData(), getFormData()等等。正则表达式搜索是可选的;安装本机搜索工具并使用 regex=True 因为基本回退仅保持字面意思。*
Fuzzy Function Search
Find authentication-related functions with fuzzy search for 'authUser'*比赛: authenticateUser, authUserToken, userAuthCheck等等。*
Language-Specific Search
Search for "API_ENDPOINT" only in Python files*使用: search_code_advanced 通过文字匹配和 file_pattern: "*.py" (默认为10场比赛;使用 max_results 扩大或 start_index 到页面)*
Auto-refresh Configuration
Configure automatic index updates when files change*使用: configure_file_watcher 启用/禁用监控并设置去抖动定时*
Project Maintenance
I 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
发展与贡献
🔧 从源代码构建
git clone https://github.com/johnhuang316/code-index-mcp.git
cd code-index-mcp
uv sync
uv run code-index-mcp🐛 调试
npx @modelcontextprotocol/inspector uvx code-index-mcp🤝 贡献
欢迎投稿!请随时提交拉取请求。
______________________________________________________________________
