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
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.
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.
About
Use cases: ci-cd, debugging
Reviews
Write a reviewNo 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_diagnosebrowse_build_logscheck_healthfind_flaky_jobsget_autoholdget_badgeget_buildget_build_anomaliesget_build_failuresget_build_logget_build_test_resultsget_buildset
Show 25 more tools
get_change_statusget_componentsget_config_errorsget_connectionsget_freeze_jobget_freeze_jobsget_jobget_job_durationsget_projectget_statusget_tenant_infolist_autoholdslist_buildslist_buildsetslist_imageslist_jobslist_labelslist_nodeslist_pipelineslist_projectslist_providerslist_semaphoreslist_system_eventslist_tenantstail_build_log
Write 3 · Create, change, send or run things.
autohold_creatediagnose_buildstream_build_console
Delete 2 · Delete, drop, revoke or wipe things.
autohold_deletedequeue
Not yet classified 6 · We could not tell from the name and description.
diagnose_and_testenqueueget_build_timesinvestigate_changepromotereenqueue_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_TRANSPORTZUUL_DEFAULT_TENANTZUUL_DISABLED_TOOLSZUUL_ENABLED_TOOLSZUUL_URLZUUL_USE_KERBEROS
Network hosts it talks to 4
github.com· found in codeglama.ai· found in codeimatza-rh.github.io· found in codesoftwarefactory-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 AutoholdCreate 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 AutoholdDelete 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 BuildsClassify 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 FilesBrowse 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 CheckTest 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 ChangeRemove 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 TestsOne-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 FailureOne-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…
enqueueEnqueueEnqueue 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 DetectionDetect 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 DetailsGet details of a specific autohold request. Args: autohold_id: Autohold request ID (from list_autoholds) tenant: Tenant (default from env)
get_badgeProject BadgeGet 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 DetailsGet 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 DetectionDetect 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 AnalysisAnalyze 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 LogRead, 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 ResultsParse 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 TrendsBuild 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 DetailsGet 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 StatusPipeline 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 ComponentsShow Zuul system components — schedulers, executors, mergers, web servers.
get_config_errorsConfiguration ErrorsGet 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 ConnectionsList 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 ConfigurationGet 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 GraphGet 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 ConfigurationGet job configuration — parent, nodeset, timeout, branches, and all variants. Args: name: Job name tenant: Tenant (default from env)
get_job_durationsBatch Job Duration StatsGet 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 ConfigurationGet 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 StatusLive 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 InformationGet tenant capabilities, auth config, and websocket URL. Args: tenant: Tenant (default from env)
investigate_changeInvestigate ChangeOne-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 RequestsList 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 BuildsSearch 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 BuildsetsSearch 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 ImagesList nodepool disk images with build status and upload artifacts. Args: tenant: Tenant (default from env)
list_jobsList JobsList 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 LabelsList available nodepool labels (node types that jobs can request). Args: tenant: Tenant (default from env)
list_nodesNodepool NodesList 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 PipelinesList all pipelines with their trigger types. Args: tenant: Tenant (default from env)
list_projectsList ProjectsList 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 ProvidersList nodepool cloud providers with flavors and images. Args: tenant: Tenant (default from env)
list_semaphoresSemaphoresList semaphores — resource locks that limit concurrent job execution. Check when jobs are waiting unexpectedly. Args: tenant: Tenant (default from env)
list_system_eventsSystem EventsList 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 TenantsList all Zuul tenants with project and queue counts.
promotePromote ChangesPromote 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 BuildsetRe-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 ConsoleRead 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 TailGet 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
- Repository
- github.com/imatza-rh/mcp-zuul
- 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.
Cite this page
MCP Zuul. Agent Mart. https://agentmart.dev/connectors/imatza-rh-mcp-zuul (last updated 2026-10-24)