Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

MCP Zuul

by imatza-rhversion 0.11.0i★ –iRuns on your computer
Registry nameio.github.imatza-rh/mcp-zuul

Install

Overview

Description from the maker (original English)

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

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Search & AI memory

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • You fill in yourself: ZUUL_URL, ZUUL_DEFAULT_TENANT, ZUUL_AUTH_TOKEN, ZUUL_USE_KERBEROS, MCP_TRANSPORT, ZUUL_ENABLED_TOOLS, ZUUL_DISABLED_TOOLS

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "zuul": {
      "command": "uvx",
      "args": [
        "mcp-zuul"
      ],
      "env": {
        "ZUUL_URL": "your-value",
        "ZUUL_DEFAULT_TENANT": "your-value",
        "ZUUL_AUTH_TOKEN": "your-value",
        "ZUUL_USE_KERBEROS": "your-value",
        "MCP_TRANSPORT": "your-value",
        "ZUUL_ENABLED_TOOLS": "your-value",
        "ZUUL_DISABLED_TOOLS": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add zuul --env ZUUL_URL=your-value --env ZUUL_DEFAULT_TENANT=your-value --env ZUUL_AUTH_TOKEN=your-value --env ZUUL_USE_KERBEROS=your-value --env MCP_TRANSPORT=your-value --env ZUUL_ENABLED_TOOLS=your-value --env ZUUL_DISABLED_TOOLS=your-value -- uvx mcp-zuul

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "zuul": {
      "command": "uvx",
      "args": [
        "mcp-zuul"
      ],
      "env": {
        "ZUUL_URL": "your-value",
        "ZUUL_DEFAULT_TENANT": "your-value",
        "ZUUL_AUTH_TOKEN": "your-value",
        "ZUUL_USE_KERBEROS": "your-value",
        "MCP_TRANSPORT": "your-value",
        "ZUUL_ENABLED_TOOLS": "your-value",
        "ZUUL_DISABLED_TOOLS": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "zuul": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "mcp-zuul"
      ],
      "env": {
        "ZUUL_URL": "your-value",
        "ZUUL_DEFAULT_TENANT": "your-value",
        "ZUUL_AUTH_TOKEN": "your-value",
        "ZUUL_USE_KERBEROS": "your-value",
        "MCP_TRANSPORT": "your-value",
        "ZUUL_ENABLED_TOOLS": "your-value",
        "ZUUL_DISABLED_TOOLS": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • ZUUL_URL env
    Zuul base URL (e.g. https://softwarefactory-project.io/zuul)
  • ZUUL_DEFAULT_TENANT env
    Default tenant name
  • ZUUL_AUTH_TOKEN env
    Bearer token for authenticated instances
  • ZUUL_USE_KERBEROS env
    Enable Kerberos/SPNEGO authentication (true/false)
  • MCP_TRANSPORT env
    Transport mode: stdio, sse, or streamable-http (default: stdio)
  • ZUUL_ENABLED_TOOLS env
    Comma-separated list of tools to enable (disables all others)
  • ZUUL_DISABLED_TOOLS env
    Comma-separated list of tools to disable

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 9, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account imatza-rh, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 5756 servers in this category
  • Published to the registry more recently than 31% of the other 5756 servers in this category
  • Basic checks equal to or better than 100% of the other 5756 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is MCP Zuul safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.11.0) reached the registry 3 months ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

by upstashWidely used↓ 972.7K/wk★ 64.2KUpdated 3 days ago

Computer or cloud

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

by DeusDataWidely used↓ 18K/wk★ 48.1KUpdated 23 days ago

Runs on your computer

Exa

Connect AI agents to Exa for web search, content fetching, and multi-step research.

by exa-labsWidely used★ 5.2KUpdated 2 months ago

Runs in the cloud✓ exa.ai

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

mcp-zuul

Debug build failures by asking questions, not clicking through web UIs. An MCP server for Zuul CI.

If mcp-zuul saves you a debugging session, a ⭐ star helps others find it.

One command, no install:

claude mcp add zuul -e ZUUL_URL=https://your-zuul.example.com -- uvx mcp-zuul

48 tools, 5 prompts, 3 resources — covering builds, logs, pipelines, jobs, infrastructure, and live status. Works with Claude Code, Claude Desktop, Cursor, Codex, Windsurf, and any MCP-compatible client.

Why mcp-zuul?

mcp-zuulRaw Zuul APIZuul web UI
Failure analysisStructured — task, host, error, rcRaw JSON, parse yourselfClick through log pages
Log searchRegex + context lines + line rangesNot availableBrowser Ctrl+F
Flaky detectionAutomatic pass/fail statisticsManual query + calculateNot available
Test resultsParsed JUnit XML with failure detailsNot availableExternal link
Anomaly detectionML-based via LogJuicerNot availableNot available
Live statusJob progress, ETA, pre-failure alertsPolling APIManual refresh
Multi-instanceOne config entry per ZuulDifferent base URLsDifferent browser tabs

Quick Start

uvx (no install, recommended):

claude mcp add zuul \

-e ZUUL_URL=https://softwarefactory-project.io/zuul \ -e ZUUL_DEFAULT_TENANT=rdoproject.org \ -- uvx mcp-zuul

pip:

pip install mcp-zuul

Docker:

docker build -t mcp-zuul .

[LobeHub](https://lobehub.com/mcp/imatza-rh-mcp-zuul) — send this to your AI agent:

Read https://lobehub.com/mcp/imatza-rh-mcp-zuul/skill.md and follow the instructions to install the MCP server.

See Setup for full configuration options including Kerberos and multi-instance.

Features

Structured failure analysis — get_build_failures parses Zuul's job-output.json and returns exactly which Ansible task failed, on which host, with error message, return code, and stderr. No log scrolling needed.

Read any log file — get_build_log isn't limited to job-output.txt. Pass log_name to read any file in the build's log directory (ci_script logs, ansible.log, deployment logs) with full grep, tail, and line-range support.

Precise log navigation — Jump to exact line ranges with start_line/end_line. After finding an error at line 6148, read lines 6130-6160 instead of scrolling through 200-line chunks.

Smart grep — Regex search with context lines. Auto-converts common shell-grep \| syntax to Python regex | so patterns like error\|failed\|timeout just work.

Live pipeline awareness — get_change_status returns live job progress with elapsed times, estimated completion, and pre-failure detection (pre_fail field). When the change isn't in pipeline, automatically fetches the latest completed buildset.

Tool filtering — Reduce LLM tool-selection noise with ZUUL_ENABLED_TOOLS or ZUUL_DISABLED_TOOLS. Only expose the tools your workflow needs — the rest are removed from the server entirely.

URL-based input — Paste a Zuul build URL directly. Tools auto-parse the tenant and UUID from URLs like https://zuul.example.com/t/tenant/build/abc123 — no manual extraction needed.

Flaky job detection — find_flaky_jobs analyzes recent build history and computes pass/fail statistics to identify intermittent failures automatically.

Job dependency graph — get_freeze_jobs returns the fully-resolved job graph for a pipeline/project/branch, showing all jobs with their dependencies after inheritance resolution.

Kerberos/SPNEGO auth — First-class support for Zuul instances behind OIDC + Kerberos. Drives the full SPNEGO redirect chain automatically. Session cookies persist and re-authenticate transparently on expiry.

Streamable HTTP transport — Run as a persistent HTTP server with MCP_TRANSPORT=streamable-http for remote/shared deployment. Supports stdio (default), SSE, and streamable-http.

Write operations — Enqueue/dequeue/promote changes and re-enqueue buildsets. Pipeline-affecting tools are disabled by default (ZUUL_READ_ONLY=true) and removed from the server entirely so LLMs don't even see them. Autohold management (create/delete) is always available since it doesn't affect running pipelines.

LogJuicer integration — get_build_anomalies uses ML-based log analysis to find unusual lines by comparing failed logs against successful baselines. Optional — requires LOGJUICER_URL.

Token-efficient output — All responses strip None values and use compact formatters. tail_build_log returns just the last N lines — the fastest way to check why a build failed.

Error handling — All tools return JSON, errors included. Network failures, auth issues, and invalid parameters produce {"error": "descriptive message"}. Tools never raise unhandled exceptions.

Tools

Builds & Failures
ToolWhat it does
list_buildsSearch builds by project, pipeline, job, change, result. Includes buildset_uuid for cross-referencing.
get_buildFull build details — nodeset, log URL, artifacts, error detail. Accepts url or uuid.
get_build_failuresStart here for failures. Structured task-level data from job-output.json — failed play, task, host, msg, rc, stderr/stdout. Accepts url or uuid.
diagnose_buildOne-call failure diagnosis. Combines structured failures from job-output.json with targeted log context (fatal/FAILED lines with surrounding context from job-output.txt). Use instead of calling get_build_failures + get_build_log separately. Accepts url or uuid.
get_build_logRead and search log files. Modes: summary (tail + error lines), full (paginated), grep (regex + context), start_line/end_line (exact range). Supports log_name for any file. Accepts url or uuid.
tail_build_logFastest failure check. Last N lines of a log (default 50, max 500). More token-efficient than get_build_log summary mode. Accepts url or uuid.
browse_build_logsList log directory contents or fetch specific files (inventory, artifacts, must-gather). Max 512KB per file. Accepts url or uuid.
stream_build_consoleLive console from RUNNING builds. Connects to Zuul WebSocket, returns last N lines (tail). For completed builds, use tail_build_log. Optional — requires pip install mcp-zuul[console].
Buildsets
ToolWhat it does
list_buildsetsSearch buildsets. Use include_builds=true to inline full build details (saves round-trips).
get_buildsetFull buildset with all builds and events. Accepts url or uuid.
Pipeline & Status
ToolWhat it does
get_statusLive pipeline status — what's queued, running, with job progress and ETA. Filterable by pipeline and project.
get_change_statusStatus for a change/PR/MR. In pipeline: live jobs with elapsed times. Not in pipeline: auto-fetches latest completed buildset. Accepts url or change.
list_pipelinesAll pipelines with their trigger types.
Jobs & Projects
ToolWhat it does
list_tenantsAll tenants with project counts.
list_jobsList jobs with optional name filter.
get_jobJob configuration — parent, nodeset, timeout, variants, source project.
get_projectWhich pipelines and jobs are configured for a project.
list_projectsList all projects in a tenant with optional name filter.
get_config_errorsCheck this when jobs aren't running. Configuration errors, missing refs, broken configs. Filterable by project.
get_freeze_jobsResolved job dependency graph for a pipeline/project/branch. Shows exactly which jobs will run with inheritance resolved.
get_freeze_jobResolved job config after inheritance. Final merged nodeset, playbooks, variables, and timeout for a specific job. Answers "what will this job actually do?"
find_flaky_jobsAnalyze recent build history for intermittent failures. Computes pass/fail rate and flags jobs as flaky (>20% failure with mixed results).
get_build_timesBuild duration trends with avg/min/max stats. Detect performance regressions or timeout-prone jobs.
get_job_durationsBatch avg/min/max duration for multiple jobs in one call. Designed for monitoring an entire pipeline chain without N separate calls.
check_healthTest API connectivity, auth status, and config. Triggers re-auth automatically if the Kerberos session expired.
get_tenant_infoTenant capabilities — auth realms, job history support, websocket URL.
Infrastructure
ToolWhat it does
list_nodesNodepool nodes with state (ready, in-use, building), provider, and label. Includes state summary.
list_labelsAvailable nodepool labels — what node types jobs can request.
list_semaphoresResource locks with current holders and max capacity. Check when jobs wait unexpectedly.
list_autoholdsActive autohold requests — nodes held after failure for debugging.
get_autoholdFull details of a specific autohold request — held nodes, timing, project/job.
list_providersNodepool cloud providers with flavors (VM sizes), images, and labels.
list_imagesNodepool disk images with build status and provider upload state.
list_system_eventsSystem events — config updates, reconfigurations, pipeline changes. Useful for "why did my job stop running?"
get_badgeCI status badge URL (SVG) for a project — embeddable in READMEs with Markdown snippet.
get_connectionsConfigured source connections — Gerrit, GitHub, GitLab instances with driver and hostname.
get_componentsSystem components — schedulers, executors, mergers, web servers with state and version.
Write Operations

Pipeline-affecting operations — disabled by default (ZUUL_READ_ONLY=true). Set ZUUL_READ_ONLY=false to enable. Requires auth token or Kerberos. Autohold management (create/delete) is always available since it doesn't affect running pipelines.

ToolWhat it does
enqueueEnqueue a change or ref into a pipeline. Supports both change-based (check/gate) and ref-based (periodic) enqueue.

| promote | Promote changes to the top of a

Only the beginning is shown; read the rest in the repo

Ask PopNx