loading…
Search for a command to run...
loading…
MCP server for Zuul CI/CD with 25 tools for builds, pipelines, queue management (enqueue/dequeue/promote), infrastructure visibility, and autohold management. S
MCP server for Zuul CI/CD with 25 tools for builds, pipelines, queue management (enqueue/dequeue/promote), infrastructure visibility, and autohold management. Supports stdio, HTTP, and SSE transports.
A Model Context Protocol (MCP) server that enables AI applications like Claude to interact with Zuul CI/CD systems.
25 MCP Tools for comprehensive Zuul interaction:
list_tenants - List all Zuul tenantslist_builds - Query builds with filters (project, pipeline, branch, result, etc.)get_build - Get build details by UUIDget_build_logs - Get job output logs for a buildlist_buildsets - Query buildsets with filtersget_buildset - Get buildset details by UUIDlist_jobs - List jobs in a tenantget_job - Get job detailsget_job_variants - Get variant configurations for a specific joblist_pipelines - List pipelinesget_pipeline_status - Get current pipeline status including queuelist_projects - List projectsget_project - Get project detailsget_tenant_status - Get overall tenant statusget_config_errors - Get configuration errorslist_nodes - List nodepool nodeslist_labels - List available node labelslist_connections - List all Zuul connectionslist_semaphores - List semaphoreslist_autoholds - List autohold requests (requires auth)create_autohold - Create autohold request (requires auth)delete_autohold - Delete autohold request (requires auth)enqueue - Enqueue a change into a pipeline (requires auth)dequeue - Dequeue a change or ref from a pipeline (requires auth)promote - Promote changes to the top of a pipeline queue (requires auth)Multiple Transport Modes: stdio (for Claude Desktop), HTTP, and SSE
Cross-Platform: Native binaries for Linux, macOS, and Windows
Optional Authentication: JWT Bearer tokens for authenticated endpoints
brew tap clappingmonkey/zuul-mcp
brew install zuul-mcp
Download the latest release for your platform from the releases page.
# Linux (amd64)
curl -LO https://github.com/clappingmonkey/zuul-mcp/releases/latest/download/zuul-mcp-linux-amd64
chmod +x zuul-mcp-linux-amd64
sudo mv zuul-mcp-linux-amd64 /usr/local/bin/zuul-mcp
# macOS (Apple Silicon)
curl -LO https://github.com/clappingmonkey/zuul-mcp/releases/latest/download/zuul-mcp-darwin-arm64
chmod +x zuul-mcp-darwin-arm64
sudo mv zuul-mcp-darwin-arm64 /usr/local/bin/zuul-mcp
# macOS (Intel)
curl -LO https://github.com/clappingmonkey/zuul-mcp/releases/latest/download/zuul-mcp-darwin-amd64
chmod +x zuul-mcp-darwin-amd64
sudo mv zuul-mcp-darwin-amd64 /usr/local/bin/zuul-mcp
# Requires Go 1.23+
go install github.com/clappingmonkey/zuul-mcp/cmd/zuul-mcp@latest
Configuration can be done via environment variables or an env file:
| Variable | Required | Description |
|---|---|---|
ZUUL_URL |
Yes | Base URL of your Zuul instance (e.g., https://zuul.example.com) |
ZUUL_DEFAULT_TENANT |
No | Default tenant to use if not specified in tool calls |
ZUUL_AUTH_TOKEN |
No | JWT Bearer token for authenticated endpoints (autoholds) |
ZUUL_TRANSPORT |
No | Transport mode: stdio (default), http, or sse |
ZUUL_HTTP_PORT |
No | HTTP/SSE server port (default: 8080) |
You can use the --env-file flag to load configuration from a file instead of environment variables:
zuul-mcp --env-file /path/to/.env
The env file format is simple key-value pairs:
# .env.zuul
ZUUL_URL=https://zuul.example.com
ZUUL_DEFAULT_TENANT=openstack
ZUUL_AUTH_TOKEN=your-jwt-token
Note: Existing environment variables take precedence over values in the env file. This allows you to override specific settings without modifying the file.
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zuul": {
"command": "/usr/local/bin/zuul-mcp",
"env": {
"ZUUL_URL": "https://zuul.example.com",
"ZUUL_DEFAULT_TENANT": "openstack"
}
}
}
}
For authenticated operations (autoholds, queue management):
{
"mcpServers": {
"zuul": {
"command": "/usr/local/bin/zuul-mcp",
"env": {
"ZUUL_URL": "https://zuul.example.com",
"ZUUL_DEFAULT_TENANT": "openstack",
"ZUUL_AUTH_TOKEN": "your-jwt-token"
}
}
}
}
Alternatively, using an env file (useful for keeping secrets out of the config):
{
"mcpServers": {
"zuul": {
"command": "/usr/local/bin/zuul-mcp",
"args": ["--env-file", "/path/to/.env.zuul"]
}
}
}
For remote or web-based access:
# Start the server
ZUUL_URL=https://zuul.example.com ZUUL_TRANSPORT=http zuul-mcp
# Or with command line flags
zuul-mcp -transport=http -port=8080
zuul-mcp [options]
| Flag | Description |
|---|---|
-env-file |
Path to .env file for configuration |
-transport |
Transport mode: stdio (default), http, or sse |
-port |
HTTP/SSE server port (default: 8080) |
-version |
Show version information and exit |
Example version output:
zuul-mcp 0.2.0 (abc1234) built on 2024-01-15T10:30:00Z
Once configured, you can ask Claude questions like:
This project uses Bazel for building, testing, and dependency management. No go.mod file is needed - all dependencies are declared in MODULE.bazel.
# Build the binary (development)
bazel build //cmd/zuul-mcp
# Build with version stamping (for releases)
bazel build //cmd/zuul-mcp --config=release
# The binary will be at:
# bazel-bin/cmd/zuul-mcp/zuul-mcp_/zuul-mcp
# Run all tests
bazel test //...
# After adding new Go files or packages
bazel run //:gazelle
# Linux amd64 (statically linked)
bazel build //cmd/zuul-mcp --config=linux_amd64
# Linux arm64 (statically linked)
bazel build //cmd/zuul-mcp --config=linux_arm64
# macOS amd64
bazel build //cmd/zuul-mcp --config=darwin_amd64
# macOS arm64 (Apple Silicon)
bazel build //cmd/zuul-mcp --config=darwin_arm64
# Windows amd64
bazel build //cmd/zuul-mcp --config=windows_amd64
To add a new Go dependency:
Add a go_deps.module() declaration to MODULE.bazel:
go_deps.module(
path = "github.com/example/package",
sum = "h1:...", # Get from go.sum after `go get`
version = "v1.0.0",
)
Add the repository name to the use_repo() call
Run bazel run //:gazelle to update BUILD files
MIT License - see LICENSE for details.
Contributions are welcome! See CONTRIBUTING.md for development setup and guidelines.
To report a vulnerability, see SECURITY.md.
Run in your terminal:
claude mcp add zuul-mcp -- npx Security
Low riskAutomated heuristic from public metadata — not a security guarantee.