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 integrationgitlab_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 Resourcesgitlab://project/info and gitlab://project/ci-config mirror common lookups for clients that prefer the Resource model over tools.
  • Lifespan managementpython-gitlab HTTP sessions are closed cleanly on server shutdown via an asynccontextmanager lifespan hook.
  • Log grepgitlab_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``, если хочешь запустить заново.

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

Параметры

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

    Pipeline ID to cancel.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

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

Параметры

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

    Source branch/tag/SHA.

  • targetstring

    Target branch (default 'master').

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

Создаёт 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``.

Параметры

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

    Source branch.

  • target_branchstring

    Target branch (default 'master').

  • titleany

    MR title. Auto-generated if omitted.

  • descriptionany

    MR description (markdown supported).

  • labelsany

    Labels to apply.

  • remove_source_branchboolean

    Delete source branch after merge.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

Создаёт новое расписание 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``.

Параметры

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

    Human-readable description.

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

    Cron expression in 5 fields (e.g. '0 2 * * *').

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

    CI variables to attach to the schedule (key -> value).

  • refstring

    Branch or tag to run.

  • timezonestring

    IANA timezone for the cron (e.g. 'Europe/Berlin').

  • activeboolean

    Activate the schedule immediately.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Schedule ID to delete.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

Читает текстовый файл из репозитория, обрезанный до 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обязательный

    Path to the file from the repo root (e.g. 'src/app.py').

  • refstring

    Branch, tag or commit SHA.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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'``

Получает трейс/лог задания, с опциональным регулярным фильтром. Два режима: * По умолчанию: возвращает последние ``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'``

Параметры

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

    Numeric job ID (from ``gitlab_get_pipeline_jobs``).

  • tailinteger

    Return only the last N lines (1–5000, default 100).

  • grep_patternany

    Optional regex — when set, returns only lines matching the pattern (with ``grep_context`` surrounding lines) instead of the tail. Great for finding errors in huge logs without downloading everything. Invalid regex falls back to literal substring match.

  • grep_contextinteger

    Surrounding lines to include around each grep match (0–20).

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Merge request IID (project-local number shown as '!42').

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Merge request IID.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Numeric pipeline ID (not ``iid``).

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Numeric pipeline ID.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • searchany

    Substring match on branch name (case-insensitive).

  • per_pageinteger

    Items per page (1–100).

  • pageinteger

    1-based page number.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • stateenum

    Filter by MR state.

    openedclosedmergedlockedall
  • per_pageinteger

    Items per page (1–100).

  • pageinteger

    1-based page number.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

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

Параметры

  • refany

    Filter by branch or tag name (e.g. 'master').

  • statusany

    Filter by pipeline status.

  • sourceany

    Filter by pipeline trigger source.

  • per_pageinteger

    Items per page (1–100).

  • pageinteger

    1-based page number.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • pathstring

    Directory path (empty for root).

  • refstring

    Branch, tag or SHA.

  • recursiveboolean

    Recurse into subdirectories.

  • per_pageinteger

    Items per page (1–100).

  • pageinteger

    1-based page number.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • searchany

    Substring match on tag name.

  • per_pageinteger

    Items per page (1–100).

  • pageinteger

    1-based page number.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Merge request IID to merge.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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``.

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

Параметры

  • refstring

    Branch to analyse.

  • sourceenum

    Pipeline source to include (typically 'schedule' or 'push').

    pushwebtriggerscheduleapiexternalpipelinechatwebidemerge_request_eventexternal_pull_request_eventparent_pipelineondemand_dast_scanondemand_dast_validation
  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

gitlab_retry_pipelineвнешний мир

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

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

Параметры

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

    Pipeline ID to retry failed jobs for.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

gitlab_trigger_pipelineвнешний мир

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

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

Параметры

  • refstring

    Branch or tag to run the pipeline on.

  • variablesany

    Optional CI variables to pass to the pipeline (``{key: value}``).

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

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

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

Параметры

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

    Schedule ID to update.

  • descriptionany

    New description.

  • cronany

    New cron expression.

  • refany

    New ref (branch/tag).

  • activeany

    New active state.

  • variablesany

    New variable set. If provided, **replaces all existing variables** — pre-existing ones are deleted first. Omit to leave variables untouched.

  • project_pathany

    GitLab project path (e.g. 'my-org/my-repo'). When omitted, the default from GITLAB_PROJECT_PATH env var is used.

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

pipeboard-co/meta-ads-mcp

pipeboard-co/meta-ads-mcp

Meta Ads MCP позволяет AI-ассистентам управлять рекламными кампаниями на Facebook и Instagram: запускать кампании, загружать креативы, менять бюджеты и анализировать эффективность через обычный диа...

Python1087
isaacphi/mcp-language-server

isaacphi/mcp-language-server

MCP-сервер, запускающий языковой сервер (LSP) для LLM. Дает ИИ доступ к семантике кода: определения, ссылки, переименование, диагностика. Поддерживает Go, Rust, Python, TypeScript, C/C++. Упрощает ...

Go1570
shashankss1205/codegraphcontext

shashankss1205/codegraphcontext

CodeGraphContext — MCP-сервер для построения графа кода из репозитория. Он даёт AI-ассистентам и разработчикам искать зависимости, цепочки вызовов и мёртвый код через естественные запросы или CLI. ...

Python3957
scrapeless-ai/scrapeless-mcp-server

scrapeless-ai/scrapeless-mcp-server

официальный

Scrapeless MCP Server подключает LLM и AI-агентов к вебу: поиск Google, тренды, браузерная автоматизация, скрапинг (HTML, Markdown, скриншоты). Применяется для AI-ассистентов, копилотов и веб-агентов.

TypeScript166
haris-musa/excel-mcp-server

haris-musa/excel-mcp-server

MCP-сервер для работы с Excel-файлами без установленного офиса. Создавайте, читайте и редактируйте книги, листы, формулы, диаграммы и сводные таблицы через AI-агента. Подходит для автоматизации раб...

Python4041
chroma-core/chroma-mcp

chroma-core/chroma-mcp

официальный

MCP-сервер для интеграции Chroma (open-source базы эмбеддингов) с LLM. Позволяет создавать коллекции, добавлять документы и выполнять семантический поиск с фильтрацией. Подходит разработчикам, стро...

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

Лука Никитин