巴泽尔·麦克普
bazel-mcp 是一个小型的模型上下文协议服务器,通过stdio公开常见的Bazel工作流。它是在官方MCP Go SDK之上的Go中实现的。
安装
从下载预构建的二进制文件 发布 (或从下面的源代码构建)。
| 平台 | 下载 |
|---|---|
| macOS ARM64 | bazel-mcp_darwin_arm64.tar.gz |
| macOS x86_64 | bazel-mcp_darwin_amd64.tar.gz |
| Linux x86_64 | bazel-mcp_linux_amd64.tar.gz |
| Linux ARM64 | bazel-mcp_linux_arm64.tar.gz |
| Windows x86_64 | bazel-mcp_windows_amd64.zip |
# Example: macOS ARM64
curl -sL https://github.com/Agent-Hellboy/bazel-mcp/releases/latest/download/bazel-mcp_darwin_arm64.tar.gz | tar xz -C /usr/local/bin
chmod +x /usr/local/bin/bazel-mcp或者将二进制文件放置在任何位置,并在MCP配置中使用其完整路径。
工具
bazel_info:检查Bazel配置和输出路径bazel_query:查询目标图形bazel_cquery:检查配置的目标bazel_aquery:检查生成的生成操作bazel_build:构建一个或多个目标bazel_test:测试一个或多个目标bazel_run:运行单个目标(根据需要构建,然后执行;支持二进制文件、sh_binary和包装在可运行规则中的预构建二进制文件)
所有工具都在配置好的Bazel工作区内运行,并返回结构化文本,其中包括执行的命令、工作区、持续时间、退出代码以及任何捕获的stdout或stderr。
从源代码构建 (可选;二进制文件可从 发布)
go build -o bazel-mcp ./cmd/bazel-mcp跑
bazel-mcp --workspace /path/to/workspace
# or: go run ./cmd/bazel-mcp --workspace /path/to/workspace有用的标志:
--bazel:要运行的Bazel或Bazelisk可执行文件。默认为bazel.--workspace:所有Bazel命令的工作目录。默认为当前目录。--startup-flag:在命令前插入可重复的Bazel启动标志。--flag:在命令名称后插入可重复的Bazel命令标志。--timeout-seconds:每次工具调用的默认超时。默认为300.--max-output-bytes:截断前每个命令捕获的最大stdout和stderr字节数。默认为1048576.
环境变量反映了主要的标量标志:
BAZEL_MCP_WORKSPACEBAZEL_MCP_BAZEL_BINBAZEL_MCP_TIMEOUT_SECONDSBAZEL_MCP_MAX_OUTPUT_BYTES
MCP客户端设置
光标
添加 ~/.cursor/mcp.json (全球)或 .cursor/mcp.json (项目)。
使用下载的二进制文件:
{
"mcpServers": {
"bazel-mcp": {
"type": "stdio",
"command": "/usr/local/bin/bazel-mcp",
"args": ["--workspace", "/path/to/your/bazel/workspace"]
}
}
}使用安装二进制文件的完整路径。
使用源代码(需要Go):
{
"mcpServers": {
"bazel-mcp": {
"type": "stdio",
"command": "sh",
"args": [
"-c",
"cd /path/to/bazel-mcp && go run /path/to/bazel-mcp/cmd/bazel-mcp --workspace /path/to/your/bazel/workspace"
]
}
}
}使用完全绝对路径;一些客户端解析错误 ./cmd/bazel-mcp.
更改配置后重新启动Cursor。
其他MCP客户端 (Claude Desktop、Continue、Windsurf等):使用相同的stdio配置格式。有关配置文件的位置和结构,请参阅客户的文档。
发展
gofmt -w ./cmd ./internal ./e2e
go test ./...使用以下命令在本地运行Bazel支持的端到端检查:
go test -tags=e2e -v ./e2e该测试要求 bazel 上 PATH.CI在每次推送时都会运行单元套件和端到端检查 main 以及拉取请求。
