mcpField
Q
Qartez Mcp

Qartez Mcp

本地服务
qartez.dev开发工具7417 周前更新

关于 Qartez Mcp

Qartez MCP 是面向 Claude Code 等编码 Agent 的代码智能 MCP 服务。它预先构建仓库的知识图谱,包括符号、导入关系、调用边和影响范围,使 Agent 通过查询而非逐文件扫描来理解代码。

主要功能

  1. 01预计算的仓库知识图谱
  2. 02符号定义查找与大纲输出
  3. 03影响范围分析与依赖关系查询
  4. 04基于 PageRank 与 git 共变的文件排序
  5. 05支持 37 种编程语言
  6. 06文件监视器保持索引更新

适用场景

  1. 01修改文件前评估会影响哪些导入方
  2. 02在大型代码库中快速定位符号定义
  3. 03识别高复杂度且高耦合的风险函数

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 43 个工具,如 qartez_map、qartez_find 和 qartez_impact,供 Agent 查询代码库索引。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

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

详细介绍

Qartez

Qartez MCP

代码库的 X 光视野——专为 AI Agent 打造,而非人类。

首个从设计之初就旨在由
大模型使用、而非供人阅读的代码智能服务。可将 AI 的 token 用量降低约 94%。

快速开始 · 43 个工具 · 修改防护 · 基准测试 · 对比 · 37 种语言 · 命令行 · 参与贡献 · 安全 · 更新日志

许可证 MSRV 1.88 37 种语言 43 个 MCP 工具


为什么要开发它

grep、find、cat 和 ls 都诞生于 20 世纪 70 年代,当时是为人们在终端中一次读取一个文件而设计的。半个世纪过去了,你的 AI 助手仍在使用这些工具——逐字节扫描文件,每次提问都重新读取相同的目录,猜测哪些内容重要,还把 token 浪费在这些工具从未被设计来处理的工作上。

Qartez 是一种全新的工具。 它不是 grep 的封装,而是预先计算好的代码库知识图谱,涵盖符号、导入关系、调用边、影响范围、PageRank、Git 共同变更和圈复杂度,并通过 Model Context Protocol 提供给任意大模型。Agent 不再读取你的代码库,而是开始查询它。

可以把它看作首个专为编码 Agent 打造的感知器官。Grep 一次只能看到一行。Qartez 一眼就能看清整个代码库的结构。

每当 AI 助手处理代码时,都会发生三件代价高昂的事:

1. 它反复读取相同的文件。 它对代码库毫无记忆。每个问题都从头开始。你为每个 token 付费——一次又一次。

2. 它看不到哪些地方会出问题。 助手修改 utils.ts,却不知道另外 14 个文件都导入了它。你会在 CI 中发现问题,或者在生产环境中发现。

3. 它浪费 token 来查找内容。 “handleRequest 定义在哪里?”会变成在 200 个文件中执行 Grep、在 5 个候选文件中执行 Read,还没找到答案就已经烧掉 1,600 个 token。Qartez 用 50 个 token 就能回答。

解决办法不是更聪明的模型,而是更聪明的索引。


快速开始

平台支持: macOS 13+、Ubuntu 22.04+(以及其他现代 Linux,gnu 或 musl)、Windows(原生 PowerShell 5.1+/7+)和 WSL 2。架构:x86_64 和 arm64。Rust MSRV 为 1.88——仅在不受支持的平台上,或使用 --from-source 备用方案时需要。

安装(推荐)

根据你的操作系统选择一行命令。两条命令执行相同的操作:下载预构建二进制文件,根据发布版本的 SHA256SUMS 验证其 SHA-256,安装三个二进制文件(qartez、qartez-guard、qartez-setup),并以非交互模式启动 qartez-setup,配置检测到的所有支持 MCP 的 IDE(包括 Claude Code 的修改防护钩子)。

macOS / Linux / WSL 2 - bash 安装程序,二进制文件会放在 ~/.local/bin/:

curl -sSfL https://qartez.dev/install | sh

Windows(原生 PowerShell 5.1+/7+) - PowerShell 安装程序,二进制文件会放在 %LOCALAPPDATA%\Programs\qartez\:

powershell -ExecutionPolicy Bypass -c "iwr https://raw.githubusercontent.com/kuberstar/qartez-mcp/main/install.ps1 -useb | iex"

不受支持的平台(例如,没有已发布构建产物的 linux-musl arm64)会自动回退到本地 cargo build;传入 --from-source(bash)或 -FromSource(PowerShell)可强制使用该方式。只有在回退时才需要 Rust MSRV 1.88。

在 IDE 中打开任意项目 - Qartez 会在会话开始时自动为其建立索引。无需手动操作。文件监视器会在你编辑时保持索引最新。

其他方式:从源码安装(所有平台)
git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
make deploy

想在将安装脚本传递给 sh 之前检查它吗?请在 GitHub 上查看:install.sh(bash)或 install.ps1(PowerShell)。

交互式安装、指定目标安装及其他选项
支持 19 款编辑器和 Agent

单个 Rust 二进制文件(qartez-setup)即可检测并配置所有受支持的编辑器。无需针对每款编辑器编写 shell 脚本,也无需复制粘贴 JSON。

make deploy                          # Configure every detected IDE (non-interactive)
make setup                           # Same, but interactive checkbox prompt
qartez-setup --ide cursor,zed       # Configure specific IDEs only
make uninstall                       # Remove qartez from every IDE and delete binaries

开箱即支持:Claude Code、Claude Desktop、Gemini、Cursor、Windsurf、Kiro、Zed、Continue.dev、Copilot CLI、Amazon Q、Amp、Cline、Roo Code、Goose、Warp、Augment、OpenCode、Codex CLI、Antigravity。

指定目标安装
qartez-setup --ide cursor,zed,claude

仅配置指定的 IDE 子集。检测到的路径:

IDE配置路径
Claude Code~/.claude/settings.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Gemini~/.gemini/settings.json
Cursor~/.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
Kiro~/.kiro/settings/mcp.json
Zed~/.config/zed/settings.json
Continue.dev~/.continue/config.yaml
Copilot CLI~/.copilot/mcp-config.json
Amazon Q~/.aws/amazonq/mcp.json
Amp~/.config/amp/settings.json
ClineVS Code 全局存储 saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Roo CodeVS Code 全局存储 rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
Goose~/.config/goose/config.yaml
Warp~/.warp/mcp_settings.json
Augment~/.augment/settings.json
OpenCode~/.config/opencode/opencode.json(或 opencode.jsonc)
Codex CLI~/.codex/config.toml
Antigravity~/.gemini/antigravity/mcp_config.json

所有安装方式都可重复执行,并会备份现有配置。

在项目中启用 Qartez

Qartez 会在会话开始时自动建立索引。手动重新建立索引:

qartez --root /path/to/your/project --reindex
Claude Desktop(手动配置)
{
  "mcpServers": {
    "qartez": {
      "command": "/absolute/path/to/qartez",
      "args": []
    }
  }
}
卸载
make uninstall

从所有已配置的 IDE 中移除 Qartez,并删除二进制文件。


Qartez 的作用

Qartez 一次性为你的代码库构建一个知识图谱,并通过 MCP 将其提供给任何 AI 助手。你的助手无需每次提问都从头扫描文件,而是查询一个预先计算好的索引,其中包含:

  • 哪些文件最重要(导入图上的 PageRank)
  • 修改某个文件会导致什么问题(影响范围分析)
  • 哪些文件总是一起变更(Git 共变挖掘)
  • 哪些函数最不宜触碰(圈复杂度 × 耦合度 × 变更频率)
  • 每个符号的定义位置、使用者以及调用者
  • 哪些代码块存在重复(基于 AST 结构形状哈希)
  • 导入违反了哪些架构边界
  • 哪些类型实现了某个 trait/interface,反之亦然

最终,你的 AI 工作更快、使用更少的 token、安全地重构,并且不再盲目修改承载关键功能的文件。

前后对比
任务不使用 Qartez使用 Qartez
“QartezServer 定义在哪里?”Grep 200 个文件,读取候选文件。1,490 个 token。qartez_find。52 个 token。
“修改 storage/read.rs 会导致什么问题?”从导入关系开始进行 BFS grep,深度为 2。9,243 个 token。qartez_impact:直接 + 间接导入者 + 共变文件。352 个 token。
“概述 src/server/mod.rs(96 个符号)”读取完整的 300KB 文件。77,843 个 token。使用带签名的 qartez_outline。3,009 个 token。
“找出所有未使用的导出项”没有工具支持时不可能做到。qartez_unused:预先生成,瞬间完成。468 个 token。
“哪些函数的重构风险最高?”无内容可供查询。qartez_hotspots:复杂度 × PageRank × 变更频率。

43 个工具

可以把这些工具视为用于 AI 理解代码的标准库。每个工具都能用一次高效利用 token 的调用,替代需要多个步骤的人工工作流,让 Agent 能够据此推理。

工具按层级组织,并采用渐进式披露。核心工具始终可用。可按需通过 qartez_tools enable: ["analysis"](或 "all")解锁其他层级。

核心(始终可用)
工具作用
qartez_map从这里开始。 按重要性排序的项目骨架。包含 PageRank、导出项和影响范围。可按文件或术语提升权重,聚焦当前工作内容。
qartez_find按确切名称跳转到符号定义。显示文件、行范围、签名和可见性。无需扫描。
qartez_grep在已索引的符号中进行 FTS5 搜索。支持前缀匹配、正则回退和可选的函数体搜索。
qartez_read读取一个或多个符号的源代码并显示行号。无需扫描文件,直接跳转到符号。
qartez_outline查看任意文件的目录:按类型分组的所有符号及其签名。
qartez_impact编辑任何重要文件前都应调用。 显示直接导入者、间接依赖方和共变文件,涵盖所有可能出问题的内容。
qartez_deps文件的依赖关系图:它导入了什么,以及哪些文件导入了它。
qartez_stats代码库仪表板:按语言统计文件、符号和边,以及连接最多的文件。
分析(通过 qartez_tools 解锁)
工具功能
qartez_refs追踪代码库中符号的所有用法,可选择包含传递链。
qartez_calls调用层级:谁调用了此函数,以及它调用了什么。
qartez_cochange在 git 中历史上共同变更的文件。揭示导入图中不可见的逻辑耦合。
qartez_context智能上下文构建器:提供计划修改的文件后,返回应优先阅读的最佳相关文件集。
qartez_unused死代码查找器:找出没有任何导入者的导出符号,这些信息会在索引时预先生成。
qartez_diff_impact针对 git 差异范围的批量影响分析。 传入 main..HEAD 之类的 revspec,即可获取变更文件的 PageRank、联合影响范围、汇聚点和共同变更遗漏项。一次调用即可替代 N 次 qartez_impact + qartez_cochange 调用。
qartez_hotspots重构雷达。 根据热点分数对文件和函数排序:圈复杂度 x PageRank x (1 + 变更频率)。直接指出代码库中风险最高的代码。
qartez_clones通过 AST 形状哈希检测结构性代码克隆(标识符、字面量和注释会被规范化处理)。找出人工审查者可能永远不会发现的重复逻辑。
qartez_boundaries架构边界强制检查。在 .qartez/boundaries.toml 中声明“这些模块不得导入那些模块”,即可列出所有违规边。suggest=true 会根据 Leiden 聚类生成初始配置。
qartez_hierarchy类型层级查询:查找所有实现某 trait/interface 的类型,或查找某类型实现的所有 trait/interface。支持 Rust、TypeScript、Java、Python 和 Go。
qartez_trendgit 历史中的复杂度趋势:跟踪函数圈复杂度逐次提交的变化。标记复杂度正在增长、稳定或下降的函数。
qartez_security安全扫描器,内置 13 条规则。使用基于正则表达式的模式匹配,并通过 PageRank 评分,优先检查影响较大的文件。可通过 .qartez/security.toml 配置自定义规则。支持按严重程度(低/中/高/严重)和类别筛选。
qartez_smells代码异味检测器:查找巨型函数(复杂度高且函数体较长)、过长的参数列表和特性依恋(使用另一类型的成员多于自身成员的方法)。阈值可调。
qartez_health按优先级排列的修复清单。 将 qartez_hotspots 与 qartez_smells 交叉分析,并将文件分类为严重(热点 + 异味)、高(仅热点)或中(仅异味)。每个条目都附有具体的建议重构技术。
qartez_refactor_plan针对单个文件,生成按顺序排列并标注安全信息的重构计划。每个步骤都会列出一种技术(提取方法、引入参数对象)、预估的圈复杂度影响类别(高/中/低)及范围,以及来自影响分析、测试覆盖率和调用者数量的安全信号。
qartez_test_gaps通过导入图分析测试覆盖缺口。提供三种模式:gaps 按风险排列未经测试的源文件,map 显示测试到源文件的映射,suggest 针对 git 差异范围推荐要运行的测试。
qartez_knowledge关键人员风险分析。 基于 git blame,在文件和模块级别分析代码归属。找出由单人编写的文件,以及知识集中在一位贡献者手中的模块。
qartez_blame按符号范围执行 git blame。 将函数/类型名称解析为行范围,并仅对这些行执行 blame:显示每个代码块对应的提交/作者,或按作者汇总并显示每位作者的最新提交。
qartez_semantic使用本地嵌入模型进行语义搜索。自然语言查询按混合 FTS5 + 向量相似度(RRF)排序。需要启用 semantic cargo feature,并一次性下载模型(约 270 MB)。
qartez_path查找两个符号之间最短的调用/引用路径。对符号引用图执行正向 BFS,返回有序的符号/文件链,以及备选最短路径的数量。可按 kind(call 或 type)筛选边。
重构(通过 qartez_tools 解锁)
工具功能
qartez_rename在整个代码库中重命名符号,包括定义、导入和所有用法。默认预览,设置 apply=true 执行。
qartez_move将符号移动到另一个文件,并重写所有导入路径。一次 MCP 调用即可完成。
qartez_rename_file重命名文件,并更新所有指向该文件的导入。
qartez_replace_symbol将符号所在的整段代码替换为新代码。调用方需提供完整替换内容,包括签名;默认预览,设置 apply=true 后原子执行。
qartez_insert_before_symbol在锚点符号前直接插入新代码。通过已索引的符号表查找锚点,无需提供精确的上下文。
qartez_insert_after_symbol在锚点符号后直接插入新代码。锚点定位方式与 qartez_insert_before_symbol 相同。
qartez_safe_delete删除符号前报告所有仍在导入该符号的文件。如果存在导入方,则拒绝执行,除非设置 force=true。
元数据(通过 qartez_tools 解锁)
工具功能
qartez_project自动检测工具链(Cargo、npm/bun/yarn、Go、Python、Make、Gradle),并通过单个工具运行测试、构建、lint 和类型检查。
qartez_wiki使用导入图上的 Leiden 社区检测生成 Markdown 架构 Wiki。将文件划分为多个集群,为每个集群命名,并生成包含集群间边的 ARCHITECTURE.md。
qartez_workspace在运行时添加或移除工作区域。通过自定义别名在 .qartez/workspace.toml 中注册外部目录,对其建立索引,并在移除时清除索引。
qartez_add_root在运行时注册其他项目根目录。为目录建立索引,刷新 PageRank 和共同变更数据,并热插入文件监视器;别名为可选项(根据路径的基本名称生成),且可切换是否持久化,以支持临时根目录。
qartez_list_roots列出服务器当前跟踪的所有项目根目录及其别名、来源(cli/config/runtime)、监视器挂载状态、文件数量和最近一次索引时间戳。
qartez_maintenance检查并压缩 .qartez/index.db。默认操作 stats 会报告 DB/WAL 大小、最大的表、当前工作区指纹以及最近一次完整重新索引的时间戳。其他操作:checkpoint、optimize_fts(合并 FTS5 段)、vacuum_incremental、vacuum、convert_incremental(一次性转换为 auto_vacuum=INCREMENTAL)、purge_stale(删除不再属于工作区的根目录对应的行)。数据库膨胀时请使用此工具,而不要手动删除 .qartez/index.db。
层级管理
工具功能
qartez_tools始终可见。 列出所有层级及其工具。使用 enable: ["analysis"]、enable: ["all"] 或 disable: ["refactor"] 控制向 Agent 暴露哪些工具。核心工具无法禁用。

工作流提示词

六个可直接使用的配方,按正确顺序串联上述工具。可在 Claude Code 或任何支持提示词的 MCP 客户端中将它们作为斜杠命令调用。

提示词功能
/qartez_review <file>代码审查:影响范围、概览、引用、共同变更,然后生成重点检查清单。
/qartez_architecture [top_n]基于 PageRank 数据,快速了解架构概况。
/qartez_debug <symbol>一次性查看定义、调用方、被调用方和引用。
/qartez_onboard [area]为新贡献者提供五个文件的阅读清单,并按重要性排序。
/qartez_pre_merge <files>合并前安全检查,并给出发布或暂缓建议。
/qartez_arch_review [focus]架构风险审计:脆弱的枢纽、纠缠的边界、安全攻击面和复杂性负债。

修改防护

Qartez 提供安全网,防止 AI 盲目编辑承载关键功能的文件。

qartez-guard 二进制程序会接入 Claude Code 的 PreToolUse 系统,并阻止对任何 PageRank 或影响范围超过阈值的文件执行 Edit/Write/MultiEdit,直到 AI 先调用 qartez_impact 确认风险。

工作原理:

  1. AI 尝试编辑 src/server/mod.rs
  2. 防护程序检查:PageRank 为 0.23(> 0.05 阈值),影响范围为 10(>= 10 阈值)
  3. 编辑被阻止,并附上触发阈值的说明
  4. AI 调用 qartez_impact file_path=src/server/mod.rs,查看影响范围
  5. 防护程序为该文件授予 10 分钟的编辑窗口
  6. AI 重试编辑,允许

无需配置。可通过 QARTEZ_GUARD_PAGERANK_MIN、QARTEZ_GUARD_BLAST_MIN、QARTEZ_GUARD_ACK_TTL_SECS 调整,或通过 QARTEZ_GUARD_DISABLE=1 禁用。


基准测试

不是宣称,而是实测,且可复现。运行 make bench 并自行验证。

核心数据

相较于 Glob + Grep + Read + git log,汇总 Token 节省:+91.8% (在 Qartez 自测的全部 28 个场景中,MCP Token 总数为 38,789,非 MCP Token 总数为 472,109。此处采用保守的低估:28 个场景中有 10 个场景的非 MCP 模拟不完整——这些行仍会将 MCP Token 计入两项总数。在 18 个可公平逐 Token 比较的场景中,节省率升至 +94.5%。)

LLM 评审质量(claude-opus-4-6): 在五个维度(正确性、完整性、易用性、依据充分性、简洁性)的评估中,MCP 为 8.3 / 10,非 MCP 为 4.3 / 10,n=28。

会话成本背景。 一次典型的 Claude Code 会话,提示词开销约为 20,000 个 Token。运行一次 make bench 可节省约 433,000 个 Token,相当于省下 ~21 次空会话的预算,仅仅是因为通过合适的工具来处理问题。

按工具细分(Rust 自测基准)

18 个工具均有完整的非 MCP 模拟(以相同 token 数进行公平比较):

工具MCP token 数不使用 MCP节省比例加速倍数
qartez_cochange9214,622+99.4%2x
qartez_context1074,489+97.6%533x
qartez_find521,490+96.5%210x
qartez_impact3529,243+96.2%140x
qartez_outline3,00977,843+96.1%5x
qartez_project681,394+95.1%0x
qartez_unused4686,750+93.1%22x
qartez_deps1662,286+92.7%118x
qartez_map87674+87.1%1x
qartez_rename_file27185+85.4%211x
qartez_grep127763+83.4%72x
qartez_stats155848+81.7%1x
qartez_move161701+77.0%159x
qartez_calls5642,409+76.6%3x
qartez_refs201692+71.0%26x
qartez_read150495+69.7%100x
qartez_hierarchy7352,056+64.3%127x
qartez_rename439648+32.3%11x

另外 10 个分析工具没有有意义的 grep/read 对应项——它们解决的问题是非 MCP 技术栈完全无法解决的:

qartez_hotspots、qartez_clones、qartez_smells、qartez_test_gaps、qartez_wiki、qartez_boundaries、qartez_trend、qartez_knowledge、qartez_diff_impact、qartez_security。

多语言基准测试

make bench-all 会使用 5 个固定版本的开源软件测试夹具,对相同的 28 个场景进行测试——colinhacks/zod(TypeScript)、spf13/cobra(Go)、encode/httpx(Python)、FasterXML/jackson-core(Java),以及 Qartez 自测基准(Rust)——随后将跨语言汇总结果输出到 reports/benchmark-<lang>.md,并生成一份合并矩阵。每个工具、每种语言、每个场景,均使用 cl100k_base tokenizer,根据忠实模拟 Glob + Grep + Read + git log 的测试进行测量。

make bench          # Rust self-bench only - fresh measurements
make bench-all      # All 5 languages (Rust, TypeScript, Python, Go, Java) + cross-language summary
make bench-fixtures # Clone and index the pinned fixture repos

单语言测试的报告会生成在 reports/benchmark.md / reports/benchmark.json;bench-all 则会生成 reports/benchmark-<lang>.md 和一份合并的跨语言汇总报告。


底层工作原理

共分为 4 层,只需计算一次,每次工具调用时从 SQLite 查询。

1. Tree-sitter 解析

每个源文件都会由对应语言的 tree-sitter 语法进行解析。无需 LSP 服务,无需为每种语言安装 SDK,也没有冷启动开销。解析器会提取符号(函数、方法、类型、常量)、其签名、行范围、导出可见性、导入关系,以及 21 种命令式语言中每个函数的圈复杂度。

2. 结构形状哈希

函数体会被规范化为 AST 骨架(标识符、字面量和注释会被统一处理并忽略),然后进行哈希。具有相同哈希的两个符号即为结构克隆。这正是 qartez_clones 查询的内容。

3. 图分析

导入边构成有向图。其上会运行 3 种算法:

  • PageRank——Google 曾用于网页排名的同一种随机游走算法。应用于导入图后,它会找出构成项目架构骨干的文件。
  • 影响范围——通过反向 BFS 统计某项更改会传递影响多少个文件。qartez_impact 会利用这一点,在编辑前发出警告。
  • Leiden 聚类——社区检测算法,可将代码库划分为逻辑模块,用于自动生成架构知识库和 qartez_boundaries 起始配置。
4. Git 历史挖掘

遍历最近 N 次提交(默认 300 次),统计在同一提交中出现的文件对。这能揭示导入图无法发现的逻辑耦合——文件之间没有导入关联,却总是一起修改。

qartez_impact、qartez_context 和 qartez_hotspots 将这些信号融合——PageRank + 影响范围 + 联合变更 + 复杂度——给出一个综合排名结果。没有其他 MCP 服务能结合这四项。

存储

所有内容都存储在 .qartez/index.db 中,这是一个包含 FTS5 全文索引的 SQLite 文件。启动时,Qartez 只会重新解析修改时间发生变化的文件。服务器运行期间会自动启用文件监视器——编辑和新增的文件都会在后台重新索引,全程无需停机。传入 --no-watch 可将其禁用。

传输方式

Qartez 使用 stdio(stdin/stdout JSON-RPC)通信,这是标准的 MCP 传输方式。无需 HTTP 服务器,无需分配端口,也不会暴露到网络。IDE 会将 qartez 二进制文件作为子进程启动,并通过管道交换消息。


支持的语言

单个二进制文件,无需按语言单独配置。所有 37 种语言均由 tree-sitter 解析(对于缺少兼容语法的格式,则使用正则表达式回退方案)。其中 21 种命令式语言还会计算每个函数的圈复杂度,为 qartez_hotspots 提供支持。

完整语言表(37 种语言)
语言扩展名 / 文件名
TypeScript / JavaScript.ts .tsx .js .jsx .mts .cts .mjs .cjs
Rust.rs
Go.go
Python.py .pyi
Java.java
Kotlin.kt .kts
Swift.swift
C#.cs
C.c .h
C++.cpp .cc .cxx .hpp .hh .hxx
Ruby.rb
PHP.php
Bash.sh .bash
CSS.css .scss
Scala.scala .sc - 类、特质、对象、样例类
Dart.dart - 类、混入、枚举、基于下划线的隐私机制
Lua.lua - 函数、方法(M.f/M:f)、require 导入
Elixir.ex .exs - defmodule、def/defp、defstruct、alias/use/import
Zig.zig - pub fn、结构体、枚举、联合体、@import
Nix.nix - 属性绑定、函数、import 路径
Haskell.hs .lhs - 顶层函数、data、newtype、type、类型类、import
OCaml.ml .mli - let 绑定、type、module、class、exception、open/include
R.r .R - 函数/变量赋值、S4/R6 类、library/require/source
Protobuf.proto - message、service、rpc、enum、import
SQL.sql - CREATE TABLE/VIEW/FUNCTION/PROCEDURE、ALTER、BEGIN...END 块
HCL / Terraform.tf - 跨文件的 var/local/module/data/resource 引用
YAML.yaml .yml - K8s、GitHub Actions、GitLab CI、docker-compose、Ansible
DockerfileDockerfile、Dockerfile.*、.dockerfile - 多阶段 COPY --from 引用
MakefileMakefile、GNUmakefile、.mk - 目标、变量、include 导入
TOML.toml - 表、键、表数组
Nginx.conf、.nginx - server、location、upstream 块
Helm / Go 模板.tpl - define/include/template 块
Jenkinsfile / GroovyJenkinsfile、.groovy - pipeline、stage、node、def
Starlark / BazelBUILD、BUILD.bazel、WORKSPACE、WORKSPACE.bazel、.bzl、.star、.bazel - load、带有 name= 的规则、def
Jsonnet.jsonnet .libsonnet - local 函数/变量、字段、import/importstr
CaddyfileCaddyfile、.caddyfile - 站点块、handle、reverse_proxy、代码片段
Systemd 单元.service .timer .socket .mount .target .path .slice .scope - 节、ExecStart、指令

亮点: TypeScript、Rust、Go、Python、Java、Kotlin、Swift、C#、C/C++、Ruby、PHP、Dart、Scala、Elixir、Zig、Lua、Haskell、OCaml、R,以及另外 17 种语言。全部 21 种命令式语言均支持圈复杂度评分。


与其他方案的比较

2026 年,MCP 代码库智能领域竞争激烈。本节介绍直接的开源竞争项目、企业平台和相关生态系统。所有星标数均已于 2026 年 4 月对照各项目的 GitHub 仓库核实。

直接的开源 MCP 竞争项目

有九个项目与“用于代码库智能的 MCP 服务”这一细分领域相同,以下按 GitHub 星标数排序。

ProjectStarsImpl.Indexing approachLanguagesMCP tools
Qartez (this repo)newRusttree-sitter + SQLite + PageRank + blast radius + co-change + complexity + clones + boundaries3730
Serena23kPythonLSP (per-language language servers)46+~35
code-review-graph10.4kPythontree-sitter + SQLite + Leiden clustering23+28
Claude-Context5.9kTypeScriptEmbeddings + Milvus/Zilliz vector DB144
CodeGraphContext3kPythontree-sitter + KuzuDB / FalkorDB / Neo4j1421
Codebase-Memory MCP1.6kCtree-sitter + SQLite + hybrid type resolution6614
Repowise1.2kPythonDependency graph + git history + LLM-generated docs147
Code Index MCP903Pythontree-sitter (10 langs) + ripgrep fallback for 50+10 + 5011
Codanna651Rusttree-sitter + tantivy FTS + fastembed15~9
Feature-by-feature comparison
能力QartezSerenacode-review-graphClaude-ContextCodeGraphContextCodebase-MemoryRepowiseCode Index MCPCodanna
Tree-sitter 解析是否(LSP)是仅分块是是否是(10 种语言)是
PageRank 重要性排序是否否否否否否否否
影响范围(传递依赖项)是否是否否是否否是
Git 协同变更挖掘是否否否否是是否否
每个函数的圈复杂度是(21 种语言)否否否否否否否否
热点评分(复杂度 x PR x 变更频率)是否否否否否否否否
结构化代码克隆检测是否否否否否否否否
架构边界强制执行是否否否否否否否否
四信号影响分析(PR + 影响范围 + 协同变更 + 复杂度)是否否否否否否否否
代码异味检测(上帝函数、功能迷恋)是否否否否否否否否
测试覆盖缺口分析是否否否否否否否否
巴士系数 / 知识分析是否否否否否否否否
类型层次结构查询是通过 LSP否否否否否否否
调用图(调用方 / 被调用方)是部分支持是否是是否否是
重构(重命名 / 移动 / 重命名文件)是(预览 + 应用)仅重命名(LSP);通过 JetBrains 插件移动(付费)仅预览重命名否否否否否否
工具链命令运行器(测试 / 构建 / lint)是仅 Shell否否否否否否否
智能多信号上下文构建器是否部分支持否否否否否否
批量差异影响分析是否否否否否否否否
MCP 提示词模板是(6 个)否是(5 个)否否否否否否
一条命令安装到多个 IDE是(19 个 IDE,Rust 向导)否(手动)是(9 个 IDE)否(手动)是(10 个 IDE)是(10 个 Agent)否否否
安全扫描(正则表达式 + PageRank 评分)是否否否否否否否否
Git 历史中的复杂度趋势是否否否否否否否否
渐进式工具披露(分层)是(4 层)否否否否否否否否
语义 / 向量搜索是(可选启用,本地嵌入)否可选(FTS5 混合搜索)是(Milvus)否否否否是(fastembed)
社区检测 + 自动生成维基是(Leiden + 维基)否是(Leiden + 维基)否否部分支持(Louvain,无维基)否否否
图可视化否否是(D3.js)否是(Neo4j + HTML)是(3D 交互式)否否否
监视模式(增量重新索引)是(自动开启)部分支持是部分支持是是否是是
使用 LLM 评判器发布的逐工具基准测试是(28 个场景,8.3/10 对比 4.3/10)仅第三方是(6 个代码库,平均 8.2 倍)有限(声称约 40%)否是(arXiv 论文,10 倍令牌数)否否部分支持(criterion)
修改防护(阻止高风险编辑)是否否否否否否否否
是否需要嵌入模型 / 向量数据库否否可选是否否否否是
云依赖否否否是(默认)否否否否可选
### 企业级和 IDE 原生替代方案

面向愿意牺牲本地优先和开源特性,以换取精致体验或跨代码库规模的用户,解决相同问题的商业平台:

  • Sourcegraph Cody / Amp - 编译器级 SCIP 索引器,自 2026 年起提供官方 MCP 服务。以云端为先,企业级定价。
  • Augment Code - B 轮融资 2.27 亿美元。实时语义索引 + 跨 400k+ 个文件的代码关系图,自 2025 年 10 月起提供官方 MCP 服务。依赖云端。
  • Deep Graph MCP (CodeGPT) - 392 个星标。托管于云端的知识图谱后端;将任何仓库 URL 中的 github.com 替换为 deepgraph.co,即可获取预构建的代码图。无需本地索引。
  • JetBrains AI Assistant (IntelliJ 2025.2+) - 内嵌 MCP 服务,提供 IDE 级别的符号和诊断信息。仅适用于 JetBrains。
  • Cursor - 自定义嵌入模型,在 Turbopuffer 中共享团队索引。闭源 IDE,不提供 MCP 接入。
  • Windsurf Cascade - 基于 RAG 的 M-Query 检索。闭源 IDE,不提供 MCP 服务。

Qartez 为你提供这些平台出售的同等结构化智能——完全在你的笔记本电脑上运行,而且免费。

其他值得关注的项目(规模较小)
项目星标数实现语言专长
Drift772TS / Rust学习代码库模式和约定,并在多个会话中将其传授给 AI
Octocode319RustGraphRAG 知识图谱 + 混合语义搜索(4 个 MCP 工具)
mcp-server-tree-sitter287Python向 Agent 开放原始 tree-sitter 查询,以便组合自定义分析(约 20 个工具)
CodeGraph179RustSurrealDB + LSP + ReAct / LATS Agent 架构,支持部分影响范围分析
RepoMapper150Python将 Aider 基于 tree-sitter 的 PageRank 封装为单个 MCP 工具
Narsil-MCP134Rust90 个 MCP 工具、32 种语言、调用图 + 污点分析 + SBOM 安全扫描
Code Pathfinder118Go专注安全的 SAST,通过 MCP 进行跨文件污点和数据流分析
Code Graph RAG MCP86TypeScript图 + RAG 混合方案、26 个 MCP 方法、克隆检测
Tree-sitter Analyzer20PythonPageRank + 可阻止不安全编辑的 modification_guard(17 种语言)
AiDex25TypeScript30 个 MCP 工具、任务管理、截图采集、日志中心(11 种语言)
相邻生态(类别不同,解决的问题相同)
  • Aider repo-map - Paul Gauthier 的 CLI 于 2023 年 10 月率先将 tree-sitter 与 PageRank 结合。它集成在 aider CLI 中,而非作为 MCP 服务。RepoMapper 将单个 repo_map 输出封装为 MCP。
  • Continue.dev - MCP 客户端,而非服务。其文档明确建议将 Continue 与专用代码图 MCP 服务配合使用——Qartez 正是承担这一角色。
  • Context7、Mem0、Pieces LTM - 记忆和文档工具,而非代码库索引器。它们可以互补,而非竞争。
  • Block Goose、Cline、Codebuff - 使用 MCP 服务的编码 Agent 客户端。它们是 Qartez 这类工具的使用者。

Qartez 的不同之处

1. 四信号影响分析。 qartez_impact、qartez_diff_impact、qartez_context 和 qartez_hotspots 将 PageRank 重要性、静态影响范围、Git 共同变更和圈复杂度融合为一个排序结果。其他项目都没有同时结合这四项指标。

2. 在一个服务中提供热点、克隆、边界、安全、代码异味、测试缺口、知识和趋势分析。 qartez_hotspots 按复杂度 × 耦合度 × 变更频率对仓库中最危险的函数进行排序。qartez_clones 通过 AST 形状哈希查找重复逻辑。qartez_boundaries 强制执行在 .qartez/boundaries.toml 中声明的架构规则。qartez_security 扫描漏洞模式,并根据 PageRank 评分。qartez_smells 检测上帝函数、过长的参数列表和特性依恋。qartez_test_gaps 查找未经测试的源文件,并按风险排序。qartez_knowledge 通过 Git blame 揭示单点知识风险。qartez_trend 逐次提交跟踪函数复杂度的变化。在其他地方,这些是八种独立的商业产品;在这里,每种只需一次 MCP 调用。

3. 通过 MCP 进行重构,支持预览和应用。 qartez_rename、qartez_move 和 qartez_rename_file 让助手通过一次 MCP 调用即可完成原子化、可审查的重构。Serena 通过 LSP 提供重命名功能(需要按语言安装服务器);其余服务都没有提供重构工具。

4. 内置安全网。 修改保护机制会阻止 AI 在未先审查影响范围的情况下编辑高影响文件。主要竞品对比表中的其他服务都没有提供此功能。

5. 用数据衡量,而非空口声称。 28 个场景,LLM 评审质量评分为 8.3/10,对比结果为 4.3/10,并提供每种工具的令牌数量和延迟。所有结果都可通过 make bench(单语言)或 make bench-all(5 种语言,并提供跨语言摘要)复现。

6. 原生 Rust、本地优先、零云端依赖。 三个二进制文件(qartez、qartez-guard、qartez-setup)。无需 Python 运行时、向量数据库或云账户。所有操作都在你的机器上运行。代码不会离开本机。可选的 semantic cargo 功能可添加本地嵌入搜索,但默认构建无需下载模型。


命令行选项

Qartez 也可作为独立 CLI 使用。运行 qartez <tool_name>(例如,qartez map、qartez find Config、qartez impact src/server/mod.rs),即可直接在终端中使用任何核心或分析工具,无需 MCP 客户端。

选项说明默认值
--root <path>要索引的项目根目录(适用于单体仓库,可重复指定)自动检测
--reindex强制完整重新索引关闭
--git-depth <n>用于分析共同变更的提交数300
--db-path <path>覆盖索引位置.qartez/index.db
--no-watch禁用自动文件监视器(默认开启)监视器开启
--wiki <path>索引后生成架构 Wiki关闭
--leiden-resolution <f>聚类粒度(数值越大,聚类越多)1.0
--format <format>CLI 子命令的输出格式:human、json、compacthuman
--log-level <level>error、warn、info、debug、trace(接受任何 tracing 指令)info

项目布局
src/
  main.rs                  Entry point: index, compute, start server
  lib.rs                   Library root (re-exports)
  cli.rs                   CLI argument parsing (19 subcommands)
  cli_runner.rs            CLI subcommand dispatcher
  config.rs                Project configuration and root detection
  error.rs                 Error types
  str_utils.rs             String utilities (stable floor_char_boundary polyfill)
  toolchain.rs             Toolchain detection (Cargo, npm, Go, etc.)
  watch.rs                 File watcher for incremental re-indexing
  guard.rs                 Modification guard evaluation engine
  embeddings.rs            Local embedding model for qartez_semantic (opt-in)
  server/
    mod.rs                 MCP server entrypoint - dispatches to per-tool handlers
    tools/                 30 per-tool handler modules (one file per MCP tool)
    prompts.rs             6 workflow prompt templates
    tiers.rs               Progressive tool disclosure (core/analysis/refactor/meta)
    cache.rs               Tree-sitter parse cache
    helpers.rs             Shared handler utilities
    overview.rs            Overview/map generation
    params.rs              Tool parameter structs
    treesitter.rs          Tree-sitter integration helpers
    mcp_instructions.md    Embedded MCP server instructions
  index/
    mod.rs                 Core indexing engine (full + incremental, import resolution)
    walker.rs              File discovery (respects .gitignore + .qartezignore)
    parser.rs              Tree-sitter parser pool
    symbols.rs             Symbols / imports / references + AST shape hashing
    languages/             37 language adapters (21 with cyclomatic complexity)
  graph/
    mod.rs                 Graph module root
    pagerank.rs            PageRank on import graph
    blast.rs               Blast radius BFS
    leiden.rs              Community detection (Leiden clustering)
    boundaries.rs          Architecture-boundary rules engine
    security.rs            Security rule engine (powers qartez_security)
    wiki.rs                Architecture wiki renderer
  git/
    mod.rs                 Git module root
    cochange.rs            Co-change pair mining
    diff.rs                Diff range analysis (for qartez_diff_impact)
    trend.rs               Complexity trend over git history
    knowledge.rs           Code authorship and bus-factor analysis
  storage/
    mod.rs                 Storage module root
    schema.rs              SQLite + FTS5 schema
    read.rs / write.rs     Query and mutation helpers
    models.rs              Row structs
  bin/
    setup.rs               Interactive IDE setup wizard (19 IDEs)
    guard.rs               PreToolUse modification guard
    benchmark.rs           Benchmark harness entry point
  benchmark/               Benchmark internals (cargo feature)
    profiles/              Per-language benchmark profiles (Rust, TS, Python, Go, Java)
    scenarios.rs           28 benchmark scenarios
    judge.rs               LLM-judge harness
    report.rs              Markdown / JSON report writers
    tokenize.rs            cl100k_base token accounting
scripts/                   Hook + snippet assets embedded by qartez-setup
benchmarks/fixtures.toml   Pinned OSS repos for multi-language benchmarks
reports/                   Generated benchmark.md / benchmark.json artifacts

参与贡献

发现了 Bug?请提交 issue。想要添加一种语言、修复解析器或改进工具?欢迎提交拉取请求——请先阅读 CONTRIBUTING.md 和 CODE_OF_CONDUCT.md。非简单的 PR 需要签署 CLA.md。

git clone https://github.com/kuberstar/qartez-mcp.git
cd qartez-mcp
cargo build
cargo test

每个版本的发行说明都收录在 CHANGELOG.md 中。


安全

发现了漏洞?请勿公开提交 issue。 请按照 SECURITY.md 中的漏洞披露政策操作。


许可证

采用 Qartez Small Team License(个人和小型团队免费)和 Qartez Commercial License(适用于其他所有人)双重许可。请在 LICENSE 中阅读完整条款,并在 COMMERCIAL.md 中查看商业条款摘要。SPDX 标识符:LicenseRef-Qartez-Dual。


Grep 曾为人类而生。Qartez 专为 Agent 打造。

如果 Qartez 能为你节省哪怕 10% 的每月 AI 账单,请为项目点亮 Star——这是唯一能让其他开发者知道这种方法值得一试的信号。

评论

支持 Markdown

第一次接触 MCP?

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

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