MCP的Badger代码图数据库
Badger是一个代码图数据库,它为您的代码库建立索引,并通过模型上下文协议(MCP)提供强大的查询工具。它支持C和Python代码库。
快速开始
1.克隆存储库
git clone
cd badger2.安装依赖项
cd cli
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
pip install -e .3.初始化图形数据库
此命令将:
- 检查Docker是否已安装并正在运行
- 启动本地Dgraph容器(默认值:http://localhost:8080)
- 设置GraphQL架构
- 将配置保存到
.badgerrc
badger init_graph对于远程服务器,请使用:
badger init_graph --endpoint http://remote-server:8080先决条件: 必须安装Docker。从以下地址获取https://docs.docker.com/get-docker/
注: 默认情况下,Badger使用本地Dgraph端点。端点已保存到 .badgerrc 并由所有命令自动使用。
4.索引您的代码库
badger index这将:
- 解析当前目录中的所有源文件
- 提取函数、类、导入、关系
- 将所有内容存储在图形数据库中
5.在光标中设置MCP
badger mcp此命令将:
- 显示分步说明
- 为Cursor生成JSON配置
- 将配置保存到
.badger-mcp-config.json便于复制
然后:
- 打开光标设置(Cmd/Ctrl+,)
- 搜索“MCP”或转到扩展→ MCP
- 添加如下所示的JSON配置
badger mcp - 重新启动游标
命令
所有命令都使用来自的本地Dgraph端点 .badgerrc 默认情况下。你可以用以下命令覆盖它 --endpoint 大多数命令上的选项。
badger init_graph
初始化图形数据库(Dgraph)。默认情况下,启动本地Dgraph容器。
badger init_graph [--endpoint URL] [--compose-file PATH] [--skip-docker]选项:
--endpoint:Dgraph端点URL(默认值:http://localhost:8080对于本地Docker容器)--compose-file:docker-compose.yml的路径(默认值:dgraph/docker-compose.yml)--skip-docker:跳过Docker设置,只需配置端点
它的作用:
- 检查Docker是否已安装并正在运行
- 使用docker compose启动Dgraph(从
dgraph/docker-compose.yml) - 设置GraphQL架构
- 将配置保存到
.badgerrc
示例:
- 本地(默认):
badger init_graph - 远程服务器:
badger init_graph --endpoint http://remote-server:8080 --skip-docker - 自定义编写文件:
badger init_graph --compose-file /path/to/docker-compose.yml
数据持久性:
- 数据会自动持久化到
dgraph/dgraph-data/在您的项目目录中 - 数据在容器停止/重新启动时持续存在
- 使用
badger stop_graph停止容器(数据保留) - 使用
badger start_graph重新启动容器
badger index
为代码库建立索引并将其存储在图形数据库中。使用来自的本地终结点 .badgerrc 默认情况下。
badger index [directory] [--language python|c] [--endpoint URL] [--verbose]选项:
directory:要索引的目录(默认:当前目录)--language:要解析的语言(python、c)。如果未指定,则自动检测--endpoint:覆盖图形数据库端点(默认值:从本地.badgerrc或http://localhost:8080)--verbose:启用详细输出
示例:
- 使用本地终结点:
badger index - 使用远程终结点:
badger index --endpoint http://remote-server:8080
badger mcp
显示光标的MCP设置说明和配置。
badger mcp [--workspace PATH] [--endpoint URL]选项:
--workspace:工作区路径(默认:当前目录)--endpoint:Dgraph端点URL
此命令:
- 显示分步设置说明
- 为Cursor生成JSON配置
- 将配置保存到
.badger-mcp-config.json便于复制
badger mcp-server
手动启动MCP服务器(通常由Cursor自动调用)。
badger mcp-server [--endpoint URL] [--workspace PATH] [--auto-index] [--verbose]选项:
--endpoint:图形数据库端点URL(默认值:本地.badgerrc或http://localhost:8080)--workspace:工作区/代码库根目录的路径(默认:当前目录)--auto-index:启动时启用自动索引--verbose:启用详细日志记录
注: 配置后,此命令通常由Cursor自动调用。您可以手动运行它进行测试。
badger stats
显示图形数据库中的节点计数。使用来自的本地终结点 .badgerrc 默认情况下。
badger stats [--endpoint URL]badger clear
清除图形数据库中的所有数据。使用来自的本地终结点 .badgerrc 默认情况下。
badger clear [--endpoint URL] [--yes]警告: 这将删除所有节点和关系!
badger stop_graph
使用docker compose停止本地Dgraph容器。数据被保留。
badger stop_graph [--compose-file PATH]选项:
--compose-file:docker-compose.yml的路径(默认值:dgraph/docker-compose.yml)
注: 这将停止容器,但保留所有数据。数据存储在 dgraph/dgraph-data 并且在停止/重新启动期间持续存在。
badger start_graph
使用docker compose启动之前停止的Dgraph容器。所有数据均已保存。
badger start_graph [--compose-file PATH]选项:
--compose-file:docker-compose.yml的路径(默认值:dgraph/docker-compose.yml)
注: 这将启动之前停止的容器。所有数据都保留了容器上次运行时的数据。
badger status_graph
显示本地Dgraph容器的状态。
badger status_graph [--compose-file PATH]选项:
--compose-file:docker-compose.yml的路径(默认值:dgraph/docker-compose.yml)
显示容器是正在运行、停止还是退出。
数据持久层
它是如何工作的:
- 当你奔跑时
badger init_graphDocker Compose创建了一个映射dgraph/dgraph-data/到/dgraph在容器中 - 所有Dgraph数据都存储在
dgraph/dgraph-data/在您的项目目录中 - 数据持续存在于:
- 容器停止/重新启动 - 系统重新启动(容器自动重新启动 restart: unless-stopped) - 容器删除(只要不删除 dgraph/dgraph-data/)
生命周期:
badger init_graph-使用docker compose创建具有持久卷的容器badger index-索引代码库,数据保存到dgraph/dgraph-data/badger stop_graph-停止容器,数据保留在dgraph/dgraph-data/badger start_graph-重新启动容器,从加载数据dgraph/dgraph-data/badger status_graph-检查集装箱是否正在运行
要完全删除数据,请执行以下操作:
badger stop_graph
rm -rf dgraph/dgraph-data特性
- 多语言支持Python和C/C++++
- 丰富的代码分析:函数、类、导入、宏、typedef、struct字段访问
- 关系跟踪:函数调用、继承、导入/包含
- 语义搜索:用于自然语言查询的向量嵌入
- MCP集成:与Cursor和其他MCP兼容工具无缝协作
配置
配置存储在 .badgerrc 在您的项目目录中:
graphdb_endpoint: http://localhost:8080
language: python # optional
verbose: false您还可以使用以下命令设置环境变量 BADGER_ 前缀:
BADGER_GRAPHDB_ENDPOINTBADGER_LANGUAGEBADGER_VERBOSE
MCP工具
Badger提供以下MCP工具:
find_symbol_usages-查找符号的所有用法(函数、宏、变量、结构、typedef)get_function_callers-查找函数的所有调用者get_include_dependencies-获取导入/包含文件的文件find_struct_field_access-查找结构体字段访问(仅限C)check_affected_files-查找受更改影响的文件semantic_code_search-按语义搜索代码
发展
看 Developpent.md 用于开发设置和贡献指南。
许可证
\[您的许可证在这里\]
