# mcp-zuul

Сервер помогает разбирать сбои Zuul CI, искать ошибки в логах и проверять состояние сборок. Пригодится, когда нужно выяснить, какая задача завершилась с ошибкой.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 21
- Автор: imatza-rh
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/imatza-rh/mcp-zuul
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/mcp/mcp-zuul

## Что делает

mcp-zuul подключает Zuul CI к ИИ-клиенту через MCP. Он может разобрать данные о сбое сборки, найти строки в логах по регулярному выражению и показать прогресс конвейера. Есть инструменты для поиска нестабильных заданий и просмотра зависимостей между jobs; всего перечислено 48 инструментов, 5 промптов и 3 ресурса.

Для запуска в Claude Code используется `uvx`. Адрес Zuul задаётся через `ZUUL_URL`; также доступны настройки tenant, токена авторизации, Kerberos и транспорта. Сервер поддерживает stdio, SSE и streamable HTTP. Операции, которые меняют конвейер, отключены при `ZUUL_READ_ONLY=true`; для анализа аномалий в логах нужна настройка `LOGJUICER_URL`.

Без корректного `ZUUL_URL` серверу некуда обращаться. Если включить операции записи, они смогут ставить изменения в очередь, удалять их оттуда и продвигать по конвейеру.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `ZUUL_URL`, `ZUUL_DEFAULT_TENANT`, `ZUUL_AUTH_TOKEN`, `ZUUL_USE_KERBEROS`, `MCP_TRANSPORT`, `ZUUL_ENABLED_TOOLS`, `ZUUL_DISABLED_TOOLS` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env ZUUL_URL=<ZUUL_URL> --env ZUUL_DEFAULT_TENANT=<ZUUL_DEFAULT_TENANT> --env ZUUL_AUTH_TOKEN=<ZUUL_AUTH_TOKEN> --env ZUUL_USE_KERBEROS=<ZUUL_USE_KERBEROS> --env MCP_TRANSPORT=<MCP_TRANSPORT> --transport stdio mcp-zuul -- uvx mcp-zuul
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-zuul <команда>

### Codex

**Командой платформы**
```bash
codex mcp add mcp-zuul --env ZUUL_URL=<ZUUL_URL> --env ZUUL_DEFAULT_TENANT=<ZUUL_DEFAULT_TENANT> --env ZUUL_AUTH_TOKEN=<ZUUL_AUTH_TOKEN> --env ZUUL_USE_KERBEROS=<ZUUL_USE_KERBEROS> --env MCP_TRANSPORT=<MCP_TRANSPORT> -- uvx mcp-zuul
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-zuul <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-zuul": {
            "command": "uvx",
            "args": [
                "mcp-zuul"
            ],
            "env": {
                "ZUUL_URL": "<ZUUL_URL>",
                "ZUUL_DEFAULT_TENANT": "<ZUUL_DEFAULT_TENANT>",
                "ZUUL_AUTH_TOKEN": "<ZUUL_AUTH_TOKEN>",
                "ZUUL_USE_KERBEROS": "<ZUUL_USE_KERBEROS>",
                "MCP_TRANSPORT": "<MCP_TRANSPORT>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-zuul <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-zuul": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "mcp-zuul"
            ],
            "env": {
                "ZUUL_URL": "<ZUUL_URL>",
                "ZUUL_DEFAULT_TENANT": "<ZUUL_DEFAULT_TENANT>",
                "ZUUL_AUTH_TOKEN": "<ZUUL_AUTH_TOKEN>",
                "ZUUL_USE_KERBEROS": "<ZUUL_USE_KERBEROS>",
                "MCP_TRANSPORT": "<MCP_TRANSPORT>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-zuul <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e ZUUL_URL=<ZUUL_URL> -e ZUUL_DEFAULT_TENANT=<ZUUL_DEFAULT_TENANT> -e ZUUL_AUTH_TOKEN=<ZUUL_AUTH_TOKEN> -e ZUUL_USE_KERBEROS=<ZUUL_USE_KERBEROS> -e MCP_TRANSPORT=<MCP_TRANSPORT> mcp-zuul uvx mcp-zuul
```
Вместо <…> подставьте свои значения. Ещё 2 переменные окружения — в README сервера. uvx запускает команду с именем пакета; если в README она другая — uvx --from mcp-zuul <команда>

## Когда брать
- найти задачу и хост, на которых упала сборка
- поискать ошибки в логах по регулярному выражению
- проверить прогресс задания в конвейере Zuul
- выявить нестабильные jobs по истории сборок
- посмотреть зависимости заданий для проекта и ветки

## Примеры запросов агенту
- Разбери сбой сборки Zuul и покажи задачу, хост и текст ошибки.
- Найди в логах сборки строки с ошибками и покажи контекст вокруг них.
- Проверь текущий прогресс изменений в конвейере Zuul.

## Похожие
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [Oh My Posh Validator](https://affpapa.org/nevibecode/mcp/oh-my-posh-validator.md) — MCP-сервер · ★ 23643
- [Keploy](https://affpapa.org/nevibecode/mcp/keploy.md) — MCP-сервер · ★ 18727

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
