关于 Qartez Mcp
Qartez MCP 是面向 Claude Code 等编码 Agent 的代码智能 MCP 服务。它预先构建仓库的知识图谱,包括符号、导入关系、调用边和影响范围,使 Agent 通过查询而非逐文件扫描来理解代码。
主要功能
- 01预计算的仓库知识图谱
- 02符号定义查找与大纲输出
- 03影响范围分析与依赖关系查询
- 04基于 PageRank 与 git 共变的文件排序
- 05支持 37 种编程语言
- 06文件监视器保持索引更新
适用场景
- 01修改文件前评估会影响哪些导入方
- 02在大型代码库中快速定位符号定义
- 03识别高复杂度且高耦合的风险函数
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 43 个工具,如 qartez_map、qartez_find 和 qartez_impact,供 Agent 查询代码库索引。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Qartez MCP
代码库的 X 光视野——专为 AI Agent 打造,而非人类。
首个从设计之初就旨在由
大模型使用、而非供人阅读的代码智能服务。可将 AI 的 token 用量降低约 94%。
快速开始 · 43 个工具 · 修改防护 · 基准测试 · 对比 · 37 种语言 · 命令行 · 参与贡献 · 安全 · 更新日志
为什么要开发它
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 |
| Cline | VS Code 全局存储 saoudrizwan.claude-dev/settings/cline_mcp_settings.json |
| Roo Code | VS 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_trend | git 历史中的复杂度趋势:跟踪函数圈复杂度逐次提交的变化。标记复杂度正在增长、稳定或下降的函数。 |
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 确认风险。
工作原理:
- AI 尝试编辑
src/server/mod.rs - 防护程序检查:PageRank 为 0.23(> 0.05 阈值),影响范围为 10(>= 10 阈值)
- 编辑被阻止,并附上触发阈值的说明
- AI 调用
qartez_impact file_path=src/server/mod.rs,查看影响范围 - 防护程序为该文件授予 10 分钟的编辑窗口
- 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_cochange | 92 | 14,622 | +99.4% | 2x |
qartez_context | 107 | 4,489 | +97.6% | 533x |
qartez_find | 52 | 1,490 | +96.5% | 210x |
qartez_impact | 352 | 9,243 | +96.2% | 140x |
qartez_outline | 3,009 | 77,843 | +96.1% | 5x |
qartez_project | 68 | 1,394 | +95.1% | 0x |
qartez_unused | 468 | 6,750 | +93.1% | 22x |
qartez_deps | 166 | 2,286 | +92.7% | 118x |
qartez_map | 87 | 674 | +87.1% | 1x |
qartez_rename_file | 27 | 185 | +85.4% | 211x |
qartez_grep | 127 | 763 | +83.4% | 72x |
qartez_stats | 155 | 848 | +81.7% | 1x |
qartez_move | 161 | 701 | +77.0% | 159x |
qartez_calls | 564 | 2,409 | +76.6% | 3x |
qartez_refs | 201 | 692 | +71.0% | 26x |
qartez_read | 150 | 495 | +69.7% | 100x |
qartez_hierarchy | 735 | 2,056 | +64.3% | 127x |
qartez_rename | 439 | 648 | +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 |
| Dockerfile | Dockerfile、Dockerfile.*、.dockerfile - 多阶段 COPY --from 引用 |
| Makefile | Makefile、GNUmakefile、.mk - 目标、变量、include 导入 |
| TOML | .toml - 表、键、表数组 |
| Nginx | .conf、.nginx - server、location、upstream 块 |
| Helm / Go 模板 | .tpl - define/include/template 块 |
| Jenkinsfile / Groovy | Jenkinsfile、.groovy - pipeline、stage、node、def |
| Starlark / Bazel | BUILD、BUILD.bazel、WORKSPACE、WORKSPACE.bazel、.bzl、.star、.bazel - load、带有 name= 的规则、def |
| Jsonnet | .jsonnet .libsonnet - local 函数/变量、字段、import/importstr |
| Caddyfile | Caddyfile、.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 星标数排序。
| Project | Stars | Impl. | Indexing approach | Languages | MCP tools |
|---|---|---|---|---|---|
| Qartez (this repo) | new | Rust | tree-sitter + SQLite + PageRank + blast radius + co-change + complexity + clones + boundaries | 37 | 30 |
| Serena | 23k | Python | LSP (per-language language servers) | 46+ | ~35 |
| code-review-graph | 10.4k | Python | tree-sitter + SQLite + Leiden clustering | 23+ | 28 |
| Claude-Context | 5.9k | TypeScript | Embeddings + Milvus/Zilliz vector DB | 14 | 4 |
| CodeGraphContext | 3k | Python | tree-sitter + KuzuDB / FalkorDB / Neo4j | 14 | 21 |
| Codebase-Memory MCP | 1.6k | C | tree-sitter + SQLite + hybrid type resolution | 66 | 14 |
| Repowise | 1.2k | Python | Dependency graph + git history + LLM-generated docs | 14 | 7 |
| Code Index MCP | 903 | Python | tree-sitter (10 langs) + ripgrep fallback for 50+ | 10 + 50 | 11 |
| Codanna | 651 | Rust | tree-sitter + tantivy FTS + fastembed | 15 | ~9 |
Feature-by-feature comparison
| 能力 | Qartez | Serena | code-review-graph | Claude-Context | CodeGraphContext | Codebase-Memory | Repowise | Code Index MCP | Codanna |
|---|---|---|---|---|---|---|---|---|---|
| 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) |
| 修改防护(阻止高风险编辑) | 是 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 |
| 是否需要嵌入模型 / 向量数据库 | 否 | 否 | 可选 | 是 | 否 | 否 | 否 | 否 | 是 |
| 云依赖 | 否 | 否 | 否 | 是(默认) | 否 | 否 | 否 | 否 | 可选 |
面向愿意牺牲本地优先和开源特性,以换取精致体验或跨代码库规模的用户,解决相同问题的商业平台:
- 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 为你提供这些平台出售的同等结构化智能——完全在你的笔记本电脑上运行,而且免费。
其他值得关注的项目(规模较小)
| 项目 | 星标数 | 实现语言 | 专长 |
|---|---|---|---|
| Drift | 772 | TS / Rust | 学习代码库模式和约定,并在多个会话中将其传授给 AI |
| Octocode | 319 | Rust | GraphRAG 知识图谱 + 混合语义搜索(4 个 MCP 工具) |
| mcp-server-tree-sitter | 287 | Python | 向 Agent 开放原始 tree-sitter 查询,以便组合自定义分析(约 20 个工具) |
| CodeGraph | 179 | Rust | SurrealDB + LSP + ReAct / LATS Agent 架构,支持部分影响范围分析 |
| RepoMapper | 150 | Python | 将 Aider 基于 tree-sitter 的 PageRank 封装为单个 MCP 工具 |
| Narsil-MCP | 134 | Rust | 90 个 MCP 工具、32 种语言、调用图 + 污点分析 + SBOM 安全扫描 |
| Code Pathfinder | 118 | Go | 专注安全的 SAST,通过 MCP 进行跨文件污点和数据流分析 |
| Code Graph RAG MCP | 86 | TypeScript | 图 + RAG 混合方案、26 个 MCP 方法、克隆检测 |
| Tree-sitter Analyzer | 20 | Python | PageRank + 可阻止不安全编辑的 modification_guard(17 种语言) |
| AiDex | 25 | TypeScript | 30 个 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、compact | human |
--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——这是唯一能让其他开发者知道这种方法值得一试的信号。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。