项目简介
CodeGraphContext 是一个强大的工具,旨在通过构建代码的知识图谱来增强AI助手的代码理解能力。它能够索引本地Python项目,并提供丰富的查询功能,帮助AI助手进行代码分析、关系追踪、死代码检测和复杂性计算等任务。通过标准化的MCP接口,它可以无缝集成到各种支持MCP的AI客户端中。
主要功能点
- 代码索引与图谱构建: 将Python代码解析并存储到Neo4j图数据库中,形成代码的知识图谱,包含函数、类、变量、导入等节点及其相互关系。
- 实时更新: 监控本地文件系统的代码变更,并自动更新代码图谱,确保AI助手获取的信息始终是最新的。
- 关系分析: 查询代码中的各种关系,例如查找函数的调用者、被调用者、类继承层次结构、模块导入关系等。
- 代码质量评估: 提供死代码检测、循环复杂度计算以及查找最复杂函数的能力,帮助发现代码缺陷和潜在的维护问题。
- 自然语言交互: 支持AI助手通过自然语言请求服务器执行代码分析任务。
- 灵活的配置与部署: 提供交互式向导,支持本地Docker部署Neo4j或连接远程Neo4j实例,并能自动配置主流IDE和CLI工具。
安装步骤
- 安装Python: 确保你的系统已安装Python 3.8或更高版本。
- 安装CodeGraphContext: 打开终端,运行以下命令安装软件包:
pip install codegraphcontext - 设置Neo4j数据库: 运行交互式设置向导来配置你的Neo4j数据库。你可以选择本地Docker部署(推荐)或连接远程Neo4j实例。向导会引导你完成数据库的安装和配置。
在设置过程中,向导还会询问你是否自动配置你的IDE或CLI(如VS Code、Cursor、Claude、Gemini),以简化集成过程。cgc setup - 启动服务器: 配置完成后,运行以下命令启动CodeGraphContext MCP服务器:
服务器将开始监听标准输入(stdin)上的MCP JSON-RPC请求。cgc start
服务器配置示例(供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' 函数的圈复杂度。”
信息
分类
开发者工具