About Bazel Mcp
Bazel Mcp is a local MCP server that gives AI assistants access to Bazel workspace queries, build, test, and run operations. It is for developers working in Bazel repositories, with structured diagnostics for build and test failures.
Key features
- 01Run query, cquery, and aquery
- 02List targets and inspect dependencies
- 03Trace dependency paths and reverse dependencies
- 04Find targets affected by changed files
- 05Build, test, and run targets
- 06Read BUILD files
Use cases
- 01Explore targets in a Bazel workspace
- 02Trace a target's dependency chain
- 03Identify targets affected by code changes
- 04Run builds and tests with failure details
MCP support
Exposes Bazel workspace inspection and execution tools to MCP clients, including queries, target listing, dependency analysis, builds, tests, and runs. Commands operate in the active workspace by default, or can use an explicitly configured workspace root.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEBazel MCP
A Model Context Protocol server that exposes Bazel build system capabilities to AI assistants.
Repo: github.com/saeid-rez/bazel-mcp
Tools
| Tool | Description |
|---|---|
bazel_query | Run arbitrary bazel query expressions |
bazel_cquery | Run configured bazel cquery expressions (select() and platforms) |
bazel_aquery | Run action bazel aquery expressions (compiler flags, commands) |
list_targets | List targets in a package or subtree |
get_deps | Direct or transitive dependencies of a target |
get_rdeps | Reverse dependencies within a scope |
get_dependency_path | Trace dependency chains (somepath/allpaths) between targets |
show_target_info | Rule definition via query --output=build |
find_affected_targets | Find targets affected by changed files |
bazel_build | Run bazel build with structured failure diagnostics |
bazel_test | Run bazel test with structured target and failed-case results |
bazel_run | Run bazel run with arguments, environment variables, and working directory controls |
explain_build_file | Read BUILD file contents for analysis |
Usage
Requires uv. Configure the server with a Bazel workspace path if your MCP client does not start it from that workspace.
Antigravity (agy)
Add the following to ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
"bazel": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/saeid-rez/bazel-mcp",
"bazel-mcp-server"
]
}
}
}
Bazel commands run in your active workspace by default. If Antigravity does not start the server from your Bazel workspace, pass --workspace-root explicitly:
{
"mcpServers": {
"bazel": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/saeid-rez/bazel-mcp",
"bazel-mcp-server",
"--workspace-root",
"/path/to/your/bazel/workspace"
]
}
}
}
OpenCode
Add the following to opencode.json or opencode.jsonc. Replace /path/to/your/bazel/workspace with the absolute path to your Bazel workspace.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"bazel": {
"type": "local",
"command": [
"uvx",
"--from",
"git+https://github.com/saeid-rez/bazel-mcp",
"bazel-mcp-server",
"--workspace-root",
"/path/to/your/bazel/workspace"
],
"enabled": true
}
}
}
GitHub Copilot CLI
Add the following to ~/.copilot/mcp-servers.json. Replace /path/to/your/bazel/workspace with the absolute path to your Bazel workspace.
{
"mcp": {
"servers": {
"bazel": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/saeid-rez/bazel-mcp",
"bazel-mcp-server",
"--workspace-root",
"/path/to/your/bazel/workspace"
],
"protocol": "stdio"
}
}
}
}
Alternatively, run /mcp add bazel inside Copilot CLI and provide the same command and arguments.
Install With uv
To install the server persistently instead of running it from GitHub, run:
uv tool install bazel-mcp-server
Then use the following installed-server configuration in place of the GitHub-based command above. Include --workspace-root and its path when the client does not start the server from the Bazel workspace.
Antigravity (agy):
{
"mcpServers": {
"bazel": {
"command": "bazel-mcp-server",
"args": ["--workspace-root", "/path/to/your/bazel/workspace"]
}
}
}
OpenCode:
{
"mcp": {
"bazel": {
"type": "local",
"command": ["bazel-mcp-server", "--workspace-root", "/path/to/your/bazel/workspace"],
"enabled": true
}
}
}
GitHub Copilot CLI:
{
"mcp": {
"servers": {
"bazel": {
"command": "bazel-mcp-server",
"args": ["--workspace-root", "/path/to/your/bazel/workspace"],
"protocol": "stdio"
}
}
}
}
Cursor
Add this to .cursor/mcp.json in the Bazel workspace.
{
"mcpServers": {
"bazel": {
"command": "uvx",
"args": ["--from", "git+https://github.com/saeid-rez/bazel-mcp", "bazel-mcp-server"]
}
}
}
Bazel commands run in your open workspace by default.
If Cursor does not start the server from the Bazel workspace, pass the workspace explicitly:
{
"mcpServers": {
"bazel": {
"command": "uvx",
"args": [
"bazel-mcp-server",
"--workspace-root",
"/path/to/your/bazel/workspace"
]
}
}
}
Other optional flags:
bazel-mcp-server --bazel-path bazelisk --timeout 600 --max-output-chars 64000
Development
Clone the repo and run tests locally:
git clone https://github.com/saeid-rez/bazel-mcp
cd bazel-mcp
uv sync --group dev
uv run pytest
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.