Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZUUL_URLYesZuul base URL (e.g. https://softwarefactory-project.io/zuul)
ZUUL_TIMEOUTNoHTTP timeout in seconds30
ZUUL_AUTH_TOKENNoBearer token for authenticated instances
ZUUL_VERIFY_SSLNoSSL certificate verificationtrue
ZUUL_USE_KERBEROSNoEnable Kerberos/SPNEGO authenticationfalse
ZUUL_DEFAULT_TENANTNoDefault tenant (saves passing tenant on every call)

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_tenants

List all Zuul tenants with project and queue counts.

get_status

Live pipeline status showing what's currently queued/running.

Args: tenant: Tenant name (uses default if empty) pipeline: Filter to a specific pipeline name project: Filter to a specific project active_only: Only show pipelines with active items (default true)

get_change_status

Pipeline status for a specific Gerrit change or GitHub/GitLab PR/MR.

When the change is in the pipeline, returns live status with jobs, elapsed times, and buildset UUID. When not in pipeline, automatically fetches the latest completed buildset with all build results — no extra list_buildsets + get_buildset round-trips needed.

Args: change: Change number (e.g. "12345"), GitHub ref ("refs/pull/123/head"), or GitLab ref ("refs/merge-requests/123/head") tenant: Tenant name (uses default if empty)

list_builds

Search builds with filters. Returns compact build summaries.

Args: tenant: Tenant name (uses default if empty) project: Filter by project name pipeline: Filter by pipeline name job_name: Filter by job name change: Filter by change number branch: Filter by branch name patchset: Filter by patchset ref: Filter by git ref result: Filter by result (SUCCESS, FAILURE, TIMED_OUT, SKIPPED, etc.) limit: Max results, 1-100 (default 20) skip: Offset for pagination (default 0)

get_build

Get full build details — log URL, nodeset, artifacts, timing, error detail.

Args: uuid: Build UUID (full or prefix from list_builds) tenant: Tenant name (uses default if empty)

get_build_failures

Analyze a failed build — returns exactly which task failed, on which host, with error message and return code.

Parses Zuul's structured job-output.json for precise failure data. Start here when investigating build failures — much more accurate than log parsing.

Args: uuid: Build UUID tenant: Tenant name (uses default if empty)

get_build_log

Read, search, and navigate build log files with grep, line ranges, and error summary.

Args: uuid: Build UUID tenant: Tenant name (uses default if empty) log_name: Log file to read (default "job-output.txt"). For other files, use the path relative to the build's log_url, e.g. "logs/controller/ci-framework-data/logs/ci_script_008_run.log" mode: "summary" (default: tail + error lines) or "full" (paginated chunks) lines: For summary: tail line count (default 100). For full: offset start line. start_line: Read from this line number (1-based). If set with end_line, returns exactly that range (overrides mode). end_line: Read up to this line number (1-based, inclusive). grep: Python regex pattern to filter log lines (overrides mode). Use | for OR: "error|failed|timeout". Do NOT use backslash-pipe. context: Lines of context before/after each grep match (default 0, max 10)

browse_build_logs

Browse or fetch files from a build's log directory.

Without path: lists the top-level log directory. With path ending in '/': lists that subdirectory. With path to a file: fetches and returns the file content (max 512KB).

Args: uuid: Build UUID tenant: Tenant name (uses default if empty) path: Relative path within the log dir (e.g. "logs/controller/", "zuul-info/inventory.yaml", "logs/hypervisor/ci-framework-data/artifacts/")

list_buildsets

Search buildsets (groups of builds triggered by a single event).

Args: tenant: Tenant name (uses default if empty) project: Filter by project pipeline: Filter by pipeline name change: Filter by change number branch: Filter by branch name ref: Filter by git ref result: Filter by result limit: Max results, 1-100 (default 20) skip: Offset for pagination include_builds: Fetch full details (builds, events) for each buildset. Saves a separate get_buildset call per result, but slower for large result sets. Best with limit <= 5.

get_buildset

Get full buildset details — all builds, results, events, and timing.

Args: uuid: Buildset UUID tenant: Tenant name (uses default if empty)

list_jobs

List all jobs in a tenant. Optionally filter by name substring.

Args: tenant: Tenant name (uses default if empty) filter: Case-insensitive substring to filter job names

get_job

Get job configuration — parent, nodeset, timeout, branches, and all variants.

Args: name: Job name tenant: Tenant name (uses default if empty)

get_project

Get project configuration — which pipelines and jobs are configured.

Args: name: Project name (e.g. "openstack-k8s-operators/openstack-operator") tenant: Tenant name (uses default if empty)

list_pipelines

List all pipelines with their trigger types.

Args: tenant: Tenant name (uses default if empty)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/imatza-rh/mcp-zuul'

If you have feedback or need assistance with the MCP directory API, please join our Discord server