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


CodeGraphContext 正在被开发者和项目探索用于:
如果你正在你的项目中使用 CodeGraphContext,请随时打开一个PR并在这里添加它!🚀
neo4j>=5.15.0watchdog>=3.0.0requests>=2.31.0stdlibs>=2.023.11.18typer[all]>=0.9.0rich>=13.7.0inquirerpy>=0.3.4python-dotenv>=1.0.0tree-sitter==0.20.4tree-sitter-languages==1.10.2pyyamlpytestnbformatnbconvert>=7.16.6pathspec>=0.12.1安装: pip install codegraphcontext
设置: cgc setup
这个交互式命令会引导你完成Neo4j数据库连接的配置,并自动设置你的IDE。
如果你在安装后遇到 <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>
数据库配置:
cgc setup可以自动化安装Neo4j。需要sudo权限。IDE/CLI配置: 在设置好数据库后,向导会询问你配置开发环境。它可以自动检测并配置以下内容:
成功配置后,cgc setup会生成并放置必要的配置文件:
mcp.json文件供参考。~/.codegraphcontext/.env中。.claude.json或VS Code的settings.json)。启动: cgc start
.cgcignore)你可以通过在项目的根目录创建一个.cgcignore文件来告诉CodeGraphContext忽略特定的文件和目录。这个文件使用与.gitignore相同的语法。
示例 .cgcignore 文件:
# 忽略构建产物
/build/
/dist/
# 忽略依赖
/node_modules/
/vendor/
# 忽略日志
*.log
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工作的项目的代码图更新。"当你请求监视一个目录时,系统会同时执行两个操作:
job_id来跟踪进度。这意味着你可以简单地告诉系统监视一个目录,它会自动处理初始索引和持续更新。
查找代码定义的位置:
process_payment函数?"User类。"分析关系和影响:
get_user_by_id函数?"calculate_tax函数,代码的哪些部分会被影响?"BaseController类的继承层次结构。"Order类有哪些方法?"探索依赖关系:
requests库?"render方法的实现。"高级调用链和依赖追踪(跨越数百个文件): CodeGraphContext擅长追踪复杂的执行流程和依赖关系,即使这些关系跨越了庞大的代码库。利用图数据库的力量,它可以识别直接和间接的调用者和被调用者,即使一个函数是通过多层抽象或多个文件调用的。这对于:
影响分析: 理解对核心函数所做的更改的全面影响。
调试: 追踪从入口点到特定错误的执行路径。
代码理解: 理解大型系统不同部分之间的交互。
"展示从main函数到process_data的完整调用链。"
"找到所有直接或间接调用validate_input的函数。"
"initialize_system最终调用了哪些函数?"
"追踪DatabaseManager模块的依赖关系。"
代码质量和维护:
src/utils.py中process_data函数的圈复杂度。"仓库管理:
/path/to/old-project的已索引仓库。"欢迎贡献!🎉
请参阅我们的 CONTRIBUTING.md 获取详细的指南。
如果你有新的特性、集成或改进的想法,请打开一个 问题 或提交一个Pull Request。
加入讨论,帮助塑造CodeGraphContext的未来。