使用说明
Bazel MCP服务器
一 MCP(模型上下文协议) 用于与交互的服务器 Bazel 构建系统。该服务器使AI助手和其他MCP客户端能够构建、测试、查询和管理Bazel项目。
特性
服务器提供以下MCP工具:
- 巴泽尔建筑 -建立一个或多个目标
- bazel_test -使用筛选和自定义参数运行测试
- bazel_clean -干净的构建输出(带删除/异步选项)
- 巴泽尔轮 -构建并运行带有参数的单个目标
- bazel_query -查询依赖关系图
- bazel_aquery -查询动作图
- bazel_info -显示Bazel服务器运行时信息
- bazel_mod -管理Bazel模块(bzlmod)
安装
来源
go install github.com/lewissetter/bazel-mcp-server/cmd/bazel-mcp-server@latest
从发布
从以下网址下载适用于您平台的二进制文件 发布页面.
用法
使用克劳德桌面
将服务器添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"bazel": {
"command": "/path/to/bazel-mcp-server"
}
}
}
与其他MCP客户端
服务器使用MCP协议通过stdin/stdout进行通信。直接运行它并将客户端连接到它的stdio流。
bazel-mcp-server
工具参考
巴泽尔建筑
使用Bazel建立一个或多个目标。
论据:
targets(必填):要构建的目标列表(例如。,["//pkg:target"]或["//..."])options(可选):其他构建选项(例如。,["--config=opt", "--compilation_mode=dbg"])
例子:
{
"name": "bazel_build",
"arguments": {
"targets": ["//cmd/app:main", "//pkg/lib:library"],
"options": ["--config=release"]
}
}
bazel_test
使用Bazel对一个或多个目标运行测试。
论据:
targets(必填):要运行的测试目标列表(例如。,["//pkg:test"]或["//..."])options(可选):其他测试选项(例如。,["--test_output=all"])test_args(可选):传递给测试二进制文件的参数test_filter(可选):筛选以选择要运行的特定测试
例子:
{
"name": "bazel_test",
"arguments": {
"targets": ["//pkg:test"],
"options": ["--test_output=all"],
"test_filter": "TestMyFunction"
}
}
bazel_clean
清洁Bazel构建输出。
论据:
expunge(可选):删除此Bazel实例的整个工作树async(可选):异步清理options(可选):其他清洁选项
例子:
{
"name": "bazel_clean",
"arguments": {
"expunge": true
}
}
巴泽尔轮
使用Bazel构建和运行单个目标。
论据:
target(必填):构建和运行单个目标(例如。,"//cmd/app:main")options(可选):其他构建/运行选项args(可选):传递给目标二进制文件的参数
例子:
{
"name": "bazel_run",
"arguments": {
"target": "//cmd/server:server",
"args": ["--port=8080", "--verbose"]
}
}
bazel_query
查询Bazel依赖关系图。
论据:
expression(必填):查询表达式(例如。,"deps(//pkg:target)"或"kind(go_library, //...)")options(可选):附加查询选项(例如。,["--output=label"])
例子:
{
"name": "bazel_query",
"arguments": {
"expression": "deps(//cmd/app:main)",
"options": ["--output=label"]
}
}
bazel_aquery
查询有关构建图中操作的信息(操作图查询)。
论据:
expression(必填):动作查询表达式(例如。,"mnemonic('GoCompile', deps(//...))")options(可选):其他aquery选项(例如。,["--output=jsonproto"])
例子:
{
"name": "bazel_aquery",
"arguments": {
"expression": "mnemonic('GoCompile', deps(//...))",
"options": ["--output=jsonproto"]
}
}
bazel_info
显示有关Bazel服务器的运行时信息。
论据:
keys(可选):要检索的特定信息密钥(例如。,["bazel-bin", "execution_root"])options(可选):附加信息选项
例子:
{
"name": "bazel_info",
"arguments": {
"keys": ["bazel-bin", "bazel-genfiles"]
}
}
bazel_mod
管理Bazel模块(bzlmod)-查询模块图、显示存储库和检查扩展。
论据:
subcommand(必需):修改要运行的子命令(graph,show_repo,show_extension,dump_repo_mapping)args(可选):子命令的参数(例如,存储库名称show_repo)options(可选):其他mod选项(例如。,["--base_module"]为了graph,["--extension_filter"]为了show_extension)
示例-显示模块依赖关系图:
{
"name": "bazel_mod",
"arguments": {
"subcommand": "graph"
}
}
示例-显示特定存储库:
{
"name": "bazel_mod",
"arguments": {
"subcommand": "show_repo",
"args": ["rules_go"]
}
}
示例-显示扩展使用情况:
{
"name": "bazel_mod",
"arguments": {
"subcommand": "show_extension",
"args": ["@rules_go//go:extensions.bzl%go_sdk"]
}
}
需求
- 转到1.21或更高版本(用于从源代码构建)
- Bazel必须在您的PATH中安装并可用
- 服务器执行当前工作目录中的Bazel命令
发展
建筑
go build -o bazel-mcp-server ./cmd/bazel-mcp-server
测试
go test ./...
本地运行
go run ./cmd/bazel-mcp-server
运作原理
服务器:
- 通过stdin/stdout启动并监听MCP请求
- 验证传入的工具调用参数
- 执行当前工作目录中的相应Bazel命令
- 将命令输出(stdout和stderr)返回给客户端
- 将错误报告为工具错误(而非协议错误),以获得更好的用户体验
所有命令都使用 context.Context 以获得适当的取消支持。
交互示例
建立目标:
Tool: bazel_build
Arguments: {"targets": ["//cmd/app:main"]}
Result: "Build successful!\n\nINFO: Build completed successfully"
运行测试:
Tool: bazel_test
Arguments: {"targets": ["//..."], "options": ["--test_output=errors"]}
Result: "Tests passed!\n\n//pkg:test PASSED"
查询依赖关系:
Tool: bazel_query
Arguments: {"expression": "deps(//cmd/app:main)", "options": ["--output=label"]}
Result: "//cmd/app:main\n//pkg/lib:library\n//external:go_sdk"
查看模块图:
Tool: bazel_mod
Arguments: {"subcommand": "graph"}
Result: "<root> (my_project@1.0.0)\n ├─ rules_go@0.50.0\n └─ gazelle@0.40.0"
贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 与 模型上下文协议Go SDK
- 受将AI助手与Bazel构建工作流程集成的需求的启发
