mcpField
J
jarvis

jarvis

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

关于 jarvis

jarvis 是面向编码 Agent 的本地优先代码导航 MCP 服务。它预先索引代码库,提供符号查询和文本搜索,代码与索引始终留在本机。

主要功能

  1. 01符号定义与引用查询
  2. 02调用与类型层级查询
  3. 03文本及正则搜索
  4. 04跨代码库依赖范围查询
  5. 05索引状态与代码库索引
  6. 06本地仪表板

适用场景

  1. 01追踪代码库中某个符号的引用
  2. 02检查函数的调用方与被调用方
  3. 03搜索代码并减少无关结果
  4. 04查看哪些已索引代码库依赖某个包

MCP 相关

通过 stdio 向 MCP 客户端提供十种工具,涵盖代码导航、搜索、索引管理和状态查询。独立 Homebrew 发行版虽注册了 semanticSearch 工具,但该工具不可用。

配置

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

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

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

安装包
pypijarvis-mcp0.8.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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。