Skip to content
Agentmart
Submit a tool

MCP Zuul

Zuul CI — build failure analysis, log search, pipeline status, and job configuration

Connector by imatza-rh · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)★ 21
Write a review

Chalk Labs

Need help deploying MCP Zuul?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/imatza-rh-mcp-zuul

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Zuul CI — build failure analysis, log search, pipeline status, and job configuration

Use cases: ci-cd, debugging

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
37 read · 3 write · 2 delete · 6 not yet classified
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Python package

Tools by what they do 48

Read from the source code; the running server may list different tools.

Read 37 · Look things up without changing anything.

  • batch_diagnose
  • browse_build_logs
  • check_health
  • find_flaky_jobs
  • get_autohold
  • get_badge
  • get_build
  • get_build_anomalies
  • get_build_failures
  • get_build_log
  • get_build_test_results
  • get_buildset
Show 25 more tools
  • get_change_status
  • get_components
  • get_config_errors
  • get_connections
  • get_freeze_job
  • get_freeze_jobs
  • get_job
  • get_job_durations
  • get_project
  • get_status
  • get_tenant_info
  • list_autoholds
  • list_builds
  • list_buildsets
  • list_images
  • list_jobs
  • list_labels
  • list_nodes
  • list_pipelines
  • list_projects
  • list_providers
  • list_semaphores
  • list_system_events
  • list_tenants
  • tail_build_log

Write 3 · Create, change, send or run things.

  • autohold_create
  • diagnose_build
  • stream_build_console

Delete 2 · Delete, drop, revoke or wipe things.

  • autohold_delete
  • dequeue

Not yet classified 6 · We could not tell from the name and description.

  • diagnose_and_test
  • enqueue
  • get_build_times
  • investigate_change
  • promote
  • reenqueue_buildset

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • ZUUL_AUTH_TOKEN

Other settings (environment variables or headers).

  • MCP_TRANSPORT
  • ZUUL_DEFAULT_TENANT
  • ZUUL_DISABLED_TOOLS
  • ZUUL_ENABLED_TOOLS
  • ZUUL_URL
  • ZUUL_USE_KERBEROS

Network hosts it talks to 4

  • github.com · found in code
  • glama.ai · found in code
  • imatza-rh.github.io · found in code
  • softwarefactory-project.io · found in code

Files it touches

  • Any path the agent passes to its tools

Tools (48)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • autohold_createCreate Autohold

    Create an autohold request — hold nodes after a job failure for debugging. Requires ZUUL_READ_ONLY=false. Args: project: Project name (e.g. "org/repo") job: Job name to hold nodes for tenant: Tenant (default from env) reason: Why the hold is needed count: Failed builds to hold (default 1) node_hold_expiration: Seconds to hold nodes (default 86400 = 24h) change: Change filter (optional) ref: Ref filter (optional)

  • autohold_deleteDelete Autohold

    Delete an autohold request. Requires ZUUL_READ_ONLY=false. Args: autohold_id: Autohold request ID (from list_autoholds) tenant: Tenant (default from env)

  • batch_diagnoseBatch Diagnose Builds

    Classify multiple failed builds in one call — returns a triage table. Runs diagnose_build(brief=True) in parallel for each UUID and returns a compact classification summary. Use instead of calling diagnose_build N times when triaging multiple failures. Args: uuids: List of build UUIDs to diagnose (max 20) tenant: Tenant (default from env)

  • browse_build_logsBrowse Log Files

    Browse or fetch files from a build's log directory. Without path: lists top-level. With trailing '/': lists subdirectory. With file path: fetches content (max 512KB). For filtered reads, use get_build_log with grep instead. Args: uuid: Build UUID tenant: Tenant (default from env) path: Relative path within the log dir (e.g. "logs/controller/") url: Zuul build URL (alternative to uuid + tenant) max_lines: Limit file content to first N lines (0 = no limit) direct_log_url: Log URL from a prior call. Skips build metadata fetch.

  • check_healthHealth Check

    Test Zuul API connectivity and auth status. Use this to verify the server is reachable. Re-auth happens automatically via Kerberos if the session expired.

  • dequeueDequeue Change

    Remove a change or ref from a pipeline. Requires ZUUL_READ_ONLY=false. Args: project: Project name (e.g. "org/repo") pipeline: Pipeline to dequeue from change: Change to dequeue (e.g. "12345,1") ref: Git ref to dequeue tenant: Tenant (default from env)

  • diagnose_and_testDiagnose with Tests

    One-call diagnosis + test results — combines diagnose_build and get_build_test_results. Fetches build metadata once, then runs failure analysis and JUnit test parsing in parallel. Saves a round-trip vs calling both tools separately. Args: uuid: Build UUID tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant) brief: Brief diagnosis (default true). Set false for full failure details.

  • diagnose_buildDiagnose Build Failure

    One-call failure diagnosis — structured failures + relevant log context. Combines get_build_failures (which task failed, error message) with targeted log grep (surrounding context from job-output.txt). Returns everything needed to understand a failure in a single call. Use this instead of calling get_build_failures + get_build_log separately. Args: uuid: Build UUID tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant) brief: Return only classification + root cause (default false). Omits playbooks, log_context, and full task details f…

  • enqueueEnqueue

    Enqueue a change or ref into a pipeline for testing. Requires ZUUL_READ_ONLY=false. Provide either change or ref. Args: project: Project name (e.g. "org/repo") pipeline: Pipeline (e.g. "check", "gate") change: Change to enqueue (e.g. "12345,1") ref: Git ref to enqueue (e.g. "refs/heads/main") oldrev: Old revision for ref-based enqueue newrev: New revision for ref-based enqueue tenant: Tenant (default from env)

  • find_flaky_jobsFlaky Job Detection

    Detect flaky jobs by analyzing recent build history for intermittent failures. Computes pass/fail statistics from recent builds. A job with mixed results and >20% failure rate is likely flaky. Args: job_name: Job name to analyze tenant: Tenant (default from env) project: Project filter pipeline: Pipeline filter limit: Builds to analyze (default 20, max 100) detail: Include individual build list (default false)

  • get_autoholdAutohold Details

    Get details of a specific autohold request. Args: autohold_id: Autohold request ID (from list_autoholds) tenant: Tenant (default from env)

  • get_badgeProject Badge

    Get a status badge URL (SVG) for a project's latest buildset result. Args: project: Project name (e.g. "org/repo") tenant: Tenant (default from env) pipeline: Pipeline filter branch: Branch filter

  • get_buildBuild Details

    Get build details — log URL, nodeset, artifacts, timing, error detail. Args: uuid: Build UUID (full or prefix from list_builds) tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant) brief: Compact response with just uuid, job, result, pipeline, duration (default false)

  • get_build_anomaliesLog Anomaly Detection

    Detect anomalous log lines using LogJuicer ML-based analysis. Requires LOGJUICER_URL to be configured. Args: uuid: Build UUID tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant)

  • get_build_failuresBuild Failure Analysis

    Analyze a failed build — which task failed, on which host, with error message. Parses job-output.json for precise failure data. Prefer diagnose_build for most use cases (adds classification and log context). Args: uuid: Build UUID tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant)

Show 33 more tools
  • get_build_logRead Build Log

    Read, search, and navigate build log files with grep, line ranges, and error summary. Args: uuid: Build UUID tenant: Tenant (default from env) log_name: Log file to read (default "job-output.txt") mode: "summary" (tail + errors), "errors" (errors only, no tail), or "full" (paginated) lines: For summary: tail count (default 50). For full: offset start line. start_line: Read from this line (1-based, overrides mode with end_line) end_line: Read up to this line (1-based, inclusive) grep: Regex to filter lines (overrides mode). Use | for OR. context: Lines of co…

  • get_build_test_resultsTest Results

    Parse JUnit XML test results from a build's log directory. Discovers test result files via zuul-manifest.json. Works with tempest, tobiko, and any JUnit XML output. Args: uuid: Build UUID tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant) failures_only: Only return suites with failures (default true)

  • get_build_timesBuild Duration Trends

    Build duration trends — compute avg/min/max to detect performance regressions. Returns ALL results (no result filtering). For SUCCESS-only averages, use get_job_durations instead. Args: tenant: Tenant (default from env) job_name: Job name filter project: Project filter pipeline: Pipeline filter branch: Branch filter limit: Max results, 1-100 (default 20) skip: Pagination offset detail: Include individual build list (default true)

  • get_buildsetBuildset Details

    Get buildset details — result, pipeline, project, change. Brief (default): compact metadata only. Set brief=False for full details with builds, events, and timing. Args: uuid: Buildset UUID tenant: Tenant (default from env) url: Zuul buildset URL (alternative to uuid + tenant) brief: Compact response (default true). Set false for full timing/events.

  • get_change_statusChange Status

    Pipeline status for a specific change or PR/MR. When in pipeline: live status with jobs, elapsed times, buildset UUID. When not in pipeline: fetches latest completed buildset automatically. Args: change: Change number, GitHub ref (refs/pull/N/head), or GitLab ref tenant: Tenant (default from env) url: Zuul change status URL (alternative to change + tenant) brief: Strip to monitoring essentials (~50% smaller). Use for repeated polls.

  • get_componentsSystem Components

    Show Zuul system components — schedulers, executors, mergers, web servers.

  • get_config_errorsConfiguration Errors

    Get Zuul configuration errors — broken configs, missing refs, syntax errors. First tool to check when a job isn't being triggered. Args: tenant: Tenant (default from env) project: Project filter (optional)

  • get_connectionsSource Connections

    List configured source connections — Gerrit, GitHub, GitLab instances. Shows what code review systems this Zuul instance talks to, with connection type, hostname, and base URL.

  • get_freeze_jobResolved Job Configuration

    Get fully-resolved job configuration after inheritance. Shows final merged nodeset, timeout, and playbooks. Use to understand exactly what a job will do. Args: pipeline: Pipeline name (e.g. "check", "gate") project: Project name job_name: Job name to resolve branch: Branch name (default "main") tenant: Tenant (default from env) include_vars: Include vars/extra_vars/host_vars/group_vars (default false, can be large)

  • get_freeze_jobsResolved Job Graph

    Get the resolved job graph for a pipeline/project/branch. Shows which jobs will run with all inheritance resolved, including dependencies. Use to understand job ordering. Args: pipeline: Pipeline name (e.g. "check", "gate") project: Project name branch: Branch name (default "main") tenant: Tenant (default from env)

  • get_jobJob Configuration

    Get job configuration — parent, nodeset, timeout, branches, and all variants. Args: name: Job name tenant: Tenant (default from env)

  • get_job_durationsBatch Job Duration Stats

    Get avg/min/max duration for multiple jobs in a single call. Fetches build history per job in parallel. Designed for monitoring tools that need durations for an entire pipeline chain. Args: job_names: List of job names to get stats for tenant: Tenant (default from env) result: Result filter (default "SUCCESS" for clean averages) limit: Builds per job to analyze (default 10, max 50)

  • get_projectProject Configuration

    Get project configuration — which pipelines and jobs are configured. Args: name: Project name (e.g. "openstack-k8s-operators/openstack-operator") tenant: Tenant (default from env)

  • get_statusPipeline Status

    Live pipeline status showing what's currently queued/running. Args: tenant: Tenant (default from env) pipeline: Pipeline name filter project: Project filter active_only: Only show pipelines with active items (default true) brief: Compact output (~50% smaller) for repeated polling

  • get_tenant_infoTenant Information

    Get tenant capabilities, auth config, and websocket URL. Args: tenant: Tenant (default from env)

  • investigate_changeInvestigate Change

    One-call investigation — builds + diagnosis + autohold status for a change. Combines list_builds, diagnose_build(brief), and autohold lookup into a single response. Designed for the common "what's happening with this change?" workflow — replaces 3-4 separate tool calls. Args: change: Change number (e.g. "2601") job: Job name filter (substring). When set, only builds matching this job are included and autoholds are filtered. tenant: Tenant (default from env)

  • list_autoholdsAutohold Requests

    List autohold requests — nodes held after failure for debugging. Check when jobs are stuck waiting for nodes or to find your autohold. Args: tenant: Tenant (default from env) project: Project filter (substring match). When set, uses the project-scoped API endpoint for server-side filtering. job: Job name filter (substring match, client-side)

  • list_buildsSearch Builds

    Search builds with filters. Returns compact build summaries. Args: tenant: Tenant (default from env) project: Project filter pipeline: Pipeline filter job_name: Job name filter change: Change number filter branch: Branch filter patchset: Patchset filter ref: Git ref filter result: Result filter (SUCCESS, FAILURE, TIMED_OUT, SKIPPED, etc.) completed_after: ISO 8601 lower bound on completion time completed_before: ISO 8601 upper bound on completion time started_after: ISO 8601 lower bound on start time started_before: ISO 8601 upper bound on s…

  • list_buildsetsSearch Buildsets

    Search buildsets (groups of builds triggered by a single event). Args: tenant: Tenant (default from env) project: Project filter pipeline: Pipeline filter change: Change number filter branch: Branch filter ref: Git ref filter result: Result filter completed_after: ISO 8601 lower bound on completion time completed_before: ISO 8601 upper bound on completion time started_after: ISO 8601 lower bound on start time started_before: ISO 8601 upper bound on start time limit: Max results, 1-100 (default 20) skip: Pagination offset include_builds: …

  • list_imagesNodepool Images

    List nodepool disk images with build status and upload artifacts. Args: tenant: Tenant (default from env)

  • list_jobsList Jobs

    List all jobs in a tenant. Optionally filter by name substring. Args: tenant: Tenant (default from env) filter: Case-insensitive name substring filter limit: Max results (default 200, 0 for unlimited)

  • list_labelsNodepool Labels

    List available nodepool labels (node types that jobs can request). Args: tenant: Tenant (default from env)

  • list_nodesNodepool Nodes

    List nodepool nodes — available, in-use, or provisioning. Check when jobs are stuck waiting for nodes. Summary by default, set detail=true for individual nodes. Args: tenant: Tenant (default from env) detail: Include individual node list (default false) limit: Max nodes in detail list (default 200, 0 for unlimited)

  • list_pipelinesList Pipelines

    List all pipelines with their trigger types. Args: tenant: Tenant (default from env)

  • list_projectsList Projects

    List all projects in a tenant. Optionally filter by name substring. Args: tenant: Tenant (default from env) filter: Case-insensitive name substring filter limit: Max results (default 200, 0 for unlimited)

  • list_providersNodepool Providers

    List nodepool cloud providers with flavors and images. Args: tenant: Tenant (default from env)

  • list_semaphoresSemaphores

    List semaphores — resource locks that limit concurrent job execution. Check when jobs are waiting unexpectedly. Args: tenant: Tenant (default from env)

  • list_system_eventsSystem Events

    List system events — config updates, reconfigurations, pipeline changes. Args: tenant: Tenant (default from env) event_type: Event type filter limit: Max results (default 50) skip: Pagination offset

  • list_tenantsList Tenants

    List all Zuul tenants with project and queue counts.

  • promotePromote Changes

    Promote changes to the top of a pipeline queue. Requires ZUUL_READ_ONLY=false. Args: pipeline: Pipeline name (e.g. "gate") changes: Changes to promote (e.g. ["12345,1", "12346,2"]) tenant: Tenant (default from env)

  • reenqueue_buildsetRe-enqueue Buildset

    Re-enqueue a buildset — re-triggers a previous buildset's pipeline run. Looks up the buildset, extracts project/pipeline/ref, and re-enqueues. Requires ZUUL_READ_ONLY=false. Args: uuid: Buildset UUID tenant: Tenant (default from env) url: Zuul buildset URL (alternative to uuid + tenant)

  • stream_build_consoleStream Build Console

    Read live console output from a RUNNING build via WebSocket. For RUNNING builds only. For completed builds, use tail_build_log. Requires ``pip install mcp-zuul[console]``. Args: uuid: Build UUID (from get_change_status) tenant: Tenant (default from env) url: Zuul build URL (alternative to uuid + tenant) lines: Lines to return from end (default 100, max 500) timeout: Seconds to buffer (default 10, max 30)

  • tail_build_logLog Tail

    Get the last N lines of a build log — fastest way to see why a build failed. More token-efficient than get_build_log(mode="summary") when you just need the tail. Args: uuid: Build UUID tenant: Tenant (default from env) lines: Lines from the end (default 50, max 500) log_name: Log file to read (default "job-output.txt") url: Zuul build URL (alternative to uuid + tenant) skip_postrun: Tail from run phase end, skipping post-run (default true) direct_log_url: Log URL from a prior call. Skips build metadata fetch.

Signals

Stars
21
Forks
7
Open issues
0
Contributors
6
Weekly downloads
108
Last commit
Oct 18, 2026 (13 days ago)
Last release
Aug 16, 2026 (2 months ago)
Last package publish
Aug 16, 2026 (2 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.imatza-rh/mcp-zuul
Version
0.11.0
Auth
No auth
Packages
pypi mcp-zuul
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get MCP Zuul running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying MCP Zuul?

CallGet help
Cite this page

MCP Zuul. Agent Mart. https://agentmart.dev/connectors/imatza-rh-mcp-zuul (last updated 2026-10-24)