mcpField
C
Codegraphx (cgx)

Codegraphx (cgx)

本地服务
techcraze00.github.io开发工具317 周前更新

关于 Codegraphx (cgx)

CodeGraphX 是面向 AI 编码 Agent 和开发者的本地代码图谱引擎,通过 Tree-sitter 与 SQLite 建立可查询的代码结构关系。它支持影响范围分析,并以精简格式返回结果。

主要功能

  1. 01Tree-sitter 解析代码
  2. 02SQLite 语义图谱
  3. 03符号快速查询
  4. 04上下游影响追踪
  5. 05跨语言 API 关联
  6. 06代码变更与诊断

适用场景

  1. 01评估修改函数的影响范围
  2. 02查找符号及调用关系
  3. 03检查循环依赖和未解析导入

MCP 相关

通过 stdio 提供 MCP 服务,向兼容 Agent 暴露 6 个工具,用于查询索引状态、文件、符号、影响范围及会话差异等。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"CodeGraphX": {
"command": "npx",
"args": [
"-y",
"codegraphx"
]
}
}
}
启动命令npx -y codegraphx

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

安装包
npmcodegraphx

工具

6

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

CodeGraphX (CGX)

CodeGraphX (CGX) 标志——面向 AI 编码 Agent 的代码库图引擎和 MCP 服务

npm 版本 npm 下载量 许可证 Node 版本 MCP 服务 网站

网站: techcraze00.github.io/CodeGraphX · npm: codegraphx

CodeGraphX (CGX) 是一款本地运行、节省 token 的代码库图引擎,面向 AI 编码 Agent 和开发者。它使用 Tree-sitter 解析源代码,在 SQLite 中存储双时态语义图,并通过 CLI 和 MCP 服务提供服务——因此,Agent 可以询问 “如果我修改这个函数,会导致什么问题?”,并在几百个 token 内得到准确答案,而不必阅读 50 个文件。


CodeGraphX 是什么?

定义—— CodeGraphX 是一个代码智能层:它以持久化、可查询的图结构呈现代码库中的符号(函数、类、变量)、它们之间的关系(calls、called_by、imports、inherits、跨语言的 API_CALLS),以及这些内容随时间的变化。

这是一种什么工具? 它与语言服务器(LSP)或代码搜索索引属于同一类,但专为 大模型 Agent 打造:

  • 语言服务器为编辑器逐个符号回答“跳转到定义”。
  • grep / 嵌入搜索能查找文本,却无法识别结构。
  • CodeGraphX回答结构化的全仓库推理问题——影响范围、依赖循环、跨语言契约、“这个符号到底是否存在?”——并以经过 token 优化的形式序列化答案,让 Agent 可以直接将其放入上下文中。

它要解决的核心问题—— AI 编码 Agent 会耗费大部分 token 预算来重新探索代码库:打开文件、滚动浏览、使用 grep 搜索,并在每次会话中反复阅读相同的模块。CodeGraphX 只需索引一次,就能通过图回答这些问题,让 Agent 把 token 用于推理,而不是扫描。

为什么它很有用(令牌经济学)

每个 Agent 操作都有令牌成本。来看一个常见问题:“如果我修改 validateInput,哪些内容会受到影响?”

方法Agent 的操作大致上下文成本
不使用 CGX搜索 validateInput,打开约 15–50 个候选文件,并逐一阅读以追踪调用位置数万个令牌,需要多次工具往返
使用 CGXexplain_impact({ symbol_name: "validateInput" }) → 返回一份小型 JSON,其中包含上游调用方和下游被调用方几百个令牌,只需一次往返

CGX 会以 TOON(Token-Oriented Object Notation,面向令牌的对象表示法)而非 JSON 序列化图,从而进一步节省令牌。TOON 是一种紧凑的表格编码,可去除 JSON 令牌计数中占比很高的重复键和大括号。

**客观说明:**以下准确率数据是根据人工标注的语料库测得的。上面的令牌数据是对典型 Agent 行为的示意模型,并非实验室基准测试;具体比例取决于你的代码仓库和 Agent。真正带来优势的是其机制(一条有针对性的图查询,而非读取多个文件)。

CGX 最能发挥作用的场景:

  • 大型或不熟悉的代码仓库,无法“通读所有内容”。
  • 较长的 Agent 会话(图可作为缓存,Agent 无需重新构建)。
  • 跨语言技术栈(React ⇄ Express/Flask/FastAPI),此类场景的调用图无法跨文件延伸。
  • 重构和代码审查,此时影响范围分析以及死代码/损坏导入检测都很重要。

完整功能

功能能提供什么
🧠 符号图为每个函数/类/方法建立图,并包含 calls、called_by、imports、inherits 边
⚡ O(1) 符号查找布隆过滤器无需访问数据库,即可返回 probable_yes/definite_no
💥 影响追踪通过 SQL CTE 递归追踪上游(调用方)/下游(被调用方)的影响范围
🌉 跨语言链接将前端 fetch/axios 调用与后端路由匹配,并建立带置信度评分的 API_CALLS 边
🕑 双时态历史记录仅追加的图——可查询代码库在任意提交时的状态;任何内容都不会被删除
🩺 诊断检查报告缺失/无法解析的导入、无法解析的调用目标、循环依赖和语法错误
✅ 任务验证将任务描述与提交中实际修改的符号进行比对;标记未测试的新增内容
🔀 会话/分支差异汇总与 HEAD 或某个分支相比新增/删除/修改的符号
🌐 交互式仪表板在浏览器中查看整个代码库的 D3.js 力导向图
📦 TOON 产物针对令牌优化的图和文件索引导出内容,可注入 Agent 上下文
🔐 100% 本地运行无云服务、无遥测、无网络连接——代码绝不会离开本机
🤖 MCP 服务向任何兼容 MCP 的 Agent 提供 6 个工具,并支持零配置自动索引

本项目使用的技术

层技术
解析使用 Tree-sitter 和各语言语法包(tree-sitter-python、-javascript、-typescript、-html、-css)
存储通过 better-sqlite3 使用 SQLite(默认),或使用 Postgres(pg);两者均通过 Kysely 类型安全的查询构建器访问
Agent 协议通过标准输入/输出使用 Model Context Protocol SDK(@modelcontextprotocol/sdk)
概率查找bloom-filters
令牌优化输出TOON(@toon-format/toon)
命令行Commander + @clack/prompts,用于交互式设置
文件监视chokidar
运行时Node.js ≥ 18,CommonJS

支持的语言

语言扩展名提取内容
Python.py函数、类、调用、导入(包括包相对导入 . / ..)、Flask/FastAPI 路由
JavaScript.js、.jsx函数、类、箭头函数、调用、导入/require、本地绑定、fetch/axios 调用、Express 路由
TypeScript.ts、.tsx与 JS 相同,另含 TypeScript 特有声明
HTML.html元素 / 结构符号
CSS.css选择器(类、ID)

安装

# Global (recommended)
npm install -g codegraphx

# Or per-project
npm install --save-dev codegraphx

# Verify
codegraphx --version        # 1.2.4

CLI 提供 codegraphx、cgx 和 MCP 入口点 cgx-mcp。


快速开始

cd your-project

# 1. Index the codebase → writes .codegraphx/ + .codegraphx.db
cgx init

# 2. Ask questions
cgx query authenticateUser                       # where is it, what calls it, what it calls
cgx impact authenticateUser --direction downstream --depth 5
cgx impact authenticateUser --direction upstream
cgx stats                                        # files / symbols / edges
cgx doctor                                       # health report

# 3. Optional live view
cgx watch                                        # re-index on file change
cgx dashboard                                    # open the D3 graph in a browser

重新扫描会完整重写。 每次运行 cgx init / cgx scan,都会从头重建 .codegraphx/:从磁盘删除的文件会从图中移除,过时的产物会被清除,数据库会对已移除的符号进行时间关闭处理,因此图始终与工作树保持一致。未更改的文件仍会从缓存提供,因此速度依然很快。

CLI 命令参考
命令用途
cgx setup将 MCP 服务和技能接入你的编码 CLI(见下文)
cgx init / cgx scan为整个代码库建立索引
cgx query <symbol>显示符号的文件、类型、calls 和 called_by
cgx impact <symbol> [--direction up/downstream] [--depth N]追踪影响范围
cgx doctor [--json] [--strict] [--no-calls]诊断:导入、调用、循环、语法
cgx stats文件 / 符号 / 函数 / 类 / 边的数量
cgx watch在文件更改时自动更新图
cgx dashboard打开交互式 codegraph.html
cgx git-hook <install|remove>在 post-commit / pre-push 时自动扫描
cgx session summary [--branch <b>]当前会话的结构变更摘要
cgx verify --task <desc> --commit <hash>验证任务与提交的证据

MCP 服务(适用于 AI Agent)

CodeGraphX 提供一个 MCP stdio 服务,开放 6 个工具。零配置: 无需预先扫描——服务首次在项目中启动时,会在后台为代码库建立索引。建立索引期间,get_graph_status 会报告 "indexing";状态变为 "ready" 后,所有工具即可使用。

可用的 MCP 工具
工具描述参数
get_graph_status就绪状态:indexing / ready / error,以及文件数量—
list_files列出已建立索引的文件filter?: string
check_symbol_existsO(1) Bloom 查询 → probable_yes / definite_noname: string
explain_impact符号的上游调用方和下游被调用方symbol_name: string
verify_task将任务描述与提交中的实际更改进行比较task_description: string、commit_hash?: string
get_session_diff当前会话 / 分支的结构摘要branch?: string(默认值为 HEAD)
Agent 工作流示例
User: "What breaks if I change the validateInput function?"

Agent (via MCP):
  1. check_symbol_exists({ name: "validateInput" })   → { exists: "probable_yes" }
  2. explain_impact({ symbol_name: "validateInput" })
       → { used_by_upstream: ["src/auth.js::login"],
           breaks_downstream: ["src/api.js::handleRequest"] }

Result: exact answer, no file scanning.
选择项目根目录

服务会为其启动所在的目录建立索引。如果客户端未设置目录,请显式传入:

cgx-mcp --project-root /path/to/project
# or
CGX_PROJECT_ROOT=/path/to/project cgx-mcp

设置——有多简单?

一条命令
cgx setup

它会自动检测已安装的编码 CLI,让你多选要配置的 CLI,并逐一完成接入——无需手动编辑配置,也无需查找绝对路径。它会使用绝对 Node 路径 + 捆绑的 cgx-mcp 注册 MCP 服务(有原生命令时使用各 CLI 自带的命令,否则回退到 JSON 文件),因此全局安装和本地安装均可使用;此外还会按各 CLI 的格式安装 CGX 使用技能 / 说明。

cgx setup                                   # interactive multi-select
cgx setup --agents claude,gemini --yes      # non-interactive (CI / scripted)
cgx setup --project                         # register for the current repo only

默认采用用户级 / 全局注册,因此运行一次后即可在每个项目中使用——cgx-mcp 会根据 CLI 的启动位置解析项目。现有配置会予以保留;首次编辑前会先写入备份。

支持的编码 Agent CLI
Agent检测方式MCP 注册技能 / 指令
Claude CodePATH 中存在 claude 或存在 ~/.claudeclaude mcp add → ~/.claude.json 或 .mcp.json~/.claude/skills/cgx/SKILL.md
Gemini CLIPATH 中存在 gemini~/.gemini/settings.json 或 .gemini/settings.jsonGEMINI.md(上下文文件)
Antigravity CLIPATH 中存在 agy~/.gemini/config/mcp_config.json 或 .agents/mcp_config.json~/.gemini/skills/cgx/SKILL.md 或 .agents/skills/cgx/SKILL.md
OpenCodePATH 中存在 opencodeopencode mcp → 配置文件AGENTS.md
Cursor存在 ~/.cursor~/.cursor/mcp.json 或 .cursor/mcp.json.cursor/rules/*.mdc

然后在任意项目中打开 CLI,并说 "use cgx to explore this codebase."

如果 cgx setup 无法正常工作 — 手动设置

MCP 条目的格式始终相同:使用 node 的绝对路径运行捆绑的 cgx-mcp(某些客户端无法继承你的 shell PATH)。使用以下命令查找:

which node                    # e.g. /usr/local/bin/node
which cgx-mcp                 # e.g. /usr/local/lib/node_modules/codegraphx/bin/cgx-mcp

Claude Code — 在项目中运行:

claude mcp add codegraphx -- npx -y -p codegraphx cgx-mcp

或使用 .mcp.json:

{ "mcpServers": { "codegraphx": { "command": "npx", "args": ["-y", "-p", "codegraphx", "cgx-mcp"] } } }

Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)。由于没有项目目录,请设置根目录:

{ "mcpServers": { "codegraphx": {
  "command": "npx",
  "args": ["-y", "-p", "codegraphx", "cgx-mcp", "--project-root", "/path/to/project"]
} } }

Gemini CLI — .gemini/settings.json(使用 node 的绝对路径):

{ "mcpServers": { "codegraphx": {
  "command": "/ABSOLUTE/PATH/TO/node",
  "args": ["/ABSOLUTE/PATH/TO/node_modules/codegraphx/bin/cgx-mcp"],
  "cwd": "/ABSOLUTE/PATH/TO/PROJECT"
} } }

Antigravity CLI(agy)— 仅支持文件配置,不支持原生命令。全局配置文件 ~/.gemini/config/mcp_config.json 或项目配置文件 .agents/mcp_config.json:

{ "mcpServers": { "codegraphx": {
  "command": "/ABSOLUTE/PATH/TO/node",
  "args": ["/ABSOLUTE/PATH/TO/node_modules/codegraphx/bin/cgx-mcp"]
} } }

Cursor / Windsurf / 其他 MCP 客户端 — ~/.cursor/mcp.json(或项目中的 .cursor/mcp.json),结构相同;将 cwd 指向项目根目录。

验证连接:

# inside the CLI
/mcp list           # should show: codegraphx — Connected (6 tools)

# or drive the server directly
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | npx -y -p codegraphx cgx-mcp

仍未连接?

  1. 使用 node 的绝对路径,不要使用 npx。
  2. 确保 cwd / --project-root 与你的项目完全一致。
  3. 如果使用项目范围的 Gemini 设置,请运行 gemini trust。
  4. 检查 stderr:node /path/to/cgx-mcp 2>&1 | head -20。

架构

数据流
Source files
   → parser.js            Tree-sitter, one adapter per language
   → entities.js          SymbolEntity / FileEntity / EdgeEntity (the domain model)
   → edgebuilder.js       CALLS / IMPORTS / INHERITS edges
   → cross-language-linker.js   fetch/axios ⇄ Express/Flask/FastAPI  →  API_CALLS edges
   → scanner.js           orchestrates a full scan; writes DB + .codegraphx/ artifacts
   → store/sql-store.js   Kysely ORM — append-only bi-temporal graph (SQLite / Postgres)

扫描完成后,项目根目录中的 .codegraphx.db 是事实来源。.codegraphx/ 目录存放派生工件:codegraph.html(仪表板)、codegraph-graph.json(D3)、codegraph.toon + file_index.toon(令牌优化版)、symbols.bloom 和 cache.json。

双时态、仅追加存储

files、symbols 和 edges 中的行永不删除。每行都包含 valid_from_commit_id 和 valid_to_commit_id;后者为 NULL 表示“当前有效”。编辑符号时,会关闭旧行并插入新行;删除文件时,会对其行进行时态关闭。这样,CGX 就能回答 “在提交 X 时,图是什么样的?”,并支持会话 / 分支差异和任务验证,同时永不丢失历史记录。

核心模块
模块作用
src/parser.js将文件路由到对应语言适配器;返回 declaredSymbols、imports、calls
src/languages/*各语言的 Tree-sitter 适配器(python、javascript、typescript、html、css)
src/entities.jsSymbolEntity、FileEntity、EdgeEntity、Snapshot 领域模型
src/edgebuilder.js根据解析出的引用构建结构边
src/cross-language-linker.js在前端/后端边界之间创建带置信度评分的 API_CALLS 边
src/resolver.js规范导入解析器(JS .//../、Python 包相对导入、点分路径)
src/scanner.jsrunScan() — 索引入口;采用全量重写语义;mcpMode 会跳过开销较大的输出
src/store/sql-store.jsSqlGraphStore — 处理所有数据库读写;traceImpact 使用递归 SQL CTE;pruneDeletedFiles
src/store.jsGraphStore — 扫描器和 doctor 使用的内存 + cache.json 层
src/doctor.js诊断引擎(导入 / 调用 / 循环 / 语法)
src/verifier.js任务与提交的验证证据
src/sdk/index.jsIntelligenceSDK — 用于嵌入 CGX 的编程 API
src/server/mcp-server.jsCodeGraphXServer — MCP stdio 服务
src/setup/*cgx setup 编排器 + 各 CLI 适配器
src/db/*Kysely db 实例 + 迁移(设置 DB_DIALECT=postgres + DATABASE_URL 即可切换)

基准测试与准确度

CGX 的目标是让人们可以信赖图谱而不必阅读代码,因此会使用人工标注的黄金语料库(tests/golden/)评估图谱;其中每个符号、边、跨语言链接和导入循环都已知。相同的测试框架也用于 CI 门禁(tests/golden/accuracy.test.js)——解析器回归会导致构建失败。

提取准确度(精选语料库:3 个夹具、9 个文件、20 个符号):

类别精确率召回率F1
符号100%100%100%
结构边(CALLS / IMPORTS / INHERITS)100%100%100%
跨语言 API 链接100%100%100%
端点标记100%100%100%

推理与确定性:

检查项结果
影响追踪(精确可达集合)4/4 (100%)
循环导入检测(召回率)1/1 (100%)
循环导入误报0
多次重新扫描结果一致是

**吞吐量:**在该语料库上约为 82 个文件/秒、183 个符号/秒(完整扫描约 110 ms)。

复现并重新生成 BENCHMARK.md + benchmark-results.json:

npm run benchmark

这些数据验证的是受控语料库上的提取正确性,并不代表覆盖了每一种语言结构。若要扩展测试范围,可在 tests/golden/<name>/ 下添加夹具,并附上 ground-truth.json。


跨语言智能分析

扫描期间,CGX 会提取客户端发出的 HTTP 请求和服务端公开的路由,然后将它们匹配为带置信度评分的 API_CALLS 边:

fetch('/api/users')        ──API_CALLS(0.9)──▶  app.get('/api/users', listUsers)   [Express]
axios.post('/api/orders')  ──API_CALLS(0.9)──▶  @router.post('/api/orders')        [FastAPI]
fetch(`/api/users/${id}`)  ──API_CALLS(0.7)──▶  @app.route('/api/users/<id>')      [Flask]
  • 前端:fetch(...)(含 method)、axios.get/post/...、axios({ url, method })。
  • **后端:**Express/router、Flask(@app.route(..., methods=[...]))、FastAPI(@router.get、@app.post、…)。
  • **置信度:**路径和方法完全匹配时为 0.9,路径完全匹配/方法不同时为 0.75,参数化路径和方法匹配时为 0.7,参数化路径/方法不同时为 0.55。路径参数(:id、{id}、<int:id>)会先进行规范化,因此 /api/users/${id} 会链接到 /api/users/{user_id}。

路由处理函数会添加 endpoint 本体标记,而 explain_impact 会遍历 API_CALLS 边——因此,*“哪些代码会调用这个后端处理函数?”*会返回跨语言边界的前端调用方。


安全与隐私

  • ✅ 100% 本地运行 — 无网络连接、无遥测、无云同步。
  • ✅ 只读 — CGX 从不修改你的源代码。
  • ✅ 仅静态分析 — 代码只会被解析,绝不会执行。
  • ✅ 可配置忽略项 — 通过 .codegraphxrc 排除敏感路径。

MCP 服务以你终端的权限运行,只读取符合已配置扩展名和忽略规则的文件。对于敏感项目,请在沙箱或容器中运行。


配置

项目配置存放在 .codegraphxrc(JSON)或 codegraphx.config.json 中:

{
  "extensions": [".py", ".js", ".ts", ".jsx", ".tsx", ".html", ".css"],
  "ignore": [".git", "node_modules", "__pycache__", ".venv", "dist", "build", "coverage"],
  "outputDir": ".codegraphx",
  "outputFile": "codebase.json",
  "bloomErrorRate": 0.01
}

将 .codegraphx/ 和 .codegraphx.db 添加到 .gitignore 中——它们是构建产物。


常见问题

每次都需要运行扫描吗? 不需要——MCP 服务会在首次使用时自动建立索引。更改后重新扫描(或运行 cgx watch)即可刷新。每次重新扫描都会进行一次干净的完整重写,因此删除和重命名不会留下过时的图数据。

大型代码库呢? 没问题——增量解析意味着未更改的文件会从缓存中读取;只有更改过的文件才会重新解析。

私有或专有代码呢? 没问题——所有操作都在本地运行,不会有任何内容离开你的设备。

MCP 显示“Disconnected”? 使用 node 的绝对路径,确认 cwd/--project-root,为项目范围运行 gemini trust,并检查标准错误输出(参见上文的手动设置)。

Bloom filter 的准确度如何? 可通过 bloomErrorRate 调整(默认值为 0.01)。误报只会触发回退查询——不会出现漏报。


参与贡献

git clone https://github.com/techcraze00/CodeGraphX.git
cd codegraphx
npm install
npm link          # exposes `codegraphx` / `cgx` globally
npm test

添加一种语言:将 Tree-sitter 语法添加到 package.json,在 src/languages/<lang>/ 下创建适配器,在 src/languages/index.js 中注册,并在 tests/golden/ 下添加一个黄金测试样例。


许可证

MIT © 2026 Prayas Jadhav。请参阅 LICENSE。


链接

致谢

Tree-sitter · Model Context Protocol · Kysely · TOON · bloom-filters

CodeGraphX — 即刻了解你的代码库。

为开发者和 AI Agent 而打造。

评论

支持 Markdown

第一次接触 MCP?

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

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