mcpField
G
Grafyx

Grafyx

本地服务
github.com开发工具412 周前更新

关于 Grafyx

Grafyx 将 Python、TypeScript 和 JavaScript 代码解析为实时关系图,供编码 Agent 查询项目结构与代码关系。它通过 MCP 提供调用链、依赖、符号和编码惯例等上下文,并在文件变更后自动更新图谱。

主要功能

  1. 01构建代码关系图
  2. 02查询函数、类与模块上下文
  3. 03追踪调用链和依赖影响
  4. 04自然语言查找相关代码
  5. 05文件变更时自动更新

适用场景

  1. 01了解陌生代码库的项目结构
  2. 02追踪函数调用及上下游关系
  3. 03评估代码变更影响范围
  4. 04查找特定功能相关代码

MCP 相关

Grafyx 是通过 stdio 提供 14 个工具的 MCP 服务,供 MCP 客户端查询代码图谱。工具涵盖项目结构、代码上下文、调用图、依赖分析和图谱刷新。

配置

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

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

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

安装包
pypigrafyx-mcp0.2.4

工具

还没有获取到工具列表

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

详细介绍

Grafyx

PyPI Downloads CI License: MIT Python 3.12+ MCP Grafyx MCP server

为 AI 编码助手提供实时代码库理解能力。


什么是 Grafyx?

AI 编码工具读取原始文件时完全不了解代码架构——它们不知道谁调用了什么、类继承自哪里,也不清楚模块之间如何连接。Grafyx 通过 Graph-sitter(基于 tree-sitter)将整个代码库解析为完整的关系图,从而解决这个问题;随后,它通过 Model Context Protocol (MCP) 将该图提供给任何 AI 助手。你的助手可以追踪调用链、映射依赖关系、按描述查找相关代码、检测约定,并理解项目架构——所有操作均实时进行,文件监视器还会在你编辑时持续更新关系图。


快速开始

Claude Code
# Zero-install (recommended)
claude mcp add --scope user grafyx -- uvx --from grafyx-mcp grafyx

# Or install with pip first
pip install grafyx-mcp
claude mcp add --scope user grafyx -- grafyx
Cursor / Windsurf / Cline

将以下内容添加到 MCP 配置文件中:

  • Cursor:.cursor/mcp.json(项目级)或 ~/.cursor/mcp.json(全局)
  • Windsurf:~/.codeium/windsurf/mcp_config.json
  • Cline:VS Code 中的 Cline MCP 设置
{
  "mcpServers": {
    "grafyx": {
      "command": "uvx",
      "args": ["--from", "grafyx-mcp", "grafyx"]
    }
  }
}
VS Code(GitHub Copilot)

添加到 .vscode/mcp.json:

{
  "servers": {
    "grafyx": {
      "command": "uvx",
      "args": ["--from", "grafyx-mcp", "grafyx"]
    }
  }
}

使用 pip 而非 uvx? 将 command 替换为:"command": "grafyx"(无需参数)。


可用工具

工具描述
get_project_skeleton完整的项目结构,并提供各模块的统计信息
get_function_context函数的完整信息:调用方、被调用方、依赖项
get_file_context文件内容、导入项、依赖项
get_class_context类方法、继承关系、使用情况
find_related_code在整个代码库中进行自然语言搜索
find_related_files通过匹配符号,查找与某项功能相关的文件
get_dependency_graph影响分析:依赖关系的指向
get_conventions检测到的编码模式和约定
get_call_graph向上游和下游追踪调用链
refresh_graph强制重新解析代码库
get_module_context目录/软件包中的符号(中间缩放级别)
get_subclasses基类的继承树
get_unused_symbols检测死代码
set_project在运行时切换所服务的项目

工作原理

Your AI Assistant
       |
       | MCP Protocol (stdio)
       v
  +-----------+
  |  Grafyx   |  FastMCP server with 14 tools
  |  Server   |
  +-----------+
       |
  +-----------+     +-----------+     +-------------+
  |  Graph    |---->|  Search   |     | Convention  |
  |  Engine   |---->|  Engine   |     | Detector    |
  +-----------+     +-----------+     +-------------+
       |
       v
  +-----------+
  |  Graph-   |  Tree-sitter based parsing
  |  sitter   |
  +-----------+
       |
  +-----------+
  |  Watchdog |  File watcher for live updates
  +-----------+
  1. 启动——Grafyx 检测项目中的语言,并通过 Graph-sitter 将所有源文件解析为语义图。
  2. 服务——FastMCP 服务通过 stdio 暴露 14 个工具。AI 助手会根据需要调用这些工具。
  3. 实时更新——Watchdog 监视文件变更。保存文件后,经过短暂的防抖延迟,关系图会自动重新解析。
ML 增强搜索

Grafyx 的 find_related_code 使用预训练代码嵌入模型(默认: jinaai/jina-embeddings-v2-base-code,Apache-2.0,161M 参数),通过 fastembed 使用 ONNX 在 CPU 上运行。模型 会在首次使用时下载并缓存到本地——无需 GPU、守护进程或云端调用。

从 0.2.1 起,fastembed 是硬依赖,因此默认安装已包含编码器——无需额外安装。

基准测试(0.2.0,涵盖 FastAPI + Django 的 278 个文档字符串→函数查询):

编码器nDCG@10MRR@10p50 延迟
jina-v2(默认)0.7870.741~1.5 s
coderankembed0.6630.623~1.3 s
仅 tokens(无 fastembed)0.3350.297~0.9 s

默认编码器的检索质量是纯源码 token 搜索的两倍以上(nDCG@10 提升 +135%)。

完整分析 + 每条查询的 JSONL:docs/benchmarks/0.2.0/。

通过 GRAFYX_ENCODER 环境变量切换编码器:

  • jina-v2(默认)——Apache-2.0,原生支持 fastembed,约 150 MB。准确率最佳;除非有特定原因需要切换,否则推荐使用。
  • coderankembed——MIT,137M,ONNX-int8,约 140 MB。延迟更低,但在我们的评测中比 jina-v2 低约 12 个 nDCG@10 点。托管于 Bilal7Dev/grafyx-coderankembed-onnx。

支持仅依赖 numpy 的 MLP(权重总计约 5 MB,已打包在 wheel 中):

  • M1 相关性排序器——包含 33 个特征的 MLP,利用结构信号(调用者数量、名称重叠、导出项)对编码器的候选结果进行重新排序。
  • M3 源码 token 过滤器——从全文搜索中抑制噪声 token(导入项、字符串、魔术方法)。
  • M4 符号重要性——根据调用者数量、导出项和结构信号为符号加权。
  • 无意义文本检测器——字符二元组 MLP,可在查询进入索引前拦截无意义查询。

可复现的基准测试涵盖 FastAPI、Django 和 Home Assistant,包含在 benchmarks/ 中(python -m scripts.run_all)。


支持的语言

语言扩展名
Python.py、.pyi
TypeScript.ts、.tsx
JavaScript.js、.jsx

系统会自动检测语言。要手动指定:

grafyx --languages python,typescript

选项

grafyx [OPTIONS]

  --project PATH       Project to analyze (default: current directory)
  --languages LANGS    Comma-separated languages (default: auto-detect)
  --ignore PATTERNS    Additional directories to ignore
  --no-watch           Disable file watching
  --verbose, -v        Debug logging
  --version            Show version

默认忽略:node_modules、.git、__pycache__、.venv、venv、.env、dist、build、.tox、.mypy_cache、.pytest_cache、.ruff_cache、egg-info、.eggs、.next、.nuxt、coverage、.coverage、.nyc_output


多 Agent 支持

Grafyx 支持 Agent 团队。单个 Grafyx 实例可为连接到同一项目的所有 Agent 提供服务。当一个 Agent 修改代码时,文件监视器会自动更新图谱,因此其他 Agent 可立即看到更改。


参与贡献

git clone https://github.com/bilal07karadeniz/Grafyx.git
cd Grafyx
pip install -e ".[dev]"
pytest

故障排除

Windows:Graph-sitter 需要 Linux。请使用 WSL,并将 MCP 客户端配置为通过 wsl 启动:

{
  "mcpServers": {
    "grafyx": {
      "command": "wsl",
      "args": ["-e", "bash", "-c", "source ~/your-venv/bin/activate && grafyx"]
    }
  }
}

许可证

MIT——详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

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

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