mcpField
C
Code Index MCP

Code Index MCP

本地服务
github.com/johnhuang316开发工具1.0k13 周前更新

关于 Code Index MCP

Code Index MCP 是一个 MCP 服务,帮助大模型对代码仓库建立索引,并进行搜索和分析。它面向使用 AI 助手理解和浏览项目代码的开发者,配置简单,可通过 uvx 直接启动。

主要功能

  1. 01项目文件的浅层索引与自动刷新
  2. 02基于 tree-sitter 的符号级深度索引
  3. 03自动选择 ugrep、ripgrep、ag 或 grep 搜索
  4. 04按 glob 模式查找文件
  5. 05文件结构、导入和复杂度分析

适用场景

  1. 01代码审查时查找旧 API 的所有调用位置
  2. 02重构前定位函数的调用关系
  3. 03让 AI 助手快速了解陌生项目的主要组件

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露项目设置、索引刷新、代码搜索、文件查找和文件分析等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"code-index": {
"command": "uvx",
"args": [
"code-index-mcp"
]
}
}
}
启动命令uvx code-index-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicode-index-mcp

工具

14

收录的工具列表 · 更新于 3 周前

参数类型必填说明
pathstring是

详细介绍

Code Index MCP

MCP Server Python License Sponsor

为大模型提供智能代码索引与分析

借助高级搜索、分析和导航能力,改变 AI 理解代码库的方式。

code-index-mcp MCP 服务

概述

Code Index MCP 是一个 Model Context Protocol 服务,弥合了 AI 模型与复杂代码库之间的鸿沟。它提供智能索引、高级搜索功能和详细的代码分析,帮助 AI 助手有效理解和浏览项目。

适用于: 代码审查、重构、文档生成、调试辅助和架构分析。

快速开始

🚀 推荐配置(适合大多数用户)

使用任何兼容 MCP 的应用开始上手的最简单方式:

前置要求: Python 3.10+ 和 uv

  1. 添加到 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)。

  2. 重启应用 – uvx 会自动处理安装和运行

  3. 开始使用(将以下提示词发送给 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\<you>\.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\\<you>",
  APPDATA = "C:\\Users\\<you>\\AppData\\Roaming",
  LOCALAPPDATA = "C:\\Users\\<you>\\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)可以直接导入此文件,无需手动编写配置。
  • 如果要公开更丰富的 LLM Feed 元数据,请发布 .well-known/mcp.llmfeed.json。它引用同一个 code-index 服务定义以及文档和源代码链接,有助于注册表自动展示描述、标签和功能。

分享清单时,请提醒使用者提供 --project-path(或调用 set_project_path),以便服务为目标仓库建立索引。

典型用例

代码审查:“找出所有使用旧 API 的位置”
重构帮助:“这个函数在哪里调用?”
学习项目:“展示这个 React 项目的主要组件”
调试:“搜索所有与错误处理相关的代码”

主要功能

🔍 智能搜索与分析
  • 双策略架构:针对 10 种核心语言进行专门的 tree-sitter 解析,为 50 多种文件类型提供回退策略
  • 直接集成 Tree-sitter:专用语言不使用正则表达式回退机制;遇到问题时立即失败并提供清晰的错误信息
  • 高级搜索:自动检测并使用最佳可用工具(ugrep、ripgrep、ag 或 grep)
  • 通用文件支持:全面覆盖从高级 AST 解析到基础文件索引的各种需求
  • 文件分析:运行 build_deep_index 后,可深入了解结构、导入项、类、方法和复杂度指标
🗂️ 多语言支持
  • 10 种支持 Tree-sitter 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/Tag 文件(.jsp、.jspx、.jspf、.tag、.tagx)、Grails/GSP(.gsp)、Gradle 与 Groovy 构建文件(.gradle、.groovy)、.properties 和 Protocol Buffers(.proto)
  • 数据库:SQL 变体、NoSQL、存储过程、迁移
  • 配置:JSON、YAML、XML、Markdown
  • 查看完整列表
⚡ 实时监控与自动刷新
  • 文件监视器:文件发生变化时自动更新索引
  • 跨平台:原生操作系统文件系统监控
  • 智能处理:批量处理快速发生的更改,避免过度重建
  • 浅层索引刷新:监视文件更改并保持文件列表最新;需要符号元数据时,请运行深度重建
⚡ 性能与效率
  • Tree-sitter AST 解析:原生语法解析,准确提取符号
  • 持久化缓存:存储索引,让后续访问快如闪电
  • 智能过滤:智能排除构建目录和临时文件
  • 节省内存:针对大型代码库进行优化
  • 直接依赖:不使用回退机制;遇到问题时立即失败并提供清晰的错误信息

支持的文件类型

📁 编程语言(点击展开)

采用专用 Tree-sitter 策略的语言:

  • Python(.py, .pyw)- 完整 AST 分析,提取类/方法并跟踪调用
  • JavaScript(.js, .jsx, .mjs, .cjs)- 使用 tree-sitter 解析 ES6+ 类和函数
  • TypeScript(.ts, .tsx)- 完整的类型感知符号提取,支持接口
  • Java(.java)- 完整的类层次结构、方法签名和调用关系
  • Kotlin(.kt, .kts)- 感知包的符号提取,支持方法和调用关系
  • C#(.cs)- 感知命名空间的类型/成员提取,支持调用关系
  • Go(.go)- 结构体方法、接收者类型和函数分析
  • Rust(.rs)- 函数、感知模块的名称、impl 方法、结构体/枚举/trait,以及基本调用关系
  • Objective-C(.m, .mm)- 使用 +/- 表示法区分类方法和实例方法
  • Zig(.zig, .zon)- 使用 tree-sitter AST 解析函数和结构体

其他所有编程语言: 其他所有编程语言都使用 FallbackParsingStrategy,提供基本文件索引和元数据提取。这包括:

  • 系统与底层语言: C/C++(.c, .cpp, .h, .hpp)
  • 面向对象语言: Scala(.scala)、Swift(.swift)
  • 脚本与动态语言: Ruby(.rb)、PHP(.php)、Shell(.sh, .bash)
  • 以及 40 多种其他文件类型 - 均通过回退策略进行基本索引
🌐 Web 与前端(点击展开)

框架与库:

  • Vue(.vue)
  • Svelte(.svelte)
  • Astro(.astro)

样式:

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

模板:

  • Handlebars(.hbs, .handlebars)
  • EJS(.ejs)
  • Pug(.pug)
  • FreeMarker(.ftl)
  • Mustache(.mustache)
  • Liquid(.liquid)
  • ERB(.erb)
🗄️ 数据库与 SQL(点击展开)

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)
📄 文档与配置(点击展开)
  • Markdown(.md, .mdx)
  • 配置(.json, .xml, .yml, .yaml, .properties)
🛠️ 开发环境设置

用于贡献或本地开发:

  1. 克隆并安装:

    git clone https://github.com/johnhuang316/code-index-mcp.git
    cd code-index-mcp
    uv sync
    
  2. 配置本地开发环境:

    {
      "mcpServers": {
        "code-index": {
          "command": "uv",
          "args": ["run", "code-index-mcp"]
        }
      }
    }
    
  3. 使用 MCP Inspector 调试:

    npx @modelcontextprotocol/inspector uv run code-index-mcp
    
替代方案:手动使用 pip 安装

如果你更喜欢传统的 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 显示函数、导入内容和复杂度 提示:如果收到 needs_deep_index 响应,请先运行 build_deep_index。

🔍 高级搜索示例
代码模式搜索
Search for all function calls matching "get.*Data" using `regex=True`

查找:getData()、getUserData()、getFormData() 等。正则搜索需选择启用;请安装原生搜索工具并使用 regex=True,因为基础回退模式仍仅支持字面匹配。

模糊函数搜索
Find authentication-related functions with fuzzy search for 'authUser'

匹配:authenticateUser、authUserToken、userAuthCheck 等。

特定语言搜索
Search for "API_ENDPOINT" only in Python files

使用:search_code_advanced 进行字面匹配,并设置 file_pattern: "*.py"(默认匹配 10 条;使用 max_results 扩大结果数量,或使用 start_index 翻页)

自动刷新配置
Configure automatic index updates when files change

使用:configure_file_watcher 启用/禁用监控并设置防抖时间

项目维护
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
🤝 贡献

欢迎贡献!欢迎提交 Pull Request。


📜 许可证

MIT 许可证

🌐 翻译

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。