返回市场
代码图谱上下文

代码图谱上下文

作者:Shashankss1205200 星标更新:2025-11-20

项目介绍

CodeGraphContext

<!-- ====== 项目统计 ====== -->

Stars Forks Open Issues Open PRs Closed PRs Contributors Languages Build Status Build Status PyPI version PyPI downloads License Website Docs YouTube Discord

一个MCP服务器,将本地代码索引到图数据库中,以提供给AI助手上下文信息。

代码库索引

使用MCP客户端进行索引

使用MCP服务器

使用MCP服务器

项目详情

星标历史

星标历史图表

特性

  • 代码索引: 分析代码并构建其组件的知识图谱。
  • 关系分析: 查询调用者、被调用者、类层次结构、调用链等。
  • 实时更新: 监视本地文件的变化,并自动更新图谱。
  • 交互式设置: 用户友好的命令行向导,便于轻松设置。

已使用

CodeGraphContext 正在被开发者和项目探索用于:

  • AI助手中的静态代码分析
  • 基于图的项目可视化
  • 死代码和复杂度检测

如果你正在你的项目中使用 CodeGraphContext,请随时打开一个PR并在这里添加它!🚀

依赖项

  • neo4j>=5.15.0
  • watchdog>=3.0.0
  • requests>=2.31.0
  • stdlibs>=2.023.11.18
  • typer[all]>=0.9.0
  • rich>=13.7.0
  • inquirerpy>=0.3.4
  • python-dotenv>=1.0.0
  • tree-sitter==0.20.4
  • tree-sitter-languages==1.10.2
  • pyyaml
  • pytest
  • nbformat
  • nbconvert>=7.16.6
  • pathspec>=0.12.1

快速开始

  1. 安装: pip install codegraphcontext

  2. 设置: cgc setup 这个交互式命令会引导你完成Neo4j数据库连接的配置,并自动设置你的IDE。

    <details> <summary>⚙️ 故障排除:如果命令 <code>cgc</code> 未找到</summary>

    如果你在安装后遇到 <i>"cgc: 命令未找到"</i>,运行PATH修复脚本:

    Linux/Mac:

    # 下载修复脚本
    curl -O https://raw.githubusercontent.com/Shashankss1205/CodeGraphContext/main/scripts/post_install_fix.sh
    
    # 赋予执行权限
    chmod +x post_install_fix.sh
    
    # 运行脚本
    ./post_install_fix.sh
    
    # 重启终端或重新加载shell配置
    source ~/.bashrc  # 或 ~/.zshrc 对于zsh用户
    

    Windows (PowerShell):

    # 下载修复脚本
    curl -O https://raw.githubusercontent.com/Shashankss1205/CodeGraphContext/main/scripts/post_install_fix.sh
    
    # 使用bash运行(需要Git Bash或WSL)
    bash post_install_fix.sh
    
    # 重启PowerShell或重新加载配置文件
    . $PROFILE
    
    </details>

    数据库配置:

    • 本地设置(推荐使用Docker): 帮助你使用Docker设置本地Neo4j实例。需要安装Docker和Docker Compose。
    • 本地设置(Linux二进制文件): 对于基于Debian的Linux系统(如Ubuntu),cgc setup可以自动化安装Neo4j。需要sudo权限。
    • 托管设置: 允许你连接到现有的远程Neo4j数据库(例如Neo4j AuraDB)。

    IDE/CLI配置: 在设置好数据库后,向导会询问你配置开发环境。它可以自动检测并配置以下内容:

    • VS Code
    • Cursor
    • Windsurf
    • Claude
    • Gemini CLI
    • ChatGPT Codex
    • Cline
    • RooCode
    • Amazon Q Developer

    成功配置后,cgc setup会生成并放置必要的配置文件:

    • 它会在当前目录创建一个mcp.json文件供参考。
    • 它会安全地将你的Neo4j凭据存储在~/.codegraphcontext/.env中。
    • 它会更新你选择的IDE/CLI的设置文件(例如.claude.json或VS Code的settings.json)。
  3. 启动: cgc start

忽略文件(.cgcignore

你可以通过在项目的根目录创建一个.cgcignore文件来告诉CodeGraphContext忽略特定的文件和目录。这个文件使用与.gitignore相同的语法。

示例 .cgcignore 文件:

# 忽略构建产物
/build/
/dist/

# 忽略依赖
/node_modules/
/vendor/

# 忽略日志
*.log

MCP客户端配置

cgc setup命令尝试自动配置你的IDE/CLI。如果你选择不使用自动设置,或者你的工具不受支持,你可以手动配置。

在客户端的设置文件(例如VS Code的settings.json.claude.json)中添加以下服务器配置:

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "cgc",
      "args": [
        "start"
      ],
      "env": {
        "NEO4J_URI": "YOUR_NEO4J_URI",
        "NEO4J_USERNAME": "YOUR_NEO4J_USERNAME",
        "NEO4J_PASSWORD": "YOUR_NEO4J_PASSWORD"
      },
      "tools": {
        "alwaysAllow": [
          "add_code_to_graph",
          "add_package_to_graph",
          "check_job_status",
          "list_jobs",
          "find_code",
          "analyze_code_relationships",
          "watch_directory",
          "find_dead_code",
          "execute_cypher_query",
          "calculate_cyclomatic_complexity",
          "find_most_complex_functions",
          "list_indexed_repositories",
          "delete_repository",
          "visualize_graph_query",
          "list_watched_paths",
          "unwatch_directory"
        ],
        "disabled": false
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

自然语言交互示例

一旦服务器运行起来,你可以通过你的AI助手使用纯英文与其交互。这里有一些你可以使用的例子:

索引和监视文件

  • 要索引一个新的项目:

    • "请索引/path/to/my-project目录中的代码。" 或
    • "将位于~/dev/my-other-project的项目添加到代码图中。"
  • 要开始监视目录以获取实时更改:

    • "监视/path/to/my-active-project目录中的更改。" 或
    • "保持我正在~/dev/main-app工作的项目的代码图更新。"

    当你请求监视一个目录时,系统会同时执行两个操作:

    1. 它会启动一个完整的扫描以索引该目录中的所有代码。此过程在后台运行,你会收到一个job_id来跟踪进度。
    2. 它开始监视该目录中的任何文件更改,以实现实时更新。

    这意味着你可以简单地告诉系统监视一个目录,它会自动处理初始索引和持续更新。

查询和理解代码

  • 查找代码定义的位置:

    • "在哪里定义了process_payment函数?"
    • "帮我找到User类。"
    • "显示与'database connection'相关的任何代码。"
  • 分析关系和影响:

    • "哪些其他函数调用了get_user_by_id函数?"
    • "如果我修改了calculate_tax函数,代码的哪些部分会被影响?"
    • "展示BaseController类的继承层次结构。"
    • "Order类有哪些方法?"
  • 探索依赖关系:

    • "哪些文件导入了requests库?"
    • "找到所有实现render方法的实现。"
  • 高级调用链和依赖追踪(跨越数百个文件): CodeGraphContext擅长追踪复杂的执行流程和依赖关系,即使这些关系跨越了庞大的代码库。利用图数据库的力量,它可以识别直接和间接的调用者和被调用者,即使一个函数是通过多层抽象或多个文件调用的。这对于:

    • 影响分析: 理解对核心函数所做的更改的全面影响。

    • 调试: 追踪从入口点到特定错误的执行路径。

    • 代码理解: 理解大型系统不同部分之间的交互。

    • "展示从main函数到process_data的完整调用链。"

    • "找到所有直接或间接调用validate_input的函数。"

    • "initialize_system最终调用了哪些函数?"

    • "追踪DatabaseManager模块的依赖关系。"

  • 代码质量和维护:

    • "这个项目中有任何死代码或未使用的代码吗?"
    • "计算src/utils.pyprocess_data函数的圈复杂度。"
    • "找出代码库中最复杂的五个函数。"
  • 仓库管理:

    • "列出所有当前已索引的仓库。"
    • "删除位于/path/to/old-project的已索引仓库。"

贡献

欢迎贡献!🎉
请参阅我们的 CONTRIBUTING.md 获取详细的指南。 如果你有新的特性、集成或改进的想法,请打开一个 问题 或提交一个Pull Request。

加入讨论,帮助塑造CodeGraphContext的未来。