mshegolev/gitlab-ci-mcp

mshegolev/gitlab-ci-mcp

от mshegolev
MCP сервер для GitLab CI/CD. Позволяет ИИ-агентам управлять пайплайнами, джобами, расписаниями и репозиторием (ветки, теги, MR). Работает с любым GitLab (SaaS/self-hosted), для корпоративных сетей. 23 инструмента.

gitlab-ci-mcp

PyPI Python License: MIT Downloads

MCP server for GitLab CI/CD. Lets an LLM agent (Claude Code, Cursor, OpenCode, DevX Agent, etc.) work with pipelines, jobs, schedules, branches, tags, merge requests and repository files.

Python, FastMCP, stdio transport.

Works with any GitLab — SaaS gitlab.com or self-hosted / on-prem. Designed with corporate networks in mind: configurable NO_PROXY handling, optional SSL-verify toggle, per-project scoping via env vars.

Design highlights

  • Tool annotations — every tool carries readOnlyHint / destructiveHint / idempotentHint / openWorldHint so MCP clients can classify operations (e.g. ask for confirmation only on destructive ones like gitlab_merge_mr, gitlab_delete_schedule).
  • Structured output on every tool — each tool declares a TypedDict return type, so FastMCP auto-generates an outputSchema and every result carries structuredContent alongside a pre-rendered markdown text block. Clients that can render structured data use it; agents that prefer compact text get the markdown. No response_format parameter needed.
  • Structured errors — authentication, 404, 403, 429 (rate-limit), 5xx, missing-env errors are converted to actionable ToolError messages (e.g. "GitLab authentication failed… verify GITLAB_TOKEN has api scope") and surfaced as isError=True results.
  • Pydantic input validation — every argument has typed constraints (ranges, lengths, literals) auto-exposed as JSON Schema.
  • Project scoping per call — every tool accepts an optional project_path that overrides GITLAB_PROJECT_PATH for cross-project queries.
  • Pagination — list tools return a pagination block with page, total, has_more, next_page and a next-page hint in the markdown footer.
  • MCP Context integration — gitlab_pipeline_health and gitlab_get_job_log are async and emit info logs / report_progress events through the MCP Context so clients can show progress bars.
  • MCP Resources — gitlab://project/info and gitlab://project/ci-config mirror common lookups for clients that prefer the Resource model over tools.
  • Lifespan management — python-gitlab HTTP sessions are closed cleanly on server shutdown via an asynccontextmanager lifespan hook.
  • Log grep — gitlab_get_job_log accepts grep_pattern + grep_context (surrounding lines) for regex-filtering megabyte-scale CI logs without pulling the whole trace into agent context.
Инструменты были проиндексированы:
gitlab_cancel_pipelineидемпотентныйвнешний мир

Отменить выполняющийся пайплайн. Текущие задания будут прерваны. Разрушительно для текущей работы. Отмена уже завершенного пайплайна — no-op. Примеры: - "Пайплайн 123 завис, отмени его" → pipeline_id=123 - Не используй на завершенных пайплайнах: без эффекта; используй gitlab_retry_pipeline, если хочешь запустить заново.

Параметры
  • pipeline_idintegerобязательный

    Pipeline ID для отмены.

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Сравнивает две ветки, возвращает до 30 коммитов и список изменённых файлов. Используйте для вопросов вида «что в release/x.y по сравнению с master?» или для составления заметок к релизу. Примеры: - «Что нового в release/1.5 по сравнению с master?» → source='release/1.5', target='master' - Не используйте для получения полных diff'ов MR, используйте gitlab_get_merge_request_changes.

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • sourcestringобязательный

    Ветка/тег/SHA источника.

  • targetstring

    Целевая ветка (по умолчанию 'master').

gitlab_create_merge_requestвнешний мир

Создаёт merge request из source_branch в target_branch. Не идемпотентно: создаёт новый MR при каждом вызове. Сначала проверяйте существующие MR через gitlab_list_merge_requests, если хотите избежать дубликатов. Примеры: - "Открыть MR из feature/login в master" → source_branch='feature/login' - "Открыть WIP MR с меткой" → title='Draft: ...', labels=['wip'] - Не используйте для слияния уже открытого MR — используйте gitlab_merge_mr.

Параметры
  • descriptionstring | null

    Описание MR (поддерживается Markdown).

  • labelsstring[] | null

    Метки для применения

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • remove_source_branchboolean

    Удаляет исходную ветку после слияния.

  • source_branchstringобязательный

    Исходная ветка.

  • target_branchstring

    Целевая ветка (по умолчанию 'master').

  • titlestring | null

    Заголовок MR. Если не указан, генерируется автоматически.

gitlab_create_scheduleвнешний мир

Создаёт новое расписание CI/CD с заданными cron-выражением и переменными. Не идемпотентно: повторные вызовы создают дублирующиеся расписания с автоматически увеличивающимися идентификаторами. Примеры: - "Запланировать ночную сборку на master в 02:00 Europe/Berlin" → description='Nightly build', cron='0 2 * * *', ref='master', timezone='Europe/Berlin', variables={'NIGHTLY': '1'} - Не используйте для обновления существующих расписаний - используйте gitlab_update_schedule.

Параметры
  • activeboolean

    Активируйте расписание немедленно.

  • cronstringобязательный

    Cron-выражение из 5 полей (например, '0 2 * * *').

  • descriptionstringобязательный

    Человекочитаемое описание.

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring

    Ветка или тег для запуска.

  • timezonestring

    Часовой пояс IANA для cron (например, 'Europe/Berlin').

  • variablesobjectобязательный

    Переменные CI для прикрепления к расписанию (ключ -> значение).

gitlab_delete_scheduleидемпотентныйвнешний мир

Удаляет расписание по идентификатору. Нельзя отменить. Примеры: - «Удали расписание 42» → schedule_id=42 - Если вы хотите только временно приостановить его, вызовите gitlab_update_schedule с параметром active=False.

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • schedule_idintegerобязательный

    ID расписания для удаления.

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

Читает текстовый файл из репозитория, обрезанный до 500 строк. Для бинарников декодируется как UTF-8 с заменой ошибок - скорее всего получите мусор; используйте только для текстового содержимого. Примеры: - "Покажи .gitlab-ci.yml на master" → file_path='.gitlab-ci.yml' - "Прочитай src/app.py из тега release-1.2" → file_path='src/app.py', ref='release-1.2' - Не используйте для списков - используйте gitlab_list_repository_tree.

Параметры
  • file_pathstringобязательный

    Путь к файлу относительно корня репозитория (например, 'src/app.py').

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring

    Ветка, тег или SHA коммита.

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

Получает трейс/лог задания, с опциональным регулярным фильтром. Два режима: * По умолчанию: возвращает последние tail строк (эффективно по токенам, хорошо для "почему это только что упало?"). * С grep_pattern: возвращает только строки, совпадающие с паттерном, с grep_context строк контекста с каждой стороны — идеально для поиска "ERROR" / "Traceback" в мегабайтных логах CI без загрузки всего трейса в контекст. Примеры: - "Почему задание 789 упало" → по умолчанию tail=100, смотрим конец лога - "Покажи вывод первой стадии задания 789" → tail=5000 и поиск разделителя стадий - "Найди все Traceback в задании 789" → grep_pattern='Traceback', grep_context=5 - "Все строки ERROR из задания 789" → grep_pattern='ERROR|FAIL'

Параметры
  • grep_contextinteger

    Количество окружающих строк для включения вокруг каждого совпадения grep (0–20).

  • grep_patternstring | null

    Необязательное регулярное выражение — если задано, возвращает только строки, совпадающие с шаблоном (с grep_context окружающими строками), вместо хвоста. Отлично подходит для поиска ошибок в огромных логах без загрузки всего. Некорректное регулярное выражение откатывается к буквальному совпадению подстроки.

  • job_idintegerобязательный

    Числовой идентификатор задания (из gitlab_get_pipeline_jobs).

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • tailinteger

    Возвращает только последние N строк (1–5000, по умолчанию 100).

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

Получает полную информацию о merge request по внутреннему ID (iid). Включает статус, ветки, автора, ответственных, рецензентов, метки, статус конфликта, описание и временные метки. Примеры: - "Покажи мне описание и статус !42" → mr_iid=42 - Не используйте для просмотра измененных файлов - используйте gitlab_get_merge_request_changes.

Параметры
  • mr_iidintegerобязательный

    Запрос на слияние IID (локальный номер проекта, отображаемый как '!42').

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Перечисляет изменённые файлы в запросе на слияние с усечёнными дифами (2 КБ на файл). Полезен для запросов code-review ("что изменилось в !42?"). Дифы, превышающие 2 КБ, усекаются — для получения полного содержимого получите исходный файл через gitlab_get_file. Примеры: - "Что изменил MR !42" → mr_iid=42 - Если вам нужно полное содержимое изменённого файла, используйте gitlab_get_file с исходной веткой MR.

Параметры
  • mr_iidintegerобязательный

    Внутренний идентификатор merge request (IID).

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Получить один пайплайн с полной информацией о времени выполнения. Полезно сразу после gitlab_list_pipelines — списки возвращают только краткую сводку.Возвращает статус, ref, источник, длительности (в очереди / общая), а также временные метки начала и завершения. Примеры: - «Почему пайплайн 123 медленный» → проверьте поля queued_duration и duration - «Работает ли пайплайн 456 до сих пор» → посмотрите на status - Не используйте для просмотра отдельных задач — используйте gitlab_get_pipeline_jobs.

Параметры
  • pipeline_idintegerобязательный

    Числовой идентификатор пайплайна (не iid).

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Вывести задачи пайплайна с указанием стадии, статуса, длительности и веб-URL. Используйте после обнаружения неудачного пайплайна, чтобы уточнить, какая конкретно задача сломалась, и получить её лог через gitlab_get_job_log. Примеры: - "Какие задачи в пайплайне 123" → pipeline_id=123 - "Какая задача упала в пайплайне 456" → отфильтровать результат по status='failed' на стороне клиента - Не используйте для общего статуса пайплайна - для этого есть gitlab_get_pipeline.

Параметры
  • pipeline_idintegerобязательный

    Числовой идентификатор пайплайна.

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Выводит список веток проекта, опционально отфильтрованный по подстроке. Включает флаги default, protected и merged, короткий идентификатор последнего коммита, его заголовок и дату. Примеры: - «Список всех веток с 'release' в названии» → search='release' - «Следующая страница веток» → page=2 - Не используйте, когда хотите проверить существование ветки по точному имени — используйте gitlab_get_file для этой ссылки и анализируйте ошибку.

Параметры
  • pageinteger

    номер страницы с отсчётом от 1

  • per_pageinteger

    Элементов на странице

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • searchstring | null

    Совпадение по подстроке в имени ветки (без учёта регистра).

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

Получает список merge request'ов проекта, опционально отфильтрованных по состоянию. Примеры: - "Какие MR сейчас открыты" → по умолчанию (state='opened') - "Какие влиты на прошлой неделе" → state='merged', затем фильтрация по updated_at на стороне клиента - "Всё независимо от состояния" → state='all' - Не используйте, если у вас есть IID merge request'а: используйте gitlab_get_merge_request для подробностей.

Параметры
  • pageinteger

    номер страницы с отсчётом от 1

  • per_pageinteger

    Элементов на странице

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • stateenum

    Фильтрует по состоянию MR.

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

Выводит последние пайплайны проекта, от новых к старым. Используется для триажа («показать упавшие пайплайны на master»), проверки готовности к релизу или чтобы передать ID пайплайнов в последующие вызовы. Только для чтения, идемпотентен. Возвращает PipelinesListOutput: project, count, pagination и pipelines[] (каждый — PipelineSummary). Результат инструмента также содержит markdown-таблицу в текстовом содержимом. Примеры: - «Показать упавшие пайплайны на master» → status='failed', ref='master' - «Последние ночные запуски по расписанию» → source='schedule' - «Вторая страница пайплайнов» → page=2 - Не используйте, когда у вас есть конкретный ID пайплайна — вместо этого вызывайте gitlab_get_pipeline.

Параметры
  • pageinteger

    номер страницы с отсчётом от 1

  • per_pageinteger

    Элементов на странице

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring | null

    Фильтрует по имени ветки или тега (например, 'master').

  • sourceenum | null

    Фильтр по источнику запуска конвейера.

  • statusenum | null

    Фильтрует по статусу пайплайна.

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

Выводит список файлов и каталогов по указанному пути в репозитории. Примеры: - "Показать файлы верхнего уровня" → вызов по умолчанию - "Все файлы .py рекурсивно" → recursive=True, затем фильтр по .py в пути - Не используйте для полнотекстового содержимого - используйте для этого gitlab_get_file.

Параметры
  • pageinteger

    номер страницы с отсчётом от 1

  • pathstring

    Путь к каталогу (оставьте пустым для корня).

  • per_pageinteger

    Элементов на странице

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • recursiveboolean

    Рекурсивно обходит подкаталоги.

  • refstring

    Ветка, тег или SHA.

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

Перечисляет все CI/CD-расписания проекта. Ключи переменных, название которых намекает на секрет (TOKEN, PASSWORD, SECRET, CREDENTIAL, PRIVATE_KEY, API_KEY), сохраняют ключ, но значение заменяется на ***, чтобы агент всё ещё видел, какие переменные существуют. Примеры: - «Какие у нас есть расписания и все ли они активны» → стандартный вызов - Не используйте для запуска расписания прямо сейчас — используйте gitlab_trigger_pipeline с переменными расписания.

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Выводит теги проекта, от новых к старым. Полезно для генерации заметок о релизе или проверки последней выпущенной версии. Примеры: - "What was the last release tag" → обычный вызов, берётся первый элемент - "All v2.x releases" → search='v2.'

Параметры
  • pageinteger

    номер страницы с отсчётом от 1

  • per_pageinteger

    Элементов на странице

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • searchstring | null

    Ищет подстроку в имени тега.

gitlab_merge_mrидемпотентныйвнешний мир

Выполняет фактическое слияние, если GitLab сообщает, что MR можно смержить. Destructive: записывает в целевую ветку. Сначала проверяет merge_status и возвращает status='cannot_merge', если есть конфликты или требуются пайплайны. Примеры: - "Merge !42" → mr_iid=42 - Не вызывать без предварительной проверки gitlab_get_merge_request, если подозреваете конфликты.

Параметры
  • mr_iidintegerобязательный

    IID запроса на слияние, который нужно объединить.

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

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

Собирает показатель успешности за 7 и 30 дней с индикатором тренда. Отлично подходит для стендапов и передачи дежурств. Возвращает процент успешности, итоги, последние 10 статусов и тренд (up/down/flat). Отправляет прогресс через MCP Context (info log + report_progress). Полезно в IDE с индикаторами прогресса для каждого инструмента. Примеры: - "Насколько стабилен master" → default (ref='master', source='schedule') - "Здоровье пайплайна после пуша" → source='push' - Не используйте для одного пайплайна. Используйте gitlab_get_pipeline.

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring

    Ветка для анализа.

  • sourceenum

    Pipeline source, который нужно включить (обычно 'schedule' или 'push').

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

Возвращает базовые метаданные о проекте: ID, ветку по умолчанию, видимость, счётчики. Примеры: - "What's the project ID and default branch" → стандартный вызов - "Is this repo public or private" → смотреть в visibility

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

gitlab_retry_pipelineвнешний мир

Повторно запустить все упавшие задания существующего пайплайна. Создает новые запуски заданий (новые записи в истории). Безопасно вызывать, когда в пайплайне есть хотя бы одно упавшее/отмененное задание; не имеет эффекта, если всё уже прошло успешно. Примеры: - "Повторить упавшие задания в пайплайне 123" → pipeline_id=123 - Не используйте для повторного запуска успешного пайплайна. Вместо этого используйте gitlab_trigger_pipeline.

Параметры
  • pipeline_idintegerобязательный

    Pipeline ID для повторного запуска упавших заданий.

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

gitlab_trigger_pipelineвнешний мир

Создаёт новый пайплайн на указанном ref, опционально с CI-переменными. Не идемпотентно: каждый вызов создаёт новый пайплайн. Тратит минуты на ваших раннерах — не вызывайте в циклах. Примеры: - «Запустить пайплайн на master» → по умолчанию (ref='master') - «Запустить пайплайн на feature/x с DEBUG=1» → ref='feature/x', variables={'DEBUG': '1'} - Не вызывайте для повторного запуска — используйте gitlab_retry_pipeline, он сохраняет тот же ID пайплайна.

Параметры
  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring

    Ветка или тег, на котором запускается конвейер.

  • variablesobject | null

    Необязательные переменные CI для передачи в пайплайн ({key: value}).

gitlab_update_scheduleидемпотентныйвнешний мир

Обновляет существующее расписание. Изменяются только переданные поля. Деструктивно, когда задан variables: заменяется весь набор переменных, поэтому вызывающая сторона должна отправлять полный список. Примеры: - "Деактивировать расписание 42" → schedule_id=42, active=False - "Изменить cron расписания 42 на почасовой" → schedule_id=42, cron='0 * * * *' - Не передавайте variables, если не хотите заменить их полностью.

Параметры
  • activeboolean | null

    Новое активное состояние.

  • cronstring | null

    Новое cron-выражение.

  • descriptionstring | null

    Новое описание

  • project_pathstring | null

    Путь проекта GitLab (например, 'my-org/my-repo'). Если не указан, используется значение по умолчанию из переменной окружения GITLAB_PROJECT_PATH.

  • refstring | null

    Новая ссылка (ветка/тег).

  • schedule_idintegerобязательный

    ID расписания для обновления.

  • variablesobject | null

    Новый набор переменных. Если задан, заменяет все существующие переменные - сначала удаляются старые. Если опущен, переменные остаются без изменений.

0.5.2основная
0.5.1
0.5.0

Выберите клиент, чтобы установить mshegolev/gitlab-ci-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"mshegolev-gitlab-ci-mcp-fegy8lr12y\",\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"--from\",\"gitlab-ci-mcp\",\"gitlab-ci-mcp\"],\"env\":{\"GITLAB_URL\":\"https://gitlab.example.com\",\"GITLAB_TOKEN\":\"${GITLAB_TOKEN}\",\"GITLAB_PROJECT_PATH\":\"my-org/my-repo\",\"GITLAB_SSL_VERIFY\":\"true\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add mshegolev-gitlab-ci-mcp-fegy8lr12y --env GITLAB_URL=https://gitlab.example.com --env GITLAB_TOKEN=${GITLAB_TOKEN} --env GITLAB_PROJECT_PATH=my-org/my-repo --env GITLAB_SSL_VERIFY=true -- uvx --from gitlab-ci-mcp gitlab-ci-mcp

Либо через JSON-конфиг:

claude mcp add-json mshegolev-gitlab-ci-mcp-fegy8lr12y "{\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"--from\",\"gitlab-ci-mcp\",\"gitlab-ci-mcp\"],\"env\":{\"GITLAB_URL\":\"https://gitlab.example.com\",\"GITLAB_TOKEN\":\"${GITLAB_TOKEN}\",\"GITLAB_PROJECT_PATH\":\"my-org/my-repo\",\"GITLAB_SSL_VERIFY\":\"true\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add mshegolev-gitlab-ci-mcp-fegy8lr12y --env GITLAB_URL=https://gitlab.example.com --env GITLAB_TOKEN=${GITLAB_TOKEN} --env GITLAB_PROJECT_PATH=my-org/my-repo --env GITLAB_SSL_VERIFY=true -- uvx --from gitlab-ci-mcp gitlab-ci-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.mshegolev-gitlab-ci-mcp-fegy8lr12y]
command = "uvx"
args = ["--from", "gitlab-ci-mcp", "gitlab-ci-mcp"]

[mcp_servers.mshegolev-gitlab-ci-mcp-fegy8lr12y.env]
GITLAB_URL = "https://gitlab.example.com"
GITLAB_TOKEN = "${GITLAB_TOKEN}"
GITLAB_PROJECT_PATH = "my-org/my-repo"
GITLAB_SSL_VERIFY = "true"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите mshegolev/gitlab-ci-mcp, а в поле команды запуска — строку ниже:
uvx --from gitlab-ci-mcp gitlab-ci-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например mshegolev-gitlab-ci-mcp-fegy8lr12y.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: mshegolev-gitlab-ci-mcp-fegy8lr12y
    command: uvx
    args:
      - "--from"
      - "gitlab-ci-mcp"
      - "gitlab-ci-mcp"
    env:
      GITLAB_URL: https://gitlab.example.com
      GITLAB_TOKEN: ${GITLAB_TOKEN}
      GITLAB_PROJECT_PATH: my-org/my-repo
      GITLAB_SSL_VERIFY: true
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "mshegolev-gitlab-ci-mcp-fegy8lr12y": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "gitlab-ci-mcp",
        "gitlab-ci-mcp"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.example.com",
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_PROJECT_PATH": "my-org/my-repo",
        "GITLAB_SSL_VERIFY": "true"
      }
    }
  }
}

Похожие MCP-сервера

JaviMaligno/mcp-server-bitbucket

JaviMaligno/mcp-server-bitbucket

от javimaligno

MCP сервер для интеграции с Bitbucket: управление репозиториями, пулл-реквестами и пайплайнами. Работает с Claude Code, Cursor и любыми MCP-клиентами. Также доступны CI/CD, вебхуки и управление ветками.

Python⭐ 2
ddukbg/github-enterprise-mcp

ddukbg/github-enterprise-mcp

от ddukbg

Управляет репозиториями, issues и PR в GitHub Enterprise: создаёт, обновляет, удаляет, запускает Actions, управляет ветками и пользователями.

TypeScript⭐ 29
HainanZhao/mcp-gitlab-jira

HainanZhao/mcp-gitlab-jira

от hainanzhao

MCP сервер для интеграции GitLab и Jira: управляйте проектами, merge requests, CI/CD, задачами GitLab и тикетами Jira, добавляйте комментарии, ищите по JQL. Полезен AI-агентам для автоматизации раз...

TypeScript⭐ 11
Gitlab MCP

Gitlab MCP

от zereight

Управляет проектами GitLab: создаёт merge request'ы, отслеживает issues, следит за пайплайнами. Работает с self-hosted инстансами.

TypeScript⭐ 2053
Github MCP

Github MCP

официальный

от github

MCP-сервер для подключения AI-агентов к GitHub: читает код и репозитории, управляет issues и PR, анализирует коммиты и CI/CD. Cервер автоматизирует workflow через естественный язык. Полезен разрабо...

Go⭐ 33807
circleci-public/mcp-server-circleci

circleci-public/mcp-server-circleci

от circleci-public

MCP сервер для интеграции CircleCI с ИИ-ассистентами: запускайте пайплайны, анализируйте тесты и конфигурации прямо из IDE. Ускоряет CI/CD и разработку для команд, работающих в Cursor, Claude и других MCP-клиентах.

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

Лука Никитин