imatza-rh/mcp-zuul

imatza-rh/mcp-zuul

от imatza-rh
MCP-сервер для Zuul CI, упрощающий анализ сбоев сборок. Позволяет искать ошибки в логах, отслеживать живые конвейеры и выявлять нестабильные задачи без переключения между UI. Полезен разработчикам и DevOps, работающим с Zuul.

mcp-zuul

PyPI Python License CI MCP Downloads codecov Listed on AiList

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

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

44 tools, 3 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.

You:   "Why did the latest gate job fail?"
Claude: → get_build_failures(uuid="abc123")
        → get_build_log(uuid="abc123", log_name="controller/logs/ci_script_008_run.log",
                        grep="error|failed|timed out", context=2)

        Root cause: cert-manager pod in Completed state blocked oc wait.
        Confidence: Confirmed — verified in ci_script_008_run.log:325-329.

Why mcp-zuul?

mcp-zuul Raw Zuul API Zuul web UI
Failure analysis Structured — task, host, error, rc Raw JSON, parse yourself Click through log pages
Log search Regex + context lines + line ranges Not available Browser Ctrl+F
Flaky detection Automatic pass/fail statistics Manual query + calculate Not available
Test results Parsed JUnit XML with failure details Not available External link
Anomaly detection ML-based via LogJuicer Not available Not available
Live status Job progress, ETA, pre-failure alerts Polling API Manual refresh
Multi-instance One config entry per Zuul Different base URLs Different browser tabs
browse_build_logsтолько чтениеидемпотентныйвнешний мир

Просматривает или загружает файлы из каталога логов сборки. Без пути: выводит корневой каталог логов. С путём, заканчивающимся на '/': выводит содержимое указанного подкаталога. С путём к файлу: загружает и возвращает содержимое файла (не более 512 КБ). Для фильтрованной загрузки больших файлов используйте get_build_log с log_name и grep — он поддерживает поиск по регулярным выражениям и диапазоны строк. Аргументы: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если пусто) path: Относительный путь внутри каталога логов (например "logs/controller/", "zuul-info/inventory.yaml", "logs/hypervisor/ci-framework-data/artifacts/") url: URL сборки Zuul (альтернатива uuid + tenant) max_lines: Ограничить содержимое файла первыми N строками (0 = без ограничения). Ответ включает количество total_lines для пагинации.

Browse Log Files

Просматривает или загружает файлы из каталога логов сборки. Без пути: выводит корневой каталог логов. С путём, заканчивающимся на '/': выводит содержимое указанного подкаталога. С путём к файлу: загружает и возвращает содержимое файла (не более 512 КБ). Для фильтрованной загрузки больших файлов используйте get_build_log с log_name и grep — он поддерживает поиск по регулярным выражениям и диапазоны строк. Аргументы: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если пусто) path: Относительный путь внутри каталога логов (например "logs/controller/", "zuul-info/inventory.yaml", "logs/hypervisor/ci-framework-data/artifacts/") url: URL сборки Zuul (альтернатива uuid + tenant) max_lines: Ограничить содержимое файла первыми N строками (0 = без ограничения). Ответ включает количество total_lines для пагинации.

Параметры

  • uuidstring
  • tenantstring
  • pathstring
  • urlstring
  • max_linesinteger
check_healthтолько чтениеидемпотентныйвнешний мир

Проверяет подключение к Zuul API и статус аутентификации. Используйте это, чтобы убедиться, что сервер работает после запуска или когда вызовы инструментов начинают давать сбой. Повторная аутентификация выполняется автоматически через обёртку api(), если сессия Kerberos истекла.

Health Check

Проверяет подключение к Zuul API и статус аутентификации. Используйте это, чтобы убедиться, что сервер работает после запуска или когда вызовы инструментов начинают давать сбой. Повторная аутентификация выполняется автоматически через обёртку api(), если сессия Kerberos истекла.

Параметры

Без параметров.

diagnose_buildтолько чтениеидемпотентныйвнешний мир

Диагностика ошибок за один вызов — структурированные ошибки + контекст из журнала. Объединяет get_build_failures (какая задача упала, сообщение об ошибке) с целевым поиском по логу (окружающий контекст из job-output.txt). Возвращает всё необходимое для понимания ошибки за один вызов. Включает ref_url/project/change и files_in_failure, чтобы потребители могли проверить, относятся ли падающие файлы к изменению или уже существовали ранее. Используйте этот инструмент вместо раздельных вызовов get_build_failures и get_build_log. Args: uuid: UUID сборки tenant: Имя тенанта (используется стандартное, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant)

Diagnose Build Failure

Диагностика ошибок за один вызов — структурированные ошибки + контекст из журнала. Объединяет get_build_failures (какая задача упала, сообщение об ошибке) с целевым поиском по логу (окружающий контекст из job-output.txt). Возвращает всё необходимое для понимания ошибки за один вызов. Включает ref_url/project/change и files_in_failure, чтобы потребители могли проверить, относятся ли падающие файлы к изменению или уже существовали ранее. Используйте этот инструмент вместо раздельных вызовов get_build_failures и get_build_log. Args: uuid: UUID сборки tenant: Имя тенанта (используется стандартное, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
find_flaky_jobsтолько чтениеидемпотентныйвнешний мир

Обнаруживает нестабильные задания, анализируя историю последних сборок на предмет перемежающихся сбоев. Получает последние сборки для задания и вычисляет статистику успехов/неудач. Задание со смешанными результатами SUCCESS/FAILURE и частотой отказов >20% скорее всего нестабильно. Возвращает количество по каждому результату и частоту отказов. Аргументы: job_name: Имя задания для анализа tenant: Имя тенанта (используется значение по умолчанию, если не указано) project: Фильтр по конкретному проекту pipeline: Фильтр по конкретному пайплайну limit: Количество последних сборок для анализа (по умолчанию 20, максимум 100)

Flaky Job Detection

Обнаруживает нестабильные задания, анализируя историю последних сборок на предмет перемежающихся сбоев. Получает последние сборки для задания и вычисляет статистику успехов/неудач. Задание со смешанными результатами SUCCESS/FAILURE и частотой отказов >20% скорее всего нестабильно. Возвращает количество по каждому результату и частоту отказов. Аргументы: job_name: Имя задания для анализа tenant: Имя тенанта (используется значение по умолчанию, если не указано) project: Фильтр по конкретному проекту pipeline: Фильтр по конкретному пайплайну limit: Количество последних сборок для анализа (по умолчанию 20, максимум 100)

Параметры

  • job_namestringобязательный
  • tenantstring
  • projectstring
  • pipelinestring
  • limitinteger
get_autoholdтолько чтениеидемпотентныйвнешний мир

Получает детали конкретного запроса autohold. Показывает все подробности, включая удерживаемые узлы, время и проект/задачу, которая вызвала удержание. Аргументы: autohold_id: ID запроса autohold (из list_autoholds) tenant: Имя арендатора (используется значение по умолчанию, если пусто)

Autohold Details

Получает детали конкретного запроса autohold. Показывает все подробности, включая удерживаемые узлы, время и проект/задачу, которая вызвала удержание. Аргументы: autohold_id: ID запроса autohold (из list_autoholds) tenant: Имя арендатора (используется значение по умолчанию, если пусто)

Параметры

  • autohold_idstringобязательный
  • tenantstring
get_badgeтолько чтениеидемпотентныйвнешний мир

Получает бейдж статуса для последнего результата сборки проекта. Возвращает URL бейджа (SVG), который можно встроить в файлы README для отображения текущего статуса CI. Возвращает информацию с кодом 404, если набор сборок не найден. Аргументы: project: Имя проекта (например, "org/repo") tenant: Имя тенанта (используется значение по умолчанию, если не указано) pipeline: Фильтр по пайплайну (необязательно) branch: Фильтр по ветке (необязательно)

Project Badge

Получает бейдж статуса для последнего результата сборки проекта. Возвращает URL бейджа (SVG), который можно встроить в файлы README для отображения текущего статуса CI. Возвращает информацию с кодом 404, если набор сборок не найден. Аргументы: project: Имя проекта (например, "org/repo") tenant: Имя тенанта (используется значение по умолчанию, если не указано) pipeline: Фильтр по пайплайну (необязательно) branch: Фильтр по ветке (необязательно)

Параметры

  • projectstringобязательный
  • tenantstring
  • pipelinestring
  • branchstring
get_buildтолько чтениеидемпотентныйвнешний мир

Получает полные детали сборки — URL лога, nodeset, артефакты, тайминги, детали ошибок. Аргументы: uuid: UUID сборки (полный или префикс из list_builds) tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant, например "https://zuul.example.com/t/tenant/build/abc123")

Build Details

Получает полные детали сборки — URL лога, nodeset, артефакты, тайминги, детали ошибок. Аргументы: uuid: UUID сборки (полный или префикс из list_builds) tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant, например "https://zuul.example.com/t/tenant/build/abc123")

Параметры

  • uuidstring
  • tenantstring
  • urlstring
get_build_anomaliesтолько чтениеидемпотентныйвнешний мир

Обнаруживает аномальные строки логов с помощью ML-анализа LogJuicer. Сравнивает логи неудачных сборок с успешными эталонами, чтобы найти необычные строки. Требует, чтобы LOGJUICER_URL был настроен. Принимает UUID сборки или URL сборки Zuul. Аргументы: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если не указано) url: URL сборки Zuul (альтернатива uuid + tenant)

Log Anomaly Detection

Обнаруживает аномальные строки логов с помощью ML-анализа LogJuicer. Сравнивает логи неудачных сборок с успешными эталонами, чтобы найти необычные строки. Требует, чтобы LOGJUICER_URL был настроен. Принимает UUID сборки или URL сборки Zuul. Аргументы: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если не указано) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
get_build_failuresтолько чтениеидемпотентныйвнешний мир

Анализирует неудачную сборку и сообщает, какая задача не удалась, на каком хосте, с сообщением об ошибке и кодом возврата. Извлекает точные данные об ошибке из структурированного job-output.json Zuul. Для большинства случаев используйте diagnose_build, который включает все эти данные, а также классификацию ошибок, контекст журнала и сведения о времени выполнения. Ответы об ошибках содержат ref_url/project/change и files_in_failure (пути к файлам, извлечённые из вывода ошибок). Используйте их, чтобы проверить, являются ли отказавшие файлы частью изменения, прежде чем делать вывод, связана ли ошибка с изменением или это существующая проблема в репозитории. Примечание: задачи Ansible с ``no_log: true`` будут иметь пустые поля ``msg`` в failed_tasks. Используйте get_build_log с grep, чтобы найти реальный текст ошибки в сырых логах. Аргументы: uuid: UUID сборки tenant: Имя тенанта (по умолчанию используется пустое) url: URL сборки Zuul (альтернатива uuid + tenant)

Build Failure Analysis

Анализирует неудачную сборку и сообщает, какая задача не удалась, на каком хосте, с сообщением об ошибке и кодом возврата. Извлекает точные данные об ошибке из структурированного job-output.json Zuul. Для большинства случаев используйте diagnose_build, который включает все эти данные, а также классификацию ошибок, контекст журнала и сведения о времени выполнения. Ответы об ошибках содержат ref_url/project/change и files_in_failure (пути к файлам, извлечённые из вывода ошибок). Используйте их, чтобы проверить, являются ли отказавшие файлы частью изменения, прежде чем делать вывод, связана ли ошибка с изменением или это существующая проблема в репозитории. Примечание: задачи Ansible с ``no_log: true`` будут иметь пустые поля ``msg`` в failed_tasks. Используйте get_build_log с grep, чтобы найти реальный текст ошибки в сырых логах. Аргументы: uuid: UUID сборки tenant: Имя тенанта (по умолчанию используется пустое) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
get_build_logтолько чтениеидемпотентныйвнешний мир

Читает, ищет и перемещается по файлам логов сборки с помощью grep, диапазонов строк и сводки ошибок. Аргументы: uuid: UUID сборки tenant: Имя тенанта (использует значение по умолчанию, если пусто) log_name: Файл лога для чтения (по умолчанию "job-output.txt"). Для других файлов используйте путь относительно log_url сборки, например "logs/controller/ci-framework-data/logs/ci_script_008_run.log" mode: "summary" (по умолчанию: хвост + строки с ошибками) или "full" (постраничные блоки) lines: Для summary: количество строк в хвосте (по умолчанию 100). Для full: строка смещения начала. start_line: Читать с этого номера строки (нумерация с 1). Если задан вместе с end_line, возвращает именно этот диапазон (переопределяет mode). end_line: Читать до этого номера строки включительно (нумерация с 1). grep: Регулярное выражение Python для фильтрации строк лога (переопределяет mode). Используйте | для OR: "error|failed|timeout". НЕ используйте обратный слэш-пайп. context: Строк контекста до и после каждого совпадения grep (по умолчанию 0, максимум 10) url: URL сборки Zuul (альтернатива uuid + tenant)

Read Build Log

Читает, ищет и перемещается по файлам логов сборки с помощью grep, диапазонов строк и сводки ошибок. Аргументы: uuid: UUID сборки tenant: Имя тенанта (использует значение по умолчанию, если пусто) log_name: Файл лога для чтения (по умолчанию "job-output.txt"). Для других файлов используйте путь относительно log_url сборки, например "logs/controller/ci-framework-data/logs/ci_script_008_run.log" mode: "summary" (по умолчанию: хвост + строки с ошибками) или "full" (постраничные блоки) lines: Для summary: количество строк в хвосте (по умолчанию 100). Для full: строка смещения начала. start_line: Читать с этого номера строки (нумерация с 1). Если задан вместе с end_line, возвращает именно этот диапазон (переопределяет mode). end_line: Читать до этого номера строки включительно (нумерация с 1). grep: Регулярное выражение Python для фильтрации строк лога (переопределяет mode). Используйте | для OR: "error|failed|timeout". НЕ используйте обратный слэш-пайп. context: Строк контекста до и после каждого совпадения grep (по умолчанию 0, максимум 10) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • log_namestring
  • modestring
  • linesinteger
  • start_lineinteger
  • end_lineinteger
  • grepstring
  • contextinteger
  • urlstring
get_buildsetтолько чтениеидемпотентныйвнешний мир

Получает полные сведения о сборке: все сборки, результаты, события и время. Аргументы: uuid: UUID сборки tenant: Название тенанта (используется значение по умолчанию, если не указано) url: URL сборки Zuul (альтернатива uuid + tenant)

Buildset Details

Получает полные сведения о сборке: все сборки, результаты, события и время. Аргументы: uuid: UUID сборки tenant: Название тенанта (используется значение по умолчанию, если не указано) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
get_build_test_resultsтолько чтениеидемпотентныйвнешний мир

Парсит результаты тестов в формате JUnit XML из директории логов сборки. Находит файлы с результатами тестов через zuul-manifest.json и парсит JUnit XML, возвращая структурированные количества пройденных/упавших/пропущенных тестов с деталями об ошибках. Работает с tempest, tobiko и любой тестовой средой, которая выводит JUnit XML. Args: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant)

Test Results

Парсит результаты тестов в формате JUnit XML из директории логов сборки. Находит файлы с результатами тестов через zuul-manifest.json и парсит JUnit XML, возвращая структурированные количества пройденных/упавших/пропущенных тестов с деталями об ошибках. Работает с tempest, tobiko и любой тестовой средой, которая выводит JUnit XML. Args: uuid: UUID сборки tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
get_build_timesтолько чтениеидемпотентныйвнешний мир

Тренды длительности сборок — замедляется ли задача? Вычисляет среднее, минимум и максимум из результатов. Возвращает длительности сборок с данными о времени для анализа трендов. Используйте это для выявления регрессий производительности или задач, склонных к таймаутам. Примечание: Эта конечная точка возвращает ВСЕ результаты (SUCCESS, FAILURE и т.д.) и не поддерживает фильтрацию по результату. Для отфильтрованных средних (например, только SUCCESS) используйте get_job_durations. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) job_name: Фильтр по имени задачи project: Фильтр по имени проекта pipeline: Фильтр по имени пайплайна branch: Фильтр по имени ветки limit: Максимальное количество результатов, 1-100 (по умолчанию 20) skip: Смещение для пагинации

Build Duration Trends

Тренды длительности сборок — замедляется ли задача? Вычисляет среднее, минимум и максимум из результатов. Возвращает длительности сборок с данными о времени для анализа трендов. Используйте это для выявления регрессий производительности или задач, склонных к таймаутам. Примечание: Эта конечная точка возвращает ВСЕ результаты (SUCCESS, FAILURE и т.д.) и не поддерживает фильтрацию по результату. Для отфильтрованных средних (например, только SUCCESS) используйте get_job_durations. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) job_name: Фильтр по имени задачи project: Фильтр по имени проекта pipeline: Фильтр по имени пайплайна branch: Фильтр по имени ветки limit: Максимальное количество результатов, 1-100 (по умолчанию 20) skip: Смещение для пагинации

Параметры

  • tenantstring
  • job_namestring
  • projectstring
  • pipelinestring
  • branchstring
  • limitinteger
  • skipinteger
get_change_statusтолько чтениеидемпотентныйвнешний мир

Статус пайплайна для конкретного изменения Gerrit или PR/MR GitHub/GitLab. Когда изменение находится в пайплайне, возвращает живой статус с задачами, затраченным временем и UUID набора сборок (buildset). Когда изменения в пайплайне нет, автоматически получает последний завершённый набор сборок со всеми результатами сборок - без лишних вызовов ``list_buildsets`` + ``get_buildset``. Параметры: change: Номер изменения (например, "12345"), реф GitHub ("refs/pull/123/head") или реф GitLab ("refs/merge-requests/123/head") tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL статуса изменения в Zuul (альтернатива change + tenant) brief: Упрощает ответ до мониторинговой основы (по умолчанию false). Опускает log_url, artifacts, stream_url, dependencies и другие статические поля, которые не меняются между опросами. Используйте это для повторных проверок статуса, чтобы сократить потребление токенов примерно на 75%.

Change Status

Статус пайплайна для конкретного изменения Gerrit или PR/MR GitHub/GitLab. Когда изменение находится в пайплайне, возвращает живой статус с задачами, затраченным временем и UUID набора сборок (buildset). Когда изменения в пайплайне нет, автоматически получает последний завершённый набор сборок со всеми результатами сборок - без лишних вызовов ``list_buildsets`` + ``get_buildset``. Параметры: change: Номер изменения (например, "12345"), реф GitHub ("refs/pull/123/head") или реф GitLab ("refs/merge-requests/123/head") tenant: Имя тенанта (используется значение по умолчанию, если пусто) url: URL статуса изменения в Zuul (альтернатива change + tenant) brief: Упрощает ответ до мониторинговой основы (по умолчанию false). Опускает log_url, artifacts, stream_url, dependencies и другие статические поля, которые не меняются между опросами. Используйте это для повторных проверок статуса, чтобы сократить потребление токенов примерно на 75%.

Параметры

  • changestring
  • tenantstring
  • urlstring
  • briefboolean
get_componentsтолько чтениеидемпотентныйвнешний мир

Показывает компоненты системы Zuul: планировщики, исполнители, объединители, веб-серверы. Проверяет, исправен ли Zuul. Показывает состояние компонента (работает/приостановлен), версию и имя хоста.

System Components

Показывает компоненты системы Zuul: планировщики, исполнители, объединители, веб-серверы. Проверяет, исправен ли Zuul. Показывает состояние компонента (работает/приостановлен), версию и имя хоста.

Параметры

Без параметров.

get_config_errorsтолько чтениеидемпотентныйвнешний мир

Получает ошибки конфигурации Zuul - почему задания не запускаются, сломанные конфиги, отсутствующие ссылки. Это первый инструмент для проверки, когда задание не запускается или проект ведет себя неожиданно. Возвращает синтаксические ошибки, отсутствующие ссылки и проблемы с доступом к репозиторию для тенанта или конкретного проекта. Аргументы: tenant: Имя тенанта (используется по умолчанию, если пусто) project: Фильтр по имени конкретного проекта (опционально)

Configuration Errors

Получает ошибки конфигурации Zuul - почему задания не запускаются, сломанные конфиги, отсутствующие ссылки. Это первый инструмент для проверки, когда задание не запускается или проект ведет себя неожиданно. Возвращает синтаксические ошибки, отсутствующие ссылки и проблемы с доступом к репозиторию для тенанта или конкретного проекта. Аргументы: tenant: Имя тенанта (используется по умолчанию, если пусто) project: Фильтр по имени конкретного проекта (опционально)

Параметры

  • tenantstring
  • projectstring
get_connectionsтолько чтениеидемпотентныйвнешний мир

Выводит список настроенных исходных подключений — экземпляры Gerrit, GitHub, GitLab. Показывает, с какими системами рецензирования кода взаимодействует данный экземпляр Zuul, с указанием типа подключения, имени хоста и базового URL.

Source Connections

Выводит список настроенных исходных подключений — экземпляры Gerrit, GitHub, GitLab. Показывает, с какими системами рецензирования кода взаимодействует данный экземпляр Zuul, с указанием типа подключения, имени хоста и базового URL.

Параметры

Без параметров.

get_freeze_jobтолько чтениеидемпотентныйвнешний мир

Получает полностью разрешённую конфигурацию для конкретного задания после наследования. Показывает итоговый объединённый nodeset, таймаут, playbooks и переменные после применения всего наследования от родительских заданий. Используйте это, чтобы точно понять, что будет делать задание - отвечает на вопросы «какой nodeset будет использоваться?» и «какие playbooks запускаются?». Args: pipeline: Имя пайплайна (например, "check", "gate") project: Имя проекта (например, "openstack-k8s-operators/openstack-operator") job_name: Имя задания для разрешения branch: Имя ветки (по умолчанию "main") tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Resolved Job Configuration

Получает полностью разрешённую конфигурацию для конкретного задания после наследования. Показывает итоговый объединённый nodeset, таймаут, playbooks и переменные после применения всего наследования от родительских заданий. Используйте это, чтобы точно понять, что будет делать задание - отвечает на вопросы «какой nodeset будет использоваться?» и «какие playbooks запускаются?». Args: pipeline: Имя пайплайна (например, "check", "gate") project: Имя проекта (например, "openstack-k8s-operators/openstack-operator") job_name: Имя задания для разрешения branch: Имя ветки (по умолчанию "main") tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Параметры

  • pipelinestringобязательный
  • projectstringобязательный
  • job_namestringобязательный
  • branchstring
  • tenantstring
get_freeze_jobsтолько чтениеидемпотентныйвнешний мир

Получает разрешённый граф заданий для конвейера/проекта/ветки. Показывает, какие именно задания будут запущены, со всеми разрешёнными наследованиями, включая зависимости между заданиями. Используйте, чтобы понять порядок запуска заданий и почему задание есть (или нет) в конвейере. Аргументы: pipeline: Имя конвейера (например, "check", "gate") project: Имя проекта (например, "openstack-k8s-operators/openstack-operator") branch: Имя ветки (по умолчанию "main") tenant: Имя арендатора (используется значение по умолчанию, если пусто)

Resolved Job Graph

Получает разрешённый граф заданий для конвейера/проекта/ветки. Показывает, какие именно задания будут запущены, со всеми разрешёнными наследованиями, включая зависимости между заданиями. Используйте, чтобы понять порядок запуска заданий и почему задание есть (или нет) в конвейере. Аргументы: pipeline: Имя конвейера (например, "check", "gate") project: Имя проекта (например, "openstack-k8s-operators/openstack-operator") branch: Имя ветки (по умолчанию "main") tenant: Имя арендатора (используется значение по умолчанию, если пусто)

Параметры

  • pipelinestringобязательный
  • projectstringобязательный
  • branchstring
  • tenantstring
get_jobтолько чтениеидемпотентныйвнешний мир

Получает конфигурацию задания — parent, nodeset, timeout, branches и все варианты. Аргументы: name: Имя задания tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Job Configuration

Получает конфигурацию задания — parent, nodeset, timeout, branches и все варианты. Аргументы: name: Имя задания tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Параметры

  • namestringобязательный
  • tenantstring
get_job_durationsтолько чтениеидемпотентныйвнешний мир

Получает среднюю/минимальную/максимальную длительность для нескольких задач в одном вызове. Извлекает историю сборок для каждой задачи параллельно и вычисляет статистику длительности. Разработана для инструментов мониторинга, которым нужны средние длительности для всей цепочки пайплайна без выполнения N отдельных вызовов API. Args: job_names: Список имён задач для получения статистики tenant: Имя тенанта (используется значение по умолчанию, если пусто) result: Фильтр по результату (по умолчанию "SUCCESS" для чистых средних) limit: Сборок на задачу для анализа (по умолчанию 10, максимум 50)

Batch Job Duration Stats

Получает среднюю/минимальную/максимальную длительность для нескольких задач в одном вызове. Извлекает историю сборок для каждой задачи параллельно и вычисляет статистику длительности. Разработана для инструментов мониторинга, которым нужны средние длительности для всей цепочки пайплайна без выполнения N отдельных вызовов API. Args: job_names: Список имён задач для получения статистики tenant: Имя тенанта (используется значение по умолчанию, если пусто) result: Фильтр по результату (по умолчанию "SUCCESS" для чистых средних) limit: Сборок на задачу для анализа (по умолчанию 10, максимум 50)

Параметры

  • job_namesstring[]обязательный
  • tenantstring
  • resultstring
  • limitinteger
get_projectтолько чтениеидемпотентныйвнешний мир

Получает конфигурацию проекта — какие пайплайны и задания настроены. Args: name: Имя проекта (например, "openstack-k8s-operators/openstack-operator") tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Project Configuration

Получает конфигурацию проекта — какие пайплайны и задания настроены. Args: name: Имя проекта (например, "openstack-k8s-operators/openstack-operator") tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Параметры

  • namestringобязательный
  • tenantstring
get_statusтолько чтениеидемпотентныйвнешний мир

Статус конвейера в реальном времени: показывает, что сейчас в очереди или выполняется. Аргументы: tenant: Имя тенанта (если пусто, используется значение по умолчанию) pipeline: Фильтр по имени конвейера project: Фильтр по проекту active_only: Показывать только конвейеры с активными элементами (по умолчанию true)

Pipeline Status

Статус конвейера в реальном времени: показывает, что сейчас в очереди или выполняется. Аргументы: tenant: Имя тенанта (если пусто, используется значение по умолчанию) pipeline: Фильтр по имени конвейера project: Фильтр по проекту active_only: Показывать только конвейеры с активными элементами (по умолчанию true)

Параметры

  • tenantstring
  • pipelinestring
  • projectstring
  • active_onlyboolean
get_tenant_infoтолько чтениеидемпотентныйвнешний мир

Получает возможности арендатора, конфигурацию аутентификации и адрес websocket. Показывает, какие функции доступны для этого арендатора (история заданий, realms аутентификации) и имя арендатора. Аргументы: tenant: имя арендатора (если не указан, используется значение по умолчанию)

Tenant Information

Получает возможности арендатора, конфигурацию аутентификации и адрес websocket. Показывает, какие функции доступны для этого арендатора (история заданий, realms аутентификации) и имя арендатора. Аргументы: tenant: имя арендатора (если не указан, используется значение по умолчанию)

Параметры

  • tenantstring
list_autoholdsтолько чтениеидемпотентныйвнешний мир

Перечисляет запросы autohold - узлы, удерживаемые после сбоя для отладки. Показывает активные запросы autohold: какой проект/задание/изменение их вызвало, сколько узлов удерживается и срок истечения. Аргументы: tenant: Имя tenant (использует значение по умолчанию, если пусто)

Autohold Requests

Перечисляет запросы autohold - узлы, удерживаемые после сбоя для отладки. Показывает активные запросы autohold: какой проект/задание/изменение их вызвало, сколько узлов удерживается и срок истечения. Аргументы: tenant: Имя tenant (использует значение по умолчанию, если пусто)

Параметры

  • tenantstring
list_buildsтолько чтениеидемпотентныйвнешний мир

Ищет сборки по фильтрам. Возвращает краткие сводки сборок. Аргументы: tenant: Имя тенанта (использует значение по умолчанию, если пусто) project: Фильтрует по имени проекта pipeline: Фильтрует по имени пайплайна job_name: Фильтрует по имени задачи change: Фильтрует по номеру изменения branch: Фильтрует по имени ветки patchset: Фильтрует по набору изменений ref: Фильтрует по git-ссылке result: Фильтрует по результату (SUCCESS, FAILURE, TIMED_OUT, SKIPPED и т.д.) completed_after: Фильтрует сборки, завершённые после указанного времени (ISO 8601, например "2026-04-18T00:00:00Z") completed_before: Фильтрует сборки, завершённые до указанного времени (ISO 8601) started_after: Фильтрует сборки, запущенные после указанного времени (ISO 8601) started_before: Фильтрует сборки, запущенные до указанного времени (ISO 8601) limit: Максимальное количество результатов, от 1 до 100 (по умолчанию 20) skip: Смещение для постраничного вывода (по умолчанию 0)

Search Builds

Ищет сборки по фильтрам. Возвращает краткие сводки сборок. Аргументы: tenant: Имя тенанта (использует значение по умолчанию, если пусто) project: Фильтрует по имени проекта pipeline: Фильтрует по имени пайплайна job_name: Фильтрует по имени задачи change: Фильтрует по номеру изменения branch: Фильтрует по имени ветки patchset: Фильтрует по набору изменений ref: Фильтрует по git-ссылке result: Фильтрует по результату (SUCCESS, FAILURE, TIMED_OUT, SKIPPED и т.д.) completed_after: Фильтрует сборки, завершённые после указанного времени (ISO 8601, например "2026-04-18T00:00:00Z") completed_before: Фильтрует сборки, завершённые до указанного времени (ISO 8601) started_after: Фильтрует сборки, запущенные после указанного времени (ISO 8601) started_before: Фильтрует сборки, запущенные до указанного времени (ISO 8601) limit: Максимальное количество результатов, от 1 до 100 (по умолчанию 20) skip: Смещение для постраничного вывода (по умолчанию 0)

Параметры

  • tenantstring
  • projectstring
  • pipelinestring
  • job_namestring
  • changestring
  • branchstring
  • patchsetstring
  • refstring
  • resultstring
  • completed_afterstring
  • completed_beforestring
  • started_afterstring
  • started_beforestring
  • limitinteger
  • skipinteger
list_buildsetsтолько чтениеидемпотентныйвнешний мир

Ищет buildsets (группы сборок, запущенных одним событием). Args: tenant: Имя tenant (использует значение по умолчанию, если пусто) project: Фильтрует по проекту pipeline: Фильтрует по имени пайплайна change: Фильтрует по номеру изменения branch: Фильтрует по имени ветки ref: Фильтрует по git ref result: Фильтрует по результату completed_after: Фильтрует buildsets, завершённые после этого времени (ISO 8601, например "2026-04-18T00:00:00Z") completed_before: Фильтрует buildsets, завершённые до этого времени (ISO 8601) started_after: Фильтрует buildsets, запущенные после этого времени (ISO 8601) started_before: Фильтрует buildsets, запущенные до этого времени (ISO 8601) limit: Максимум результатов, 1-100 (по умолчанию 20) skip: Смещение для пагинации include_builds: Получает полные детали (сборки, события) для каждого buildset. Экономит отдельный вызов get_buildset на каждый результат, но медленнее для больших наборов результатов. Лучше всего с limit <= 5.

Search Buildsets

Ищет buildsets (группы сборок, запущенных одним событием). Args: tenant: Имя tenant (использует значение по умолчанию, если пусто) project: Фильтрует по проекту pipeline: Фильтрует по имени пайплайна change: Фильтрует по номеру изменения branch: Фильтрует по имени ветки ref: Фильтрует по git ref result: Фильтрует по результату completed_after: Фильтрует buildsets, завершённые после этого времени (ISO 8601, например "2026-04-18T00:00:00Z") completed_before: Фильтрует buildsets, завершённые до этого времени (ISO 8601) started_after: Фильтрует buildsets, запущенные после этого времени (ISO 8601) started_before: Фильтрует buildsets, запущенные до этого времени (ISO 8601) limit: Максимум результатов, 1-100 (по умолчанию 20) skip: Смещение для пагинации include_builds: Получает полные детали (сборки, события) для каждого buildset. Экономит отдельный вызов get_buildset на каждый результат, но медленнее для больших наборов результатов. Лучше всего с limit <= 5.

Параметры

  • tenantstring
  • projectstring
  • pipelinestring
  • changestring
  • branchstring
  • refstring
  • resultstring
  • completed_afterstring
  • completed_beforestring
  • started_afterstring
  • started_beforestring
  • limitinteger
  • skipinteger
  • include_buildsboolean
list_imagesтолько чтениеидемпотентныйвнешний мир

Перечисляет образы дисков nodepool со статусом сборки и артефактами загрузки. Показывает доступные базовые образы для узлов заданий, включая историю сборок и сведения о том, к каким провайдерам они были загружены. Аргументы: tenant: Имя тенанта (если пусто, используется значение по умолчанию)

Nodepool Images

Перечисляет образы дисков nodepool со статусом сборки и артефактами загрузки. Показывает доступные базовые образы для узлов заданий, включая историю сборок и сведения о том, к каким провайдерам они были загружены. Аргументы: tenant: Имя тенанта (если пусто, используется значение по умолчанию)

Параметры

  • tenantstring
list_jobsтолько чтениеидемпотентныйвнешний мир

Перечисляет все задачи в тенанте. Опционально фильтрует по подстроке имени. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) filter: Подстрока для фильтрации имен задач без учёта регистра limit: Максимальное количество возвращаемых результатов (по умолчанию 200, 0 — без ограничений)

List Jobs

Перечисляет все задачи в тенанте. Опционально фильтрует по подстроке имени. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) filter: Подстрока для фильтрации имен задач без учёта регистра limit: Максимальное количество возвращаемых результатов (по умолчанию 200, 0 — без ограничений)

Параметры

  • tenantstring
  • filterstring
  • limitinteger
list_labelsтолько чтениеидемпотентныйвнешний мир

Перечисляет доступные метки nodepool (типы узлов, которые могут запрашивать задания). Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если не указано)

Nodepool Labels

Перечисляет доступные метки nodepool (типы узлов, которые могут запрашивать задания). Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если не указано)

Параметры

  • tenantstring
list_nodesтолько чтениеидемпотентныйвнешний мир

List nodepool nodes. Показывает, что доступно, используется или подготавливается. Проверяйте это, когда задания застревают в ожидании узлов. По умолчанию возвращает сводку, сгруппированную по метке и состоянию. Установите detail=true для просмотра отдельных узлов. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) detail: Включает список отдельных узлов (по умолчанию false, только сводка) limit: Максимальное количество узлов в подробном списке (по умолчанию 200, 0 - без ограничений). Сводная статистика всегда охватывает все узлы независимо от лимита.

Nodepool Nodes

List nodepool nodes. Показывает, что доступно, используется или подготавливается. Проверяйте это, когда задания застревают в ожидании узлов. По умолчанию возвращает сводку, сгруппированную по метке и состоянию. Установите detail=true для просмотра отдельных узлов. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто) detail: Включает список отдельных узлов (по умолчанию false, только сводка) limit: Максимальное количество узлов в подробном списке (по умолчанию 200, 0 - без ограничений). Сводная статистика всегда охватывает все узлы независимо от лимита.

Параметры

  • tenantstring
  • detailboolean
  • limitinteger
list_pipelinesтолько чтениеидемпотентныйвнешний мир

Перечисляет все пайплайны с их типами триггеров. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто)

List Pipelines

Перечисляет все пайплайны с их типами триггеров. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Параметры

  • tenantstring
list_projectsтолько чтениеидемпотентныйвнешний мир

Перечисляет все проекты в тенанте. Опционально фильтрует по подстроке имени. Args: tenant: Имя тенанта (используется значение по умолчанию, если пусто) filter: Подстрока для фильтрации названий проектов без учёта регистра limit: Максимальное количество возвращаемых результатов (по умолчанию 200, 0 для неограниченного количества)

List Projects

Перечисляет все проекты в тенанте. Опционально фильтрует по подстроке имени. Args: tenant: Имя тенанта (используется значение по умолчанию, если пусто) filter: Подстрока для фильтрации названий проектов без учёта регистра limit: Максимальное количество возвращаемых результатов (по умолчанию 200, 0 для неограниченного количества)

Параметры

  • tenantstring
  • filterstring
  • limitinteger
list_providersтолько чтениеидемпотентныйвнешний мир

Перечисляет nodepool облачных провайдеров с типами и образами. Показывает, какая инфраструктура доступна для запуска задач: названия провайдеров, доступные типы (размеры ВМ) и образы (базовые ОС). Аргументы: tenant: Название тенанта (используется значение по умолчанию, если не указано)

Nodepool Providers

Перечисляет nodepool облачных провайдеров с типами и образами. Показывает, какая инфраструктура доступна для запуска задач: названия провайдеров, доступные типы (размеры ВМ) и образы (базовые ОС). Аргументы: tenant: Название тенанта (используется значение по умолчанию, если не указано)

Параметры

  • tenantstring
list_semaphoresтолько чтениеидемпотентныйвнешний мир

Перечисляет семафоры - блокировки ресурсов, которые ограничивают параллельное выполнение заданий. Проверьте это, когда задания неожиданно ожидают. Семафор на максимальном количестве держателей означает, что задания поставлены в очередь и ожидают освобождения блокировки. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Semaphores

Перечисляет семафоры - блокировки ресурсов, которые ограничивают параллельное выполнение заданий. Проверьте это, когда задания неожиданно ожидают. Семафор на максимальном количестве держателей означает, что задания поставлены в очередь и ожидают освобождения блокировки. Аргументы: tenant: Имя тенанта (используется значение по умолчанию, если пусто)

Параметры

  • tenantstring
list_system_eventsтолько чтениеидемпотентныйвнешний мир

Перечисляет системные события: обновления конфигурации, реконфигурации, изменения конвейеров. Полезно для отладки «почему моя задача перестала выполняться?» или отслеживания развёртываний конфигурации. Показывает тип события, временную метку и описание. Args: tenant: Имя арендатора (используется значение по умолчанию, если пусто) event_type: Фильтр по типу события (опционально) limit: Максимум результатов (по умолчанию 50) skip: Смещение для пагинации

System Events

Перечисляет системные события: обновления конфигурации, реконфигурации, изменения конвейеров. Полезно для отладки «почему моя задача перестала выполняться?» или отслеживания развёртываний конфигурации. Показывает тип события, временную метку и описание. Args: tenant: Имя арендатора (используется значение по умолчанию, если пусто) event_type: Фильтр по типу события (опционально) limit: Максимум результатов (по умолчанию 50) skip: Смещение для пагинации

Параметры

  • tenantstring
  • event_typestring
  • limitinteger
  • skipinteger
list_tenantsтолько чтениеидемпотентныйвнешний мир

Перечисляет всех Zuul tenants с количеством проектов и очередей.

List Tenants

Перечисляет всех Zuul tenants с количеством проектов и очередей.

Параметры

Без параметров.

stream_build_consoleтолько чтениеидемпотентныйвнешний мир

Читает живой консольный вывод из RUNNING сборки. Подключается к endpoint WebSocket console-stream в Zuul и захватывает вывод в течение ``timeout`` секунд, возвращая последние ``lines`` строк (поведение tail). Этот инструмент только для RUNNING сборок. Для завершённых сборок используйте tail_build_log или get_build_log. Опционально — требует ``pip install mcp-zuul[console]``. Аргументы: uuid: UUID сборки (из get_change_status) tenant: Имя tenant (использует значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant) lines: Количество строк, возвращаемых с конца (по умолчанию 100, максимум 500) timeout: Секунд для буферизации перед возвратом (по умолчанию 10, максимум 30)

Stream Build Console

Читает живой консольный вывод из RUNNING сборки. Подключается к endpoint WebSocket console-stream в Zuul и захватывает вывод в течение ``timeout`` секунд, возвращая последние ``lines`` строк (поведение tail). Этот инструмент только для RUNNING сборок. Для завершённых сборок используйте tail_build_log или get_build_log. Опционально — требует ``pip install mcp-zuul[console]``. Аргументы: uuid: UUID сборки (из get_change_status) tenant: Имя tenant (использует значение по умолчанию, если пусто) url: URL сборки Zuul (альтернатива uuid + tenant) lines: Количество строк, возвращаемых с конца (по умолчанию 100, максимум 500) timeout: Секунд для буферизации перед возвратом (по умолчанию 10, максимум 30)

Параметры

  • uuidstring
  • tenantstring
  • urlstring
  • linesinteger
  • timeoutinteger
tail_build_logтолько чтениеидемпотентныйвнешний мир

Получает последние N строк лога сборки: самый быстрый способ узнать, почему сборка завершилась неудачей. Более эффективен по токенам, чем get_build_log(mode="summary"), когда вам нужен только хвост. Используйте как первый шаг при исследовании ошибок. Args: uuid: Идентификатор сборки UUID tenant: Имя тенанта (используется значение по умолчанию, если пусто) lines: Количество строк с конца (по умолчанию 50, максимум 500) log_name: Файл журнала для чтения (по умолчанию "job-output.txt") url: URL сборки Zuul (альтернатива uuid + tenant) skip_postrun: Пропускать строки сбора логов после выполнения и брать хвост с конца фазы выполнения (по умолчанию true). Применяется только к job-output.txt. Установите false для просмотра сырого хвоста.

Log Tail

Получает последние N строк лога сборки: самый быстрый способ узнать, почему сборка завершилась неудачей. Более эффективен по токенам, чем get_build_log(mode="summary"), когда вам нужен только хвост. Используйте как первый шаг при исследовании ошибок. Args: uuid: Идентификатор сборки UUID tenant: Имя тенанта (используется значение по умолчанию, если пусто) lines: Количество строк с конца (по умолчанию 50, максимум 500) log_name: Файл журнала для чтения (по умолчанию "job-output.txt") url: URL сборки Zuul (альтернатива uuid + tenant) skip_postrun: Пропускать строки сбора логов после выполнения и брать хвост с конца фазы выполнения (по умолчанию true). Применяется только к job-output.txt. Установите false для просмотра сырого хвоста.

Параметры

  • uuidstring
  • tenantstring
  • linesinteger
  • log_namestring
  • urlstring
  • skip_postrunboolean

Другие проверенные MCP-сервера

CoderGamester/mcp-unity

CoderGamester/mcp-unity

MCP сервер для Unity Editor, который через Model Context Protocol даёт AI-ассистентам (Cursor, Windsurf, Claude Code) прямой доступ к управлению сценами, GameObject, компонентами, материалами и тес...

C#1832
Bybit MCP

Bybit MCP

официальный

MCP-сервер предоставляет 206 инструментов для Bybit: рыночные данные, торговлю и WebSocket-стримы, включая управление аккаунтом. Интегрируется с Claude, Cursor, VS Code. Режим read-only без API-ключа.

TypeScript21
weaviate/mcp-server-weaviate

weaviate/mcp-server-weaviate

официальный

Встроенный MCP сервер Weaviate даёт AI-агентам гибридный поиск, управление коллекциями и объектами прямо через REST API. Полезен разработчикам, работающим с векторными базами данных.

162
eyaltoledano/claude-task-master

eyaltoledano/claude-task-master

Taskmaster — система управления задачами для AI-разработки, подключаемая через MCP к Cursor, Claude Code и другим редакторам. Разбивает PRD на задачи, отслеживает прогресс и управляет разработкой п...

JavaScript27867
GLips/Figma-Context-MCP

GLips/Figma-Context-MCP

Framelink MCP для Figma даёт AI-ассистентам вроде Cursor доступ к макетам из Figma. Сервер упрощает данные дизайна, передавая только релевантную информацию о расположении и стилях — так модель точн...

TypeScript15431
PSPDFKit/nutrient-document-engine-mcp-server

PSPDFKit/nutrient-document-engine-mcp-server

официальный

MCP-сервер для обработки документов на естественном языке. Подключает AI-агентов к извлечению текста, редактированию и рецензированию PDF, а также безопасному сокрытию конфиденциальных данных. Поле...

TypeScript61
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин