mcpField
C
codeintel

codeintel

本地服务
github.com/phuongddx开发工具41 周前更新

关于 codeintel

README 中也称为 jarvis 的 codeintel,可为本地代码仓库建立索引,提供导航与搜索。它面向需要查询符号引用、定义、调用关系和词法搜索的编码 Agent;代码和索引保留在本机。

主要功能

  1. 01查找符号引用和定义
  2. 02查看调用与类型层级
  3. 03浏览文件中的符号
  4. 04使用 Zoekt 进行词法搜索
  5. 05索引仓库并检查新旧状态

适用场景

  1. 01查找符号的所有用例
  2. 02追踪调用关系的来向和去向
  3. 03按文本或正则搜索已索引仓库
  4. 04检查索引相对工作树的更新状态

MCP 相关

其 stdio MCP 服务提供十种工具,用于查询和索引本地仓库快照。Claude Code、Cursor 等 MCP 客户端可连接 `jarvis-server`。

配置

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

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

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

安装包
pypicodeintel-navigation-mcp0.4.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

jarvis

CI Platforms License: MIT MCP

你的编码 Agent 不该把上下文窗口浪费在 grep 上。

当 Agent 问 “AuthService 在哪里用到了?” 时,grep 会把注释、 Markdown、测试夹具和名称相似的符号混成一团杂乱结果。Agent 不得不反复阅读文件, 从噪声中筛选有效信息,白白消耗上下文——却仍然会漏掉调用位置。

jarvis 会预先构建本地代码智能层,让 Agent 调用 findReferences 查找精确匹配项,调用 goToDefinition 查找定义范围,调用 callHierarchy 查看调用路径,并调用 searchCode 进行精确的词法搜索——为 Claude Code、Cursor 或任何 MCP 客户端提供 10 个 MCP 工具。 你的代码和索引永远不会离开你的设备。

不使用 jarvisGrep → 注释、测试、导入与实际匹配项混在一起 → 打开文件进行筛选 → 猜测调用位置 → 把上下文浪费在搜索上,而不是推理上
使用 jarvisfindReferences("AuthService") → 精确到文件和范围的匹配项 → 用 callHierarchy 查看调用图 → searchCode("token refresh") → 无需打开每个匹配项即可获得答案

grep 返回杂乱结果,而 jarvis 的 findReferences 返回 10 个精确到 file:line:col 的匹配项

快速开始 · MCP 工具 · 仪表板 · 限制 · 详细信息 · 文档

快速开始

1. 安装独立二进制文件:

brew install jarvis-intelligence/jarvis/jarvis

Linux 用户需要先安装 Homebrew/Linuxbrew。 该公式支持 macOS arm64/x86_64 和 Linux arm64/x86_64,会同时安装 jarvis 和 jarvis-server,并内置 Python 3.12、仪表板资源、tree-sitter 库、watch、scip、 zoekt-git-index 和 zoekt-webserver。Homebrew 会提供 universal-ctags。无需安装 Python、uv、pip 或 PyPI 软件包。

使用 brew upgrade jarvis 升级;使用 brew reinstall jarvis 修复损坏的安装。

2. 为仓库建立索引(slug 默认为目录名称):

jarvis index /path/to/your/repo

3. 注册 MCP 服务:

claude mcp add jarvis --scope user -- jarvis-server

让你的 Agent “查找所有对 AuthService 的引用”——它会调用 findReferences,而不是使用 grep 搜索。

其他 MCP 客户端(Cursor、Claude Desktop,以及任何 stdio 客户端)
{
  "mcpServers": {
    "jarvis": {
      "command": "jarvis-server"
    }
  }
}

如果客户端无法在 PATH 中找到 jarvis-server(图形界面应用通常不会继承 shell 的 环境变量),请使用 which jarvis-server 获取其绝对路径。

Claude Code 插件(注册 MCP 服务并附带 Agent 技能)

请先安装 Homebrew 二进制文件。该插件会添加 jarvis 技能,并可注册已安装的 jarvis-server。

/plugin marketplace add jarvis-intelligence/jarvis-index
/plugin install jarvis@jarvis
可选语言索引器

独立软件包包含 SCIP 转换器和两个 Zoekt 二进制文件。 Homebrew 公式不会安装 setup.sh;请从 jarvis 源码检出目录中,为你的仓库 安装可选的语言索引器:

语言安装程序工具链
TypeScript/TSXsh setup.sh --only scip-typescriptNode.js/npm
Pythonsh setup.sh --only scip-pythonNode.js/npm
Java/Kotlinsh setup.sh --only scip-javaJDK;Kotlin 仓库要求版本必须恰好为 2.2.0
Swiftsh setup.sh --only scip-swiftmacOS arm64 上的 Xcode

对于在 macOS 上使用 Maven 构建的 Java 仓库,还需使用 brew install bash 安装较新版本的 Bash,然后在同一源码检出目录中运行 sh setup.sh --only bash-shim。添加索引器后请重新建立索引。若没有对应的 索引器,在 Tree-sitter 覆盖的范围内,documentSymbols 和 goToDefinition 仍可 使用; findReferences、callHierarchy 和 typeHierarchy 会返回恢复 指引。

未包含的功能

为兼容 MCP,已注册 semanticSearch,但独立发行版不包含该功能。它会返回一条 特定于 Homebrew 的不可用错误,并指向下方的源码构建步骤;词法搜索和符号搜索 仍可使用。

从源码构建语义搜索

独立 Homebrew 软件包不包含语义搜索依赖项。在源码检出目录中,使用以下命令安装:

uv run jarvis install-semantic

然后显式建立索引:

uv run jarvis index /path/to/repo --semantic

install-semantic 还会将嵌入模型(BAAI/bge-m3, 约 4.3 GB,仅需下载一次)预下载到共享的 Hugging Face 缓存 (~/.cache/huggingface/);所有已建立索引的仓库都会复用该模型。如果下载 中断,下次运行 jarvis index 时会自动重试。

MCP 工具

工具功能
goToDefinition将符号解析到其定义文件和范围
findReferences查找已建立索引的仓库中某个符号的所有出现位置
callHierarchy某个符号的传入/传出调用
typeHierarchy父类型/子类型
documentSymbols列出某个文件中定义的所有符号
searchCodeZoekt 词法/正则搜索,可选择限定在单个仓库中
semanticSearch返回 Homebrew 发行版的语义搜索不可用错误
blastRadius最多 2 跳范围内依赖某个软件包的其他已建立索引的仓库
getIndexStatus已发布的提交、最新状态,以及相对于工作树的陈旧状态
indexRepo为 path 处的 git 仓库建立索引

仪表板

jarvis dashboard          # serves http://127.0.0.1:6080 and opens a browser

本地 Web 控制台,使用 CLI 和 MCP 服务读取的同一份 ~/.jarvis 数据:

仓库视图   工具试用场

要求和限制

  • 仅支持 macOS arm64/x86_64 和 Linux arm64/x86_64。 不支持 Windows。
  • Homebrew 发行版中无法使用语义搜索。
  • 每个仓库只能使用一种语言——根据 Git 跟踪文件中占多数的扩展名检测;可通过 --language 覆盖。
  • jarvis 从不编辑代码。 它负责检索——Serena 可与之配合完成重命名和重构。
  • 索引需显式创建——查询前运行 jarvis index(或 jarvis watch)。

详情

工作原理

一个索引 CLI 将预计算索引写入 ~/.jarvis;一个 stdio 运行时读取这些索引。两者之间没有其他约定。

jarvis 架构

  • 发布是原子的——重新索引会写入新快照,然后通过 os.replace 切换 current 指针。读取旧快照的查询会继续运行;不会出现停机窗口。
  • 运行时路径绝不写入数据——每次查询都以只读方式打开已发布的快照(mode=ro&immutable=1)。
  • 软件包依赖图会重建,而非累积——每次重新索引都会先清除该仓库的出边,再重新计算。

完整详情:docs/system-architecture.md

索引 CLI 参考
jarvis index /path/to/your/repo            # slug defaults to the directory name
jarvis index /path/to/your/repo --slug foo # or pick one explicitly
jarvis index /path/to/your/repo --scheme MyScheme # Swift repo with an ambiguous Xcode scheme
jarvis index /path/to/your/repo --language python # force the language instead of detecting it
jarvis index /path/to/your/repo --no-scip   # skip optional SCIP enrichment; syntax baseline + Zoekt still publish
jarvis index /path/to/your/repo --scip      # re-enable SCIP enrichment (both flags persist per repo)
jarvis list
jarvis status foo
jarvis reindex foo
jarvis forget foo
jarvis watch /path/to/your/repo [--debounce 5.0]  # debounced auto-reindex on file changes (foreground)
已知上游限制
  • scip-java 无法为 Android/Gradle 仓库创建索引——其 Gradle 插件依赖标准源集,而 AGP 会替换这些源集(scip-java#177)。系统会自动检测,并降级为仅搜索。
  • Kotlin 索引要求 Kotlin 版本完全匹配——scip-kotlinc 是针对一个固定版本编译的(当前为 2.2.0)。系统会自动检测。
  • 通过 Maven 构建的 Java 仓库在 macOS 上需要 bash ≥ 4.4——运行 brew install bash 即可解决。
  • Swift 索引要求 scip >= v0.9.0——较旧的转换器会静默丢弃出现位置范围。jarvis index 会拒绝使用较旧的 scip,以免发布损坏的索引。
配置
变量用途
JARVIS_DATA_DIR覆盖所有索引和注册表的默认目录 ~/.jarvis

源代码开发中的语义路径还支持额外的模型前缀覆盖; 这些设置不会影响独立发行版。

文档

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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