mcpField
C
crg

crg

本地服务
github.com/n24q02m开发工具76今天更新

关于 crg

crg 是一个 MCP 服务,使用 Tree-sitter 解析代码库,构建函数、类与导入之间的结构化知识图谱,让客户端只读取与任务相关的代码。默认通过 fastretrieval 的本地 ONNX 模型进行语义搜索,无需配置或 API 密钥,也可选用云端 embedding。

主要功能

  1. 01Tree-sitter 解析与结构图谱构建
  2. 02语义搜索,默认使用本地 ONNX 模型
  3. 03限定名调用关系解析
  4. 04输出分页
  5. 05v2.0 起支持时间版本列与可选安全扫描

适用场景

  1. 01为代码审查提供相关函数与调用上下文
  2. 02分析变更的影响范围
  3. 03在命令行中对本地仓库建立图谱并搜索

MCP 相关

crg 以 MCP 服务形式运行,通过 stdio 或 HTTP 向 MCP 客户端暴露图谱构建与查询功能。CLI 是其主要使用方式,MCP 为次要的协议适配层。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"n24q02m-crg": {
"command": "uvx",
"args": [
"better-code-review-graph"
],
"env": {
"EMBEDDING_MODELS": "<EMBEDDING_MODELS>",
"LOCAL_EMBEDDING_MODEL": "<LOCAL_EMBEDDING_MODEL>",
"LOCAL_RERANK_MODEL": "<LOCAL_RERANK_MODEL>",
"LOCAL_EMBEDDING_DIM": "<LOCAL_EMBEDDING_DIM>",
"LOCAL_EMBEDDING_MODEL_FILE": "<LOCAL_EMBEDDING_MODEL_FILE>",
"LOCAL_EMBEDDING_POOLING": "<LOCAL_EMBEDDING_POOLING>",
"LOCAL_EMBEDDING_NORMALIZE": "<LOCAL_EMBEDDING_NORMALIZE>",
"HULL_EMBED_API_KEY": "<HULL_EMBED_API_KEY>",
"HULL_CHAT_API_KEY": "<HULL_CHAT_API_KEY>",
"EMBEDDING_BACKEND": "<EMBEDDING_BACKEND>"
}
}
}
}
启动命令uvx better-code-review-graph
需要配置的环境变量
EMBEDDING_MODELSEmbedding models in selection order; the current runtime uses the first provider/model entry; empty = local ONNX
LOCAL_EMBEDDING_MODELBuilt-in fastretrieval model ID or local directory with fastretrieval-manifest.json
LOCAL_RERANK_MODELFastretrieval TextCrossEncoder model ID; empty = reranking disabled
LOCAL_EMBEDDING_DIMRequired positive output dimension for an external local embedding ID without a manifest
LOCAL_EMBEDDING_MODEL_FILEONNX file path inside a manifest-backed local embedding directory
LOCAL_EMBEDDING_POOLINGExplicit pooling for an external local embedding ID without a manifest
LOCAL_EMBEDDING_NORMALIZEExplicit L2 normalization for an external local embedding ID without a manifest
HULL_EMBED_API_KEY密钥API key for the [models.embed] cell transport (OpenRouter pre-wired default); host-injected, overrides the cell api_key
HULL_CHAT_API_KEY密钥API key for the [models.chat] cell transport (OpenRouter pre-wired default); host-injected, enables LLM summaries when the cell model is set
EMBEDDING_BACKENDDEPRECATED (honored one release): embedding backend override 'local' or 'cloud'. Use EMBEDDING_MODELS instead.

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

安装包
pypibetter-code-review-graph3.31.0

工具

还没有获取到工具列表

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

详细介绍

更好的代码审查图谱

已重命名(2026-09-13): 仓库现已更名为 crg,以 CLI 为先(crg 命令)。PyPI 包仍为 better-code-review-graph;MCP 服务是次要入口。

mcp-name: io.github.n24q02m/crg

用于节省令牌的代码审查知识图谱——在整个代码库中进行语义搜索并解析调用图。

Mode CI codecov PyPI License: Apache-2.0

Python MCP semantic-release Renovate

n24q02m 的姊妹项目(点击展开) | 项目 | 标语 | 标签 | |---|---|---| | [agent-chat-plugin](https://github.com/n24q02m/agent-chat-plugin) | AI Agent 在共享文件夹中相互聊天——无需人工转发,也无需编排器,wor... | 工具 | | [crg](https://github.com/n24q02m/crg) | 用于高效利用令牌进行代码审查的知识图谱——语义搜索和调用关系... | MCP | | [better-drive](https://github.com/n24q02m/better-drive) | 双向 Google Drive 同步,支持 .driveignore 过滤器——采用 rclone 引擎,提供 Windows 托盘 | 工具 | | [better-email-mcp](https://github.com/n24q02m/better-email-mcp) | 为 AI Agent 提供 IMAP/SMTP 邮件功能——读取、发送、整理文件夹并管理附件... | MCP | | [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) | Godot Engine 的复合 MCP 服务——提供 17 个复合工具,支持 AI 辅助游戏开发... | MCP | | [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) | 面向 AI Agent、以 Markdown 为先的 Notion——页面、数据库、块和评论... | MCP | | [better-semantic-release](https://github.com/n24q02m/better-semantic-release) | 可直接替换的 python-semantic-release 分支,内置发布安全防护(孤... | 工具 | | [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) | 为 AI Agent 提供 Telegram 功能——在 Bot 和用户账号上处理消息、聊天、媒体和联系人... | MCP | | [better-workspace-mcp](https://github.com/n24q02m/better-workspace-mcp) | Google Workspace MCP 服务(Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch... | MCP | | [claude-plugins](https://github.com/n24q02m/claude-plugins) | 面向 n24q02m MCP 服务的 Claude Code 插件市场——安装网页搜索... | 市场 | | [imagine-mcp](https://github.com/n24q02m/imagine-mcp) | 为 AI Agent 提供图像和视频理解与生成——支持 Gemini、Op... | MCP | | [jules-task-archiver](https://github.com/n24q02m/jules-task-archiver) | 通过 batchexecute API 批量操作 Jules 任务的 Chrome 扩展——a... | 工具 | | [mcp-core](https://github.com/n24q02m/mcp-core) | 用于构建 MCP 服务的共享基础组件——Streamable HTTP 传输、OAuth... | MCP | | [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) | 具备混合搜索和嵌入式同步功能的持久化 AI 记忆。开放、免费、无限... | MCP | | [fastretrieval](https://github.com/n24q02m/fastretrieval) | 面向 ONNX 和 GGUF 嵌入、重排序及模型契约的快速多模型检索运行时 | 库 | | [skret](https://github.com/n24q02m/skret) | 无需服务端的密钥管理。 | 命令行 | | [tacet](https://github.com/n24q02m/tacet) | 一种自蒸馏神经符号级联,可将大模型成本分摊到知识... | 工具 | | [web-core](https://github.com/n24q02m/web-core) | 用于搜索、抓取、HTTP 安全和 st... 的共享 Web 基础设施包 | 库 | | [wet-mcp](https://github.com/n24q02m/wet-mcp) | 面向 AI Agent 的开源 MCP 服务:网页搜索、内容提取和 lib... | MCP |
crg MCP 服务

一个 MCP 服务,可使用 Tree-sitter 解析代码库,构建函数、类和导入项的结构图,并为 Claude(或任何 MCP 客户端)提供精准上下文,让它只读取相关内容,而不是整个代码树。默认情况下,语义搜索通过 fastretrieval 的本地 ONNX 模型注册表运行(零配置,无需 API 密钥),也可选用云端嵌入链。它是 code-review-graph 的分支,修复了多词搜索、限定名称调用解析、双模式嵌入和输出分页,并提供生产级 CI/CD。

v2.0 迁移(重大变更)

v2.0 新增了时间列(每个节点和边上都有 valid_from_sha / valid_to_sha),并提供可选启用的安全扫描器。首次打开 GraphStore 时会自动应用架构迁移,并将 2.0 之前的数据库备份保存到 <graph_db>.pre-2.0.bak,以便回滚。完整的架构变更列表、行为变更、环境要求和降级步骤(CRG_DOWNGRADE_TO_1_X=1 uv run crg)请参阅 BREAKING_CHANGES.md。

目录

安装

对于 OMP 和其他本地编码框架,主要使用方式是通过包的 CLI 以及捆绑的 skills/ 工作流。这些技能会直接调用 CLI, 不需要配置 MCP 服务映射。

# Run without a persistent install (short `crg` script; PyPI package name stays
# better-code-review-graph, so `uvx` needs the explicit --from form)
uvx --python 3.13 --from better-code-review-graph crg graph build --full-rebuild \
  --repo-root /path/to/repo
uvx --python 3.13 --from better-code-review-graph crg graph stats \
  --repo-root /path/to/repo

# Or install the console scripts (installs both `crg` and the legacy long name)
pip install better-code-review-graph
crg query search --search-query "authentication" \
  --repo-root /path/to/repo

用于深度安全扫描的可选 Semgrep 引擎是单独的额外组件:

pip install 'better-code-review-graph[security]'

MCP stdio 仍是供有此需求的客户端使用的次要协议适配器:

{
  "mcpServers": {
    "crg": {
      "command": "uvx",
      "args": ["--python", "3.13", "better-code-review-graph"],
      "env": { "MCP_TRANSPORT": "stdio" }
    }
  }
}

安装方式矩阵(除特别说明外均为 stdio;上述 CLI 优先用法仍是主要方式):

客户端安装
Claude Code(插件)/plugin marketplace add n24q02m/claude-plugins 然后运行 /plugin install better-code-review-graph@n24q02m-plugins
Claude Code(stdio)claude mcp add crg -- uvx --python 3.13 better-code-review-graph
Codex在 ~/.codex/config.toml 的 mcp_servers 下注册 stdio 命令 uvx --python 3.13 better-code-review-graph
Gemini CLI将上方的 mcpServers JSON 添加到 ~/.gemini/settings.json
Cursor / Windsurf通过客户端的 MCP 设置(mcp.json)添加上方的 mcpServers JSON
任意客户端(HTTP 自托管)将客户端指向 https://<your-host>/mcp(MCP_TRANSPORT=http)——仅支持自托管,没有托管端点

使用 AI Agent 安装 —— 将以下内容粘贴给你的 AI 编码 Agent:

按照以下步骤安装 MCP 服务 crg: https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-code-review-graph/setup-with-agent.md

完整的 CLI 用法请参阅 CLI。可选的客户端专属 MCP 设置请见 mcp.n24q02m.com/servers/better-code-review-graph/setup/。

用法

运行服务有两种方式,此外还有使用它的入口。

开发:uv,无需身份验证(仅限环回地址)
# instance config lives at $CRG_CONFIG_DIR or ~/.crg (same schema as hull's
# config.toml); a default no-auth template is fine for local dev
uv run better-code-review-graph server start
# -> http://127.0.0.1:8000/mcp  (no-auth is refused on any off-loopback bind)
常驻运行:docker(令牌身份验证)
cp docker-config/config.example.toml docker-config/config.toml
# mint a token + hash (hull CLI ships with crg's dependency tree):
#   TOKEN=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
#   hull token hash "$TOKEN"   # paste output into token_hash in config.toml
docker compose up -d

compose 文件会构建 Dockerfile 的 http 目标(镜像 crg:http), 仅将容器发布到主机环回地址 (127.0.0.1:${CRG_PORT:-8772}:8080),并将 ./docker-config/config.toml 以只读方式挂载到容器的配置目录 (CRG_CONFIG_DIR=/data/config);图状态会持久保存在名为 crg-data 的卷中。所有状态都保留在你的机器上。

使用方式:CLI 或 MCP

CLI(本地图,无需服务):

crg graph build --full-rebuild --repo-root /path/to/repo
crg query search --search-query "authentication" --repo-root /path/to/repo

通过 HTTP 使用 MCP(远程/常驻运行):将任意 MCP 客户端指向 http://127.0.0.1:8772/mcp,并设置 Authorization: Bearer <token>:

{
  "mcpServers": {
    "better-code-review-graph": {
      "url": "http://127.0.0.1:8772/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}
按任务配置模型

每个任务(embed / rerank / chat / jev_score)都会从实例配置中的 [models.<task>] 解析各自的 OpenAI 规范供应商配置单元:独立的 base_url + api_key + model。使用云端还是本地完全由配置决定—— 将 base_url 指向 OpenRouter、供应商或你自己的本地网关 (例如 http://host.docker.internal:11434/v1)。API 密钥仅供主机使用: 请将其保存在 config.toml(在 docker-config/ 下由 gitignore 忽略)中,或通过 HULL_<TASK>_API_KEY 环境变量提供;绝不会由最终用户提供。

本地优先边界

CRG 面向编码工作流,采用本地优先模式:

  • CLI 和内置 Skills 是构建/查询图、影响分析、评审上下文、安全扫描和仓库接入的主要入口。
  • MCP stdio 是基于同一组本地域服务的次要协议适配器;它不会维护独立的图实现。
  • 图状态保存在 <repo>/.crg/graph.db 中,除非明确的多用户/自托管配置选择其他数据目录。
  • PyPI、CI、安全扫描、GitHub 发布以及符合条件的稳定版 MCP Registry 发布仍在进行。保留历史公开 OCI 标签,但不再发布新的公开 Docker Hub/GHCR 镜像。
  • CRG 在目标拓扑中没有托管的 Cloudflare 运行时。

Smithery

仓库提供 smithery.yaml,以便通过 Smithery 构建和运行服务。它通过 stdio 部署,无需启动配置——配置架构为空,任何可选的云端嵌入/摘要密钥都在运行时通过服务自身的配置流程提供(见下文的配置)。启动命令与本地安装使用的 uvx 调用相同:

startCommand:
  type: stdio
  commandFunction: |-
    (config) => ({ command: 'uvx', args: ['--python', '3.13', 'crg'] })

配置

所有功能开箱即用,无需任何配置——语义搜索使用 fastretrieval 中的本地 ONNX 注册表(Qwen3-Embedding-0.6B 是当前内置的参考条目,首次运行 graph embed 时下载约 570 MB)。此参考条目并非仅限 Qwen 的边界:任何内置注册表 ID 或有效的非 Qwen 工件清单都遵循相同的解析器。以下所有环境变量均为可选,仅在使用云端嵌入、大模型摘要或明确指定自带的本地工件时才需要。

模型选择

嵌入会选择 EMBEDDING_MODELS 中第一个 provider/model 条目;后续条目会保留为配置,但不会作为运行时回退选项。摘要模型取自 [models.chat] 单元格的 model 字段(未配置的单元格会禁用摘要)。传输方式始终取自每项任务的 [models.<task>] 单元格(预先配置了 OpenRouter 默认值)——模型名称前缀只用于选择线路细节,不会选择密钥。

变量用途为空时(默认值)
EMBEDDING_MODELS云端嵌入选择;第一个条目处于启用状态本地 fastretrieval 注册表
[models.chat] 单元格 model选择 graph(action="summarize") 的补全模型禁用摘要

Cohere embed-v4.0 请求并存储 1024 维数据;其他后端仍使用 768 维存储。CRG 不会截断、填充或静默接受不同的服务商维度。复用前,嵌入行的模型和字节宽度必须匹配。更改模型或升级旧的 768 维 Cohere 索引后,请运行 graph(action="embed")。搜索会在调用服务商之前拒绝不兼容的维度;图节点会保留,重新嵌入只会替换过时的向量。

提供商 API 密钥

密钥位于每个任务单元格的 api_key 中(仅主机端;见下表)。 仅有密钥不会选择模型:空的嵌入链会保持本地运行,空的摘要链则保持禁用状态。已配置的云端服务出错时,不会回退到本地或其他提供商。摘要器需要聊天补全模型。

任务配置单元格备注
嵌入实例配置中的 [models.embed](base_url + api_key + model),或 HULL_EMBED_API_KEY 环境变量通过 hull-core 使用符合 OpenAI 规范的普通 HTTP;默认已预先接入 OpenRouter。EMBEDDING_MODELS 用于选择模型名称——密钥不会选择模型。模型前缀(cohere/…、jina_ai/…、gemini/…)仅用于选择传输细节(例如 Cohere 的 input_type);不存在按供应商区分的 API 密钥。直接使用 Cohere embed-4.0 是文档所述的可选例外(规范 2026-09-26 §9)。
摘要器[models.chat] 单元格(或 HULL_CHAT_API_KEY)需要聊天补全模型;默认使用 OpenRouter。

供应商专用的密钥环境变量(JINA_AI_API_KEY、GEMINI_API_KEY、 OPENAI_API_KEY、GOOGLE_VERTEX_EXPRESS_API_KEY、…)不会被 crg 读取; 已移除的按供应商分发逻辑曾存在于去除主机依赖前的技术栈中。

高级配置
变量用途
EMBEDDING_MODELS以逗号分隔的嵌入模型链;第一项是云端模型(由主机管理;密钥不会选择模型)。旧版 EMBEDDING_MODEL 会在下一次发布前继续受支持,并显示弃用警告。
DISABLE_LOCAL_EMBED跳过本地 ONNX 下载;除非配置了云端链,否则嵌入功能不可用
LOCAL_RERANK_MODEL用于有界语义重排序的 Fastretrieval TextCrossEncoder 模型 ID
LOCAL_EMBEDDING_DIM对于没有清单的外部模型 ID,必须指定的维度
LOCAL_EMBEDDING_MODEL_FILE清单支持的制品目录中的 ONNX 文件路径
LOCAL_EMBEDDING_POOLING对于没有清单的外部 ID,显式指定池化方式:CLS、MEAN、LAST_TOKEN 或 DISABLED
LOCAL_EMBEDDING_NORMALIZE对于没有清单的外部 ID,显式指定 L2 归一化
CRG_DATA_DIR覆盖每用户数据目录(默认为 ~/.crg),该目录用于 HTTP 多用户模式下存储每用户图谱和凭据
EMBEDDING_BACKEND / EMBEDDING_MODEL已弃用的单数变量,仍支持一个发布周期并显示警告——请迁移到 EMBEDDING_MODELS。不再读取去除主机依赖前的摘要模型和基础 URL 环境变量;模型和传输配置位于 [models.*] 单元格中

配置 LOCAL_RERANK_MODEL 后,语义向量搜索会检索一个有界候选池,包含 min(max(limit * 4, limit), 100) 行,应用现有的 kind、repo 和实时行筛选器,然后对该候选池重新排序,最多返回 limit 行。响应使用 search_mode="semantic_reranked",并添加 rerank_score,同时保留 similarity_score。留空时,会沿用现有的 limit * 2 向量路径和 search_mode="semantic"。配置的重排序器发生故障时会返回明确错误;CRG 不会静默回退到向量或关键词结果。关键词搜索(包括 as_of 快照)不会调用重排序器。

示例——云端嵌入 + 摘要

~/.crg/config.toml(手动编写,或从 hull config init 开始,该命令会预先配置 OpenRouter 默认值):

[models.embed]
base_url = "https://openrouter.ai/api/v1"
api_key = "sk-or-..."
model = "cohere/embed-v4.0"

[models.chat]
base_url = "https://openrouter.ai/api/v1"
api_key = "sk-or-..."
model = "minimax/minimax-m3:free"

MCP 服务条目的等效环境变量配置(键会覆盖对应单元格;模型名称仍来自 EMBEDDING_MODELS / model 字段):

{
  "mcpServers": {
    "crg": {
      "command": "uvx",
      "args": ["--python", "3.13", "better-code-review-graph"],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "EMBEDDING_MODELS": "cohere/embed-v4.0",
        "HULL_EMBED_API_KEY": "sk-or-...",
        "HULL_CHAT_API_KEY": "sk-or-..."
      }
    }
  }
}

Cohere 嵌入需要付费。在进行实际索引/查询之前,请先授权限定额度;选择 Minimax 免费补全模型并不意味着嵌入免费。模型名称前缀(cohere/…、openrouter/…)仅用于选择传输格式细节——传输方式和凭据来自由宿主管理的 [models.*] 单元格。

CRG 目前没有云端重排调用:LOCAL_RERANK_MODEL 是其唯一的重排路径。设置 RERANK_MODELS 或 RERANK_API_BASE 并不会启用云端重排。

工具

共六个工具,每个工具将相关操作归为一组,以精简工具接口。

graph——图生命周期

操作:build | update | stats | embed | export | summarize

操作描述
build完整或增量构建图。设置 full_rebuild=true 可重新解析所有文件;传入 roots 可将其他仓库目录合并到一个图中。
updatebuild 的别名,且 full_rebuild=false(增量)。
stats图的规模、语言、节点/边明细、嵌入数量。
embed计算用于语义搜索的向量嵌入。双模式:本地 ONNX 或云端链路。
export将图导出为 graphml / json-ld / dot / cypher。可内嵌导出或导出到 output_path。
summarize为 Function 节点生成由大模型生成的单段文档字符串(通过 [models.chat] 单元格;未配置模型时不执行任何操作)。调用数量受 max_nodes 限制。
query——图查询

操作:query | search | impact | large_functions | spot_check | renamed_in_diff | diff

操作描述
query预定义模式:callers_of、callees_of、imports_of、importers_of、children_of、tests_for、inheritors_of、file_summary。
search按名称/关键词或语义相似度搜索代码实体。
impact评估已更改文件的影响范围。根据 git diff 自动检测。支持分页,使用 max_results。
large_functions查找超过行数阈值的函数/类。
spot_check从最近一次 callers_of/callees_of/inheritors_of/importers_of 结果中随机抽取调用点片段。
renamed_in_diff调用点行号相对于基准 ref 发生偏移的符号。
diff两个提交 SHA 之间新增/删除/修改的节点(from_sha、to_sha)。

大多数读取操作都接受 as_of=<sha>,用于获取时间点快照;也接受 repo=<repo_id>,用于限定联合多仓库图的范围。

review——代码审查上下文

操作:context(默认)| delta

经过 token 优化的审查上下文,包含结构摘要、受影响节点、源代码片段和审查指导。context 会根据 git diff 自动检测更改文件;delta(使用 from_sha/to_sha,可选 show_line_shifts)会显示两个提交之间的重构移动。

config——服务配置和凭据设置

操作:status | set | cache_clear | setup_status | setup_start | setup_skip | setup_reset | setup_complete

操作描述
status服务信息:版本、图路径、节点/边数量、嵌入后端、嵌入数量。
set更新运行时设置(key=log_level)。
cache_clear移除所有已计算的嵌入。
setup_status显示当前凭据状态,以及哪些模型单元格配置了密钥。
setup_start说明宿主在哪里配置 API 密钥(由宿主管理的模型单元格)。
setup_skip设置为本地模式(本地 ONNX 嵌入,不使用云端单元格)。
setup_reset将状态重置为本地模式;下次调用时由宿主配置重新解析。
setup_complete根据宿主配置重新解析凭据状态。
security -- 安全扫描

操作:scan | report | suppress | rule_list

操作描述
scan运行安全扫描(默认 engine='heuristic',使用 5 条正则规则;或使用 'semgrep')。扫描结果会保存在 nodes.security_tags 中。
report将缓存的扫描结果重新输出为 JSON(format='json')或 SARIF v2.1.0(format='sarif')。
suppress按 rule_id 忽略一条扫描结果(或设置 remove=true 取消忽略)。
rule_list列出某个引擎可用的规则。

semgrep 引擎需要 [security] extra,并会运行 Semgrep 的 p/auto registry pack 以及一个包含 3 条规则的精选叠加包。

help -- 完整文档

主题:graph | query | review | config | security | recipes

返回每个工具的完整文档。如果上面的精简描述不够详尽,请使用此工具。

CLI

此软件包会安装两个控制台脚本:crg(主脚本)和 crg(旧版长名称)。运行时不带任何参数,即可通过 stdio 启动 MCP 服务;添加开头位置参数,则会调用本地 CLI 子命令,该命令使用与 MCP 适配器相同的领域服务。运行 pip install 后可直接运行这些脚本;也可以通过 uvx --python 3.13 --from better-code-review-graph crg ... 运行,无需持久安装。

# Start the MCP server over stdio (default -- no subcommand)
crg

# Build, inspect, and embed the local graph
crg graph build
crg graph stats
crg graph embed

# Query relationships and impact
crg query query \
  --pattern callers_of --target "path/to/module.py::function"
crg query search --search-query "authentication"
crg query impact --changed-files src/app.py

# Produce review context and run a local security scan
crg review context --base HEAD~1
crg security scan --engine heuristic
命令描述
graph build完整或增量构建图。--full-rebuild 会重新解析每个文件;--base <ref> 用于设置增量差异的基准引用;--repo-root <path> 用于覆盖自动检测结果。
graph embed使用本地 ONNX 或已配置的云端链计算向量嵌入。
graph stats / graph export / graph import / graph summarize检查、导出/导入可移植的 crg 图,或汇总函数。
query query / query search执行关系模式查询或关键词/语义搜索。
query impact / query large_functions分析已更改文件的影响范围,或查找过大的节点。
query spot_check / query renamed_in_diff / query diff检查调用位置、行号变化或提交之间的图变化。
review context / review delta为代码更改生成审查上下文或差异分类。
security scan / security report / security suppress / security rule_list运行和管理启发式/Semgrep 安全扫描结果。

CLI 子命令会输出结构化 JSON,发生错误时以非零状态码退出。

功能

此分支相较于上游 code-review-graph 修复的内容:

功能code-review-graphcrg
多词搜索已损坏(按字面子字符串匹配)按 AND 逻辑拆分单词
callers_of/callees_of结果为空(目标仅为裸名称)限定名称解析 + 裸名称回退
嵌入sentence-transformers + torch(1.1 GB)fastretrieval ONNX + 云端(200 MB),双模式
输出大小无限制(超过 500K 字符)分页(max_results,带 truncated 标志)
工具设计9 个独立工具6 个分组工具:graph + query + review + config + security + help
插件钩子无效的 PostEdit/PostGit有效的 PostToolUse

对比

crg 在各项能力上与直接竞品的对比:

能力crgGreptileSourcegraph(Cody / MCP)CodeGraph(colbymchenry)
代码库知识图谱是(Tree-sitter,14 种语言,SQLite)是(函数/类/依赖)是(精确代码索引)是(Tree-sitter,20 多种语言,SQLite)
持久化增量更新是(git-diff + 文件哈希重新解析)?是(持续索引)是(OS 文件监视器,带防抖)
限定的调用解析(调用者/被调用者)是(同文件裸调用解析 + 回退)?是(转到定义 / 查找引用)是(调用者 / 被调用者 / 影响范围)
语义搜索 / 嵌入是(fastretrieval 本地注册表 + 云端 Jina/Gemini/OpenAI/Cohere)?是(语义 + 关键词 + 正则表达式)否(仅 FTS5 全文搜索)
Token 优化的代码审查上下文是(review 工具,限定于 git-diff)是(PR 审查评论)否(代码上下文助手)否(上下文层,而非审查)
安全扫描是(Semgrep p/auto + 3 条规则叠加,SARIF)??否
可自托管是(默认使用 stdio,绑定到机器)是(Docker / K8s / 隔离网络)是(自托管实例)是(100% 本地运行,无需 API 密钥)
免费 / 开源是(Apache-2.0)否(专有 SaaS;提供免费的 OSS 层级)否(Enterprise 许可证,源码不公开)是(MIT)

来源:Greptile · Greptile 定价 · Sourcegraph MCP · CodeGraph。标记为 ? 的单元格表示竞品未公开说明的能力,并非确认其不具备这些能力。

安全

  • 明确选择 -- 云端嵌入出错时会报告错误;运行时不会静默切换模型,也不会回退到本地 ONNX。
  • 错误处理 -- 工具会返回包含修复建议的错误字符串,不会崩溃。
  • 只读挂载 -- Docker 模式会将仓库挂载为 :ro(只读)。
  • 防 SSRF 的端点 -- 在进行任何出站调用前,都会验证自定义 [models.*] 单元格中的 base_url 值。

如需报告漏洞,请参阅 SECURITY.md。

从源码构建

git clone https://github.com/n24q02m/crg
cd crg
uv sync --group dev
uv run pytest
uv run crg

**要求:**Python 3.13、uv。

信任模型

此插件实现了 TC-Local(绑定到机器,单一信任主体)。完整分类请参阅 mcp-core 信任模型。

模式图数据库云端凭据谁可以读取你的数据?
stdio(默认)<repo>/.crg/graph.db(已加入 git 忽略规则)~/.crg/config.toml(AES-GCM,使用绑定到机器的密钥)只有你的 OS 用户
HTTP 自托管(多用户)每位用户各自使用 ~/.crg/subs/<sub>/graph.db每位用户各自使用 ~/.crg/subs/<sub>/config.json只有经过身份验证的用户

迁移与更新日志

图、安全扫描缓存和抑制状态现在都使用软件包专属的 .crg/ 目录。升级后运行一次 graph(action="build", full_rebuild=true), 若需要语义搜索,再运行 graph(action="embed")。旧的 .better-code-review-graph/ 状态目录,以及含义不明确的 .code-review-graph/ 和 .code-review-graph.db 路径及其 SQLite 辅助文件均会原样保留,不会迁移。请检查并明确重新应用所需的 抑制规则。

v2.0 版本新增了时间列(每个节点和边上都有 valid_from_sha / valid_to_sha) 以及一个可选的安全扫描器。首次打开 GraphStore 时会自动应用架构迁移, 并将升级前的 DB 备份写入 <graph_db>.pre-2.0.bak。如需降级并恢复备份:

CRG_DOWNGRADE_TO_1_X=1 uvx better-code-review-graph

完整的架构变更列表、行为变更和回滚步骤: BREAKING_CHANGES.md。按版本整理的完整历史: CHANGELOG.md。

文档

完整文档请访问 mcp.n24q02m.com/servers/better-code-review-graph/setup/:

  • 设置 -- Claude Code、Codex、Gemini CLI、Cursor、Windsurf、mcp.json 的安装方法
  • 模式概览 -- stdio / local-relay / remote-relay / remote-oauth
  • 多用户设置 -- 按 JWT sub 划分的凭据模型

使用任意 MCP 客户端中的 help 工具,查看各工具的内联参考文档。

许可证

Apache-2.0 -- 请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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