项目简介

CodeGraphContext 是一个强大的工具,旨在通过构建代码的知识图谱来增强AI助手的代码理解能力。它能够索引本地Python项目,并提供丰富的查询功能,帮助AI助手进行代码分析、关系追踪、死代码检测和复杂性计算等任务。通过标准化的MCP接口,它可以无缝集成到各种支持MCP的AI客户端中。

主要功能点

  • 代码索引与图谱构建: 将Python代码解析并存储到Neo4j图数据库中,形成代码的知识图谱,包含函数、类、变量、导入等节点及其相互关系。
  • 实时更新: 监控本地文件系统的代码变更,并自动更新代码图谱,确保AI助手获取的信息始终是最新的。
  • 关系分析: 查询代码中的各种关系,例如查找函数的调用者、被调用者、类继承层次结构、模块导入关系等。
  • 代码质量评估: 提供死代码检测、循环复杂度计算以及查找最复杂函数的能力,帮助发现代码缺陷和潜在的维护问题。
  • 自然语言交互: 支持AI助手通过自然语言请求服务器执行代码分析任务。
  • 灵活的配置与部署: 提供交互式向导,支持本地Docker部署Neo4j或连接远程Neo4j实例,并能自动配置主流IDE和CLI工具。

安装步骤

  1. 安装Python: 确保你的系统已安装Python 3.8或更高版本。
  2. 安装CodeGraphContext: 打开终端,运行以下命令安装软件包:
    pip install codegraphcontext
  3. 设置Neo4j数据库: 运行交互式设置向导来配置你的Neo4j数据库。你可以选择本地Docker部署(推荐)或连接远程Neo4j实例。向导会引导你完成数据库的安装和配置。
    cgc setup
    在设置过程中,向导还会询问你是否自动配置你的IDE或CLI(如VS Code、Cursor、Claude、Gemini),以简化集成过程。
  4. 启动服务器: 配置完成后,运行以下命令启动CodeGraphContext MCP服务器:
    cgc start
    服务器将开始监听标准输入(stdin)上的MCP JSON-RPC请求。

服务器配置示例(供MCP客户端参考)

你的MCP客户端需要以下JSON配置来连接CodeGraphContext服务器。'cgc setup'命令通常会自动为你生成并放置这个配置,但你也可以手动添加到客户端的设置文件中(例如VS Code的'settings.json'或'.claude.json')。

这是一个示例配置,请根据你的实际情况填写Neo4j数据库的URI、用户名和密码:

{
  "mcpServers": {
    "CodeGraphContext": {
      "command": "cgc",
      "args": [
        "start"
      ],
      "env": {
        "NEO4J_URI": "你的Neo4j数据库URI,例如 neo4j://localhost:7687",
        "NEO4J_USERNAME": "你的Neo4j用户名,默认为 neo4j",
        "NEO4J_PASSWORD": "你的Neo4j密码"
      },
      "tools": {
        "alwaysAllow": [
          "list_imports",
          "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"
        ],
        "disabled": false
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

参数注释:

  • 'command': 指定MCP服务器的可执行命令,通常是'cgc'。
  • 'args': 传递给'command'的参数,'["start"]'用于启动服务器。
  • 'env': 包含Neo4j数据库的连接环境变量,这些是服务器运行所必需的。
  • 'tools.alwaysAllow': 列出了客户端允许调用的服务器工具名称。
  • 'disabled': 控制服务器是否启用。
  • 'alwaysAllow': 客户端全局允许的工具列表。

基本使用方法

一旦CodeGraphContext服务器运行并通过MCP客户端连接,你的AI助手就能使用自然语言与它互动。

  • 索引一个新项目: “请索引 '/path/to/my-project' 目录中的代码。”
  • 实时监控文件变更: “监控 '/path/to/my-active-project' 目录的变更。”
  • 查找代码定义: “'process_payment' 函数在哪里?” 或 “帮我找到 'User' 类。”
  • 分析代码关系: “有哪些函数调用了 'get_user_by_id' 函数?” 或 “'BaseController' 类的继承结构是怎样的?”
  • 检测死代码: “这个项目里有没有死代码?”
  • 计算代码复杂度: “计算 'src/utils.py' 中 'process_data' 函数的圈复杂度。”

信息

分类

开发者工具