Skip to main content
Glama

GitLab MCP Server

GitHub Release License: MIT Platform

CI Quality Gate Coverage Go Reference

Glama MCP Score

MCP Badge MCP Toplist Cursor Directory Hosted endpoint

Подключите свой ИИ-ассистент к GitLab, чтобы он мог проверять merge request'ы, разбирать пайплайны, управлять issue и составлять релизы — на обычном языке. Один статический бинарник (или контейнер) даёт более 1000 инструментов GitLab через полный REST + GraphQL API и работает с Claude, Cursor, VS Code и любым MCP-клиентом.

Вы общаетесь со своим ИИ-ассистентом, а он выполняет работу в GitLab. Не нужно запоминать ID проектов, API-эндпоинты или JSON.

"Проверь merge request !15 — безопасно ли его сливать?" · "Почему упал последний пайплайн?" · "Покажи открытые issue, назначенные на меня" · "Сформируй примечания к релизу с v1.0 по v2.0"


🤖 Пользуетесь ИИ-ассистентом? Дайте ему URL этого репозитория и попросите установить сервер для вашего клиента. Всё, что нужно модели для выполнения этого без участия человека — декларативная конфигурация для каждого клиента, однострочники claude mcp add и значения по умолчанию — есть в llms.txt (интерактивный мастер не требуется).

Установка за 60 секунд

Выберите один вариант. Каждый путь заканчивается тем, что вы вводите запрос своему ассистенту.

Установка в один клик

Каждая кнопка регистрирует сервер на базе Docker (при первом запуске образ подтягивается автоматически; вам нужен установленный Docker). Строка Claude Desktop вместо этого загружает нативное расширение для рабочего стола .mcpb (macOS universal + Windows, без Docker) — откройте его через Claude Desktop и заполните настройки. Нужен токен? Создайте Personal Access Token с областью api. Используете self-managed GitLab? Добавьте переменную окружения GITLAB_URL в MCP-конфиг вашего клиента после установки.

Claude Code (claude mcp add)

Docker (без установки — образ подтягивается при первом запуске):

claude mcp add gitlab --env GITLAB_TOKEN=glpat-xxxx --transport stdio \
  -- docker run -i --rm -e GITLAB_TOKEN ghcr.io/jmrplens/gitlab-mcp-server:latest --http=false

Или сначала установите нативный бинарник, а затем зарегистрируйте его:

# macOS/Linux (Homebrew)
brew install jmrplens/tap/gitlab-mcp-server
# Linux/macOS (script)
curl -fsSL https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.sh | sh
# Windows (winget)
winget install --id jmrplens.gitlab-mcp-server -e
# Windows (PowerShell)
irm https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.ps1 | iex

claude mcp add gitlab --env GITLAB_TOKEN=glpat-xxxx -- gitlab-mcp-server

Self-managed GitLab? Добавьте --env GITLAB_URL=https://gitlab.example.com--env GITLAB_SKIP_TLS_VERIFY=true для самоподписанных сертификатов).

Настройка с мастером (любой клиент, не нужно помнить флаги)

Бинарник поставляется с мастером настройки, который собирает ваш GitLab-токен и настраивает MCP-клиент за вас — идеально, если не хочется редактировать JSON:

gitlab-mcp-server --setup

Он автоматически определяет VS Code, Claude Desktop, Claude Code, Cursor и Windsurf и записывает нужную конфигурацию. В Windows дважды щёлкните .exe, чтобы запустить его.

Ручная настройка JSON (Claude Desktop, Cursor, VS Code, …)

Нативный бинарник (Claude Desktop mcpServers, Cursor и т. д.):

{
  "mcpServers": {
    "gitlab": {
      "command": "/path/to/gitlab-mcp-server",
      "env": { "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

VS Code (.vscode/mcp.json, обратите внимание на servers + type):

{
  "servers": {
    "gitlab": {
      "type": "stdio",
      "command": "/path/to/gitlab-mcp-server",
      "env": { "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

Вариант с Docker — замените "command"/"args" на:

"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITLAB_TOKEN", "ghcr.io/jmrplens/gitlab-mcp-server:latest", "--http=false"]

Cline (VS Code) — откройте боковую панель Cline → значок MCP servers → Edit Global MCP, или отредактируйте файл настроек напрямую:

  • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

  • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

  • Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

Cline использует структуру mcpServers, показанную выше, для нативного бинарника.

Для общего долгоживущего HTTP-развёртывания вместо пользовательского stdio см. режим HTTP-сервера.

Попробуйте без установки (публичный endpoint)

Публичный инстанс работает по адресу https://mcp.jmrp.io/gitlab — ничего устанавливать не нужно, кроме собственного токена GitLab, и никакой учётной записи. Направьте на него любой MCP-клиент, поддерживающий HTTP:

{
  "mcpServers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": { "PRIVATE-TOKEN": "glpat-xxxxxxxxxxxx" }
    }
  }
}

PRIVATE-TOKEN обязателен и передаётся с каждым запросом — на сервере он никогда не хранится. GITLAB-URL необязателен и по умолчанию равен https://gitlab.com; задайте его, чтобы обратиться к другому инстансу (он должен быть доступен из публичного интернета).

Это самый быстрый способ попробовать сервер, но правильный способ продолжать им пользоваться — по-прежнему локально (любой вариант выше) — по одной конкретной причине, а не для проформы: ваш токен и каждый запрос проходят через чужую машину. Запуск локально означает, что ваши учётные данные и трафик GitLab никогда не покидают ваш компьютер, а кроме того, делает этот вариант единственным разумным для частного self-managed инстанса.

Endpoint — это stateless streamable HTTP на поверхности dynamic, используемой по умолчанию: транспорт — POST, GET на нём намеренно отвечает 405, а https://mcp.jmrp.io/gitlab/health отвечает 200 с {"status":"ok",…}.

Самостоятельное HTTP-развёртывание также может работать с --auth-mode=oauth --gitlab-url=https://gitlab.com --public-url=https://mcp.example.com (оба параметра обязательны: для OAuth нужны фиксированный инстанс и внешне доступный origin, по которому RFC 9728 идентифицирует ресурс) — в этом случае клиенты обнаруживают GitLab как сервер авторизации через эти метаданные и авторизуются в браузере, а не копируют токены. См. настройку OAuth-приложения.

Это один из серверов, перечисленных на mcp.jmrp.io — в каталоге MCP-серверов, которые я поддерживаю; каждый доступен по своему endpoint. https://mcp.jmrp.io/servers.json — тот же список для автоматизированных клиентов.

А дальше просто спросите: откройте ИИ-клиент и попробуйте "Список моих проектов GitLab." Подробности для каждого клиента — в руководстве по началу работы, а ещё примеры запросов — по ссылке.


Related MCP server: GitLab MCP Server

Почему этот сервер

  • GitLab на простом языке. ИИ переводит запрос «безопасно ли мёржить MR !15?» в правильные API-вызовы. Вам не нужно касаться эндпоинтов, ID или JSON.

  • Вся платформа — более 1000 инструментов. Широкое покрытие GitLab REST v4 + GraphQL: проекты, ветки, теги, релизы, запросы на слияние, задачи, пайплайны, задания, группы, пользователи, вики, окружения, развёртывания, пакеты, container registry, раннеры, feature flags, переменные CI/CD, безопасность, администрирование, токены и многое другое.

  • Низкое потребление токенов по умолчанию. Стандартная динамическая поверхность даёт всего 2 инструмента (find + execute), но обеспечивает доступ ко всему каталогу — поэтому она вписывается в контекстное окно любого клиента. (Объём токенов →)

  • Проверено на реальных моделях. Автоматический оценщик прогоняет Anthropic, Google, OpenAI и Qwen на живых инстансах GitLab: совокупный успех 99.5% на тысячах операций. (Результаты →)

  • Безопасно по построению. Режим «только чтение», безопасный режим (предпросмотр каждой мутации в режиме dry-run), опции TLS для self-hosted GitLab и непрерывные проверки качества/безопасности SonarCloud.

  • Работает где угодно. Один статический бинарник или контейнер; Windows, Linux и macOS; amd64 и arm64; stdio (десктоп) и HTTP (удалённо).

  • 45 ресурсов MCP (данные только для чтения: проекты, задачи, пайплайны, MR, ветки, участники, манифест gitlab://tools, учитывающий текущую поверхность, и руководства по лучшим практикам рабочих процессов). 26 типов одиночных объектов также поддерживают подписку.

  • 37 промптов MCP (ревью кода, статус пайплайна, оценка рисков, заметки о релизе, стендап, аналитика, аудит и другое).

  • 4 мастера элиситации (интерактивное создание issue/MR/релиза/проекта).

  • 4 возможности MCP (автодополнения, прогресс, элиситация и подписки на ресурсы — живые уведомления resources/updated, поддерживаемые через polling), а также 51 иконка инструментов (50 доменных иконок плюс логотип проекта) для визуальной идентификации в MCP-клиентах.

  • Пагинация на каждой конечной точке списка с полными метаданными.

Tool surfaces

Сервер может представлять GitLab в трёх формах, управляемых через TOOL_SURFACE. Вариант по умолчанию не требует настройки.

Поверхность

Видимые инструменты

Для чего лучше всего

Dynamic (по умолчанию)

2 (gitlab_find_action, gitlab_execute_action)

Минимальная стоимость токенов; полный каталог через find/execute.

Meta-tools (meta)

32 базовых / 49 Ultimate / 50 GitLab.com Ultimate

Диспетчеры, сгруппированные по доменам, с параметром action.

Individual (individual)

~847 Free/CE · ~999 Premium · 1065–1071 Ultimate

Один MCP-инструмент на операцию GitLab; нужно большое контекстное окно.

Количество инструментов масштабируется в зависимости от редакции GitLab (GITLAB_TIER); более высокие редакции открывают больше действий. Модель ранжирования, защитные механизмы и полные каталоги см. в Dynamic Toolset и Meta-Tools Reference. Для динамических запусков, где ресурсы преобладают в контексте, установите CAPABILITY_SURFACE=minimal.

Token Footprint

Измерено с помощью go run ./cmd/audit_tokens/ -footprint на текущем каталоге. Итоги оценивают стартовый контекст, видимый MCP-клиенту: видимые схемы инструментов плюс общие ресурсы и промпты, с использованием токенизатора cl100k_base (кодировка GPT-4/GPT-3.5). Полную матрицу (поверхности meta и individual, все режимы META_PARAM_SCHEMA) см. в Token Footprint Reference.

Конфигурация по умолчанию: если TOOL_SURFACE не задан или равен TOOL_SURFACE=dynamic, CAPABILITY_SURFACE=full, META_TOOLS не задан, META_PARAM_SCHEMA=opaque, а GITLAB_TIER не задан (определяется автоматически, запасной вариант free), сервер использует динамическую поверхность find/execute. Используйте TOOL_SURFACE=meta только когда вам явно нужны доменные meta-инструменты; TOOL_SURFACE=individual — только когда ваш клиент может обработать полный каталог инструментов.

Конфигурация (TOOL_SURFACE / CAPABILITY_SURFACE)

Редакция

Видимые инструменты

Достижимые действия

META_PARAM_SCHEMA

Токены схем инструментов

Общие токены

Всего токенов

dynamic / full (по умолчанию)

Free/CE

2

851

n/a

1,499

8,720

10,219

dynamic / minimal

Free/CE

2

851

n/a

1,499

170

1,669

dynamic / full (по умолчанию)

Premium

2

1,003

n/a

1,499

8,720

10,219

dynamic / minimal

Premium

2

1,003

n/a

1,499

170

1,669

dynamic / full (по умолчанию)

Ultimate

2

1,069

n/a

1,499

8,720

10,219

dynamic / minimal

Ultimate

2

1,069

n/a

1,499

170

1,669

В строках используется базовый каталог Community Edition, если в колонке «Редакция» не указано иное. GITLAB_TIER определяет, какие действия доступны; более высокие редакции открывают больше инструментов и, следовательно, больше достижимых действий.

Compatibility

Возможность MCP

Поддержка

Инструменты

До 1071 individual / 32–50 meta

Ресурсы

45 (статические + шаблоны)

Промпты

37 шаблонов

Автодополнения

17 типов аргументов: проекты, группы, пользователи, ветки, теги, MR, задачи, пайплайны, задания, метки, вехи, SHA

Логи сервера

Структурированные (text/JSON) в stderr — не через возможность MCP logging, которая устарела (SEP-2577) и намеренно не анонсируется

Прогресс

Отчёты о ходе выполнения инструментов

Элиситация

4 интерактивных мастера создания

Подписки

resources/updated через polling, 26 видов ресурсов

Протестировано с: VS Code + GitHub Copilot, Claude Desktop, Claude Code, Cursor, Windsurf, JetBrains IDEs, Zed, Kiro, Cline. См. полную Compatibility Matrix.

AI Model Tool-Use Evaluation

Проект включает автоматический оценщик качества MCP для моделей. Он выполняет проверки только по схемам каталога инструментов либо исполняет валидированные вызовы инструментов моделей через MCP против Docker GitLab CE или лицензированных инстансов Enterprise, наполненных фикстурами. Он определяет, выбирает ли каждая модель правильное действие, отправляет ли валидные параметры, восстанавливается ли после ошибок GitLab, на которые можно среагировать, и соблюдает ли защитные ограничения для деструктивных действий — на Anthropic, Google, OpenAI и Qwen.

Текущий опубликованный результат: Docker CE dynamic 20260627-232303.

Провайдер

Модель

Совместимость

Точность инструментов

Восстановление

Статус Docker live

Anthropic

claude-haiku-4-5-20251001

OK

100.0%

100.0% (2/2)

100.0% финальных на 555 операциях

Google

gemini-flash-latest

OK

100.0%

100.0% (4/4)

100.0% финальных на 555 операциях

OpenAI

gpt-5.4-nano

Review

99.3%

84.6% (11/13)

98.0% финальных на 555 операциях

Qwen

qwen3.6-flash

OK

100.0%

100.0% (5/5)

100.0% финальных на 555 операциях

Опубликованный набор модельных оценок охватывает 596 попыток выполнения задач и 2220 ожидаемых операций MCP. В выбранных отчётах модели совершили 2265 вызовов инструментов на 2265 модельных запросов, с совокупным финальным успехом 99.5%. Детальную текущую матрицу см. в AI Model Evaluation Results.

Текущий опубликованный результат: Docker Enterprise meta 20260527.

Провайдер

Модель

Совместимость

Точность инструментов

Восстановление

Статус Docker live

Anthropic

claude-haiku-4-5-20251001

OK

100.0%

100.0% (1/1)

100.0% финальных на 84 операциях

Google

gemini-flash-latest

Review

78.2%

100.0% (7/7)

100.0% финальных на 84 операциях

OpenAI

gpt-5.4-nano

Review

100.0%

100.0% (4/4)

100.0% финальных на 84 операциях

Qwen

qwen3.6-flash

OK

100.0%

100.0% (1/1)

100.0% финальных на 84 операциях

Опубликованный набор модельных оценок охватывает 92 попытки выполнения задач и 336 ожидаемых операций MCP. В выбранных отчётах модели совершили 345 вызовов инструментов на 350 модельных запросов, с совокупным финальным успехом 100.0%. Детальную текущую матрицу см. в AI Model Evaluation Results.

Текущий опубликованный результат: Docker Enterprise dynamic 20260628-015421.

Провайдер

Модель

Совместимость

Точность инструментов

Восстановление

Статус Docker live

Anthropic

claude-haiku-4-5-20251001

OK

100.0%

100.0% (1/1)

100.0% финальных на 202 операциях

Google

gemini-flash-latest

OK

100.0%

100.0% (2/2)

100.0% финальных на 202 операциях

OpenAI

gpt-5.4-nano

OK

100.0%

Без исправлений

100.0% финальных на 202 операциях

Qwen

qwen3.6-flash

OK

100.0%

100.0% (1/1)

100.0% финальных на 202 операциях

Опубликованный набор модельных оценок охватывает 124 попытки выполнения задач и 808 ожидаемых операций MCP. В выбранных отчётах модели совершили 817 вызовов инструментов на 817 модельных запросов, с совокупным финальным успехом 100.0%. Детальную текущую матрицу см. в AI Model Evaluation Results.

Документация

Полная документация доступна по адресу jmrp.io/docs/gitlab-mcp-server. Используйте эту таблицу как основной справочник по конкретной области:

Документ

Описание

Getting Started

Загрузка, мастер настройки, конфигурация для каждого клиента

IDE Configuration

Примеры stdio, устаревшего HTTP и HTTP OAuth для каждого клиента

Configuration

Переменные окружения, режимы транспорта, TLS

Environment Variables

Исчерпывающая таблица переменных окружения со значениями по умолчанию и примерами

CLI Reference

Все флаги командной строки, коды выхода и примеры выполнения

HTTP Server Mode

Общие HTTP-развёртывания, аутентификация, изоляция пула серверов

OAuth App Setup

Приложение GitLab OAuth, области доступа, URI перенаправления и клиенты, которые могут завершить поток

CI/CD

Запуск сервера в конвейерах GitLab CI и GitHub Actions

Output Format

Контракт ответа, которому следует каждый инструмент: блоки контента, пагинация, следующие шаги

Error Handling

Классификация ошибок, извлечение сообщений GitLab и подсказки, возвращаемые инструментами

Tools Reference

Все отдельные инструменты со схемами ввода/вывода, включая Orbit, доступный только на GitLab.com

Meta-Tools

32/49/50 доменных мета-инструментов с диспетчеризацией действий

Dynamic Toolset

Режим из 2 инструментов с низким расходом токенов, канонический каталог действий, модель безопасности и примеры

Resources

Все 45 ресурсов с шаблонами URI

Prompts

Все 37 промптов с аргументами и форматом вывода

Auto-Update

Механизм самообновления, режимы и формат релизов

Testing

Модульные тесты, E2E, оценка схемной модели, оценка модели в Docker и отобранные результаты моделей

Security

Модель безопасности, области действия токенов, проверка ввода

Architecture

Системная архитектура, проектирование компонентов, потоки данных

Development Guide

Сборка, тестирование, CI/CD, вклад в проект

Troubleshooting

Частые проблемы с запуском, токенами, TLS, транспортом и обнаружением инструментов

FAQ

Да. Установите GITLAB_URL в URL вашего экземпляра. Если GITLAB_URL не указан, режим stdio использует https://gitlab.com. Самоподписанные TLS-сертификаты поддерживаются через GITLAB_SKIP_TLS_VERIFY=true.

Когда вы запускаете его самостоятельно — локально через stdio или в собственной инфраструктуре через HTTP — все API-запросы идут напрямую в ваш экземпляр GitLab. Единственный запрос, который уходит куда-либо ещё, — это проверка обновлений на GitHub Releases; она включена по умолчанию и отключается с помощью AUTO_UPDATE=false.

Исключение — размещённая конечная точка: использование https://mcp.jmrp.io/gitlab означает, что ваш токен и каждый запрос проходят через эту машину. Там ничего не хранится, но это чужой сервер, поэтому раздел о размещённом сервере рекомендует продолжать использовать его локально.

О том, что именно отправляет проверка обновлений, см. PRIVACY.md, а о модели безопасности — SECURITY.md.

Да. Установите GITLAB_READ_ONLY=true, чтобы отключить все изменяющие инструменты (create, update, delete). Доступны будут только операции чтения.

Либо установите GITLAB_SAFE_MODE=true для режима пробного запуска (dry-run): изменяющие инструменты остаются видимыми, но вместо выполнения возвращают структурированное JSON-представление. Полезно для аудита, обучения или проверки того, что сделал бы ИИ-ассистент.

Обе редакции: Community Edition (CE) и Enterprise Edition (EE). Установите GITLAB_TIER=premium или GITLAB_TIER=ultimate в режиме stdio, чтобы включить дополнительные инструменты для функций Premium/Ultimate (метрики DORA, уязвимости, соответствие требованиям и т. д.); если параметр не задан, уровень определяется по лицензии экземпляра (запасной вариант — free). В режиме HTTP уровень можно принудительно задать через --tier, иначе он определяется по лицензии для каждой записи пула «токен+URL».

Сервер включает логику повторов с отсрочкой (backoff) при ограничениях частоты запросов GitLab API. Ошибки классифицируются как временные (повторяемые) или постоянные, с практическими подсказками в сообщениях об ошибках.

Любой MCP-совместимый клиент: VS Code + GitHub Copilot, Claude Desktop, Cursor, Claude Code, Windsurf, IDE от JetBrains, Zed, Kiro и другие. Встроенный мастер настройки может автоматически настроить большинство клиентов.

Сборка из исходного кода

git clone https://github.com/jmrplens/gitlab-mcp-server.git
cd gitlab-mcp-server
make build

Опубликованный образ контейнера — ghcr.io/jmrplens/gitlab-mcp-server:latest. О кроссплатформенной компиляции, Docker Compose и правилах внесения вклада см. Development Guide.

Компонент

Технология

Язык

Go 1.27+

MCP SDK

github.com/modelcontextprotocol/go-sdk v1.7.0

Клиент GitLab

gitlab.com/gitlab-org/api/client-go/v2 v2.59.0

Транспорт

stdio (по умолчанию), HTTP (Streamable HTTP)

Политика конфиденциальности

Сервер полностью работает на вашей машине и не имеет ни собственной телеметрии, ни аналитики, ни серверной части — данные передаются только между вашим MCP-клиентом и настроенным экземпляром GitLab (плюс необязательная проверка обновлений подписанного бинарного файла на GitHub Releases). Ваш токен используется только для аутентификации запросов к GitLab и никогда не записывается в журналы. Подробнее: PRIVACY.md.

Вклад в проект и безопасность

  • Вклад в проект: см. CONTRIBUTING.md — правила разработки, именование веток, соглашения о коммитах и процесс pull request.

  • Безопасность: см. SECURITY.md — политика безопасности и порядок сообщения об уязвимостях.

  • Кодекс поведения: см. CODE_OF_CONDUCT.md (Contributor Covenant v2.1).

Зеркало репозитория: GitHub — канонический репозиторий. Для удобства обнаружения доступно зеркало только для чтения на GitLab.com; пожалуйста, отправляйте вклады на GitHub.

Количество файлов

Категория

Файлы

Строки

Исходный код (.go, без тестов)

992

202,107

Модульные тесты (_test.go)

553

314,659

Сквозные тесты

182

47,508

Всего

1,727

564,274

Функции

Категория

Количество

Функции в исходном коде

7,693

— экспортируемые (публичные)

2,675

— неэкспортируемые (приватные)

5,018

Функции модульных тестов (TestXxx)

11,985

Подтесты (t.Run(...))

2,986

Функции сквозных тестов

439

Соотношения, которые стоит отметить

Наблюдение

Значение

Строки тестов против строк исходного кода

в 1.56× больше тестов, чем кода

Средняя длина файла исходного кода

~203 строки

Средняя длина тестового файла

~569 строк

Строки комментариев в исходном коде

23,569 (~11.7% исходного кода)

Тестовые функции на одну функцию исходного кода

1.6×

Паттерны кода

Паттерн

Количество

Проверки if err != nil

6,715

Операторы defer

934

Определённые типы struct

2,743

Подавления //nolint

263

Комментарии TODO / FIXME / HACK

2

Проект

Метрика

Значение

Go-пакеты

237

Прямые зависимости (go.mod)

17

Косвенные зависимости

47

Зал славы

Рекорд

Файл

Самый длинный файл исходного кода

internal/tools/projects/projects.go — 3,846 строк

Самый длинный тестовый файл

internal/tools/projects/projects_test.go — 8,183 строки

А почему бы и нет

Факт

Значение

Исходный код при печати 55 строк на страницу

~3,674 страницы A4

Строки исходного кода, содержащие "gitlab"

12,629 (избежать невозможно)

Самое длинное имя функции в исходном коде

assertDynamicCompatibilityPolicyOwnedByActionCompat (51 символ)

Самое длинное имя тестовой функции

TestRequiredMissingAndUnknownParamNames_SchemaValidation_ReturnsSortedMissingAndUnknown (87 символов)


Поддерживается José M. Requena Plens · Страница проекта · Размещённый экземпляр: mcp.jmrp.io/gitlab

Available Tools

2 tools
gitlab_execute_actionGitLab Execute ActionA
Destructive
Inspect

Execute one GitLab catalog action by canonical ID or alias. Always pass params as an object; destructive actions require top-level confirm=true. Use find first only when action or params are unclear.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesCanonical action ID returned by gitlab_find_action, or a supported compatibility alias, such as project.list, issue.update, or issue.close.
paramsYesRequired action-specific parameters object validated by the selected action schema. Use an empty object for actions with no parameters.
confirmNoSet top-level confirm=true to explicitly approve destructive actions; do not put confirm inside params for gitlab_execute_action.

Output Schema

ParametersJSON Schema
NameRequiredDescription
next_stepsNoOptional. Suggested follow-up actions or tool calls for the LLM, contextual to the result.
paginationNoPresent on list actions. Use `has_more` and `next_page` to paginate through results.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds meaningful behavioral context beyond those hints by specifying that destructive actions require top-level confirm=true, which is essential for safe invocation of this dynamic executor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no wasted words. It front-loads the core purpose, follows with the most critical invocation constraints, and ends with a clear routing instruction for the sibling tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and the annotations cover read-only, idempotency, and destructive behavior, the description provides the remaining key context: how to invoke the action, when confirmation is required, and when to defer to gitlab_find_action. Nothing essential is missing for an agent to use this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters well. The description reinforces the top-level confirm rule and the object-shaped params requirement, but it mostly restates what the schema already provides, so the added semantic value is limited.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action: 'Execute one GitLab catalog action by canonical ID or alias.' This clearly identifies what the tool does and distinguishes it from the sibling tool gitlab_find_action, which is about discovery rather than execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage routing: 'Use find first only when action or params are unclear.' It also provides concrete invocation guidance, such as always passing params as an object and using top-level confirm=true for destructive actions, which helps the agent call it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gitlab_find_actionGitLab Find ActionA
Read-onlyIdempotent
Inspect

Search the local GitLab action catalog; read-only and no GitLab API call. Use when the action ID or params are unclear; returns schemas, hints, destructive flags, and execute examples.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of matches to return. Defaults to 20 and is capped at 50.
queryYesSearch terms combining a GitLab domain or resource with a verb, filter, or object name, such as project create, merge request approve, pipeline retry, issue delete, or ci variable.
explainNoWhen true, include deterministic scoring reasons for each returned action. Defaults to false to keep responses compact.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesNumber of returned matches.
queryYesOriginal search query.
resultsYesMatching GitLab catalog actions with schemas and execute examples.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable context beyond annotations: it searches a local catalog rather than making an external GitLab API call, and it returns schemas, hints, destructive flags, and execute examples.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences. The primary purpose and key behavioral distinction are front-loaded, followed by the intended use case and return contents. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search tool with fully documented parameters, strong annotations, and an output schema, the description covers the essential use case, behavior, and return value expectations. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description reinforces that the query is a search against the local catalog but does not need to add further parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search the local GitLab action catalog.' It is clearly distinguished from the sibling execution tool by noting it performs no GitLab API call and is read-only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use when 'the action ID or params are unclear,' giving a clear trigger condition. It does not name the sibling alternative directly, but the read-only/no-API-call contrast with gitlab_execute_action makes the intended usage evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev2.7.5
    • Changedgitlab_execute_action1 field changed
      • changedInput schema / properties / action / x-mcp-header
        Previous value: -"Mcp-Param-Action"New value: +"Action"
  2. 1 tool updatev2.6.0
    • Addedgitlab_execute_action
  3. 1 tool updatev2.5.2
    • Removedgitlab_execute_action
  4. 3 tool updatesv2.1.3
    • Addedgitlab_execute_action
    • Removedgitlab_execute_tool
    • Changedgitlab_find_action4 fields changed
      • changedOutput schema / properties / results / items / properties / example / description
        Previous value: -"Example gitlab_execute_tool call."New value: +"Example gitlab_execute_action call."
      • changedOutput schema / properties / results / items / properties / example / properties / arguments / description
        Previous value: -"Example arguments for gitlab_execute_tool."New value: +"Example arguments for gitlab_execute_action."
      • changedOutput schema / properties / results / items / properties / id / description
        Previous value: -"Canonical action ID to pass to gitlab_execute_tool."New value: +"Canonical action ID to pass to gitlab_execute_action."
      • changedOutput schema / properties / results / items / properties / required_params / description
        Previous value: -"Required parameter names captured from the input schema."New value: +"Required action-specific parameter names to place inside gitlab_execute_action params."
  5. 2 tool updatesv2.0.2
    • Changedgitlab_execute_tool3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Canonical action ID returned by gitlab_find_action, such as project.list."New value: +"Canonical action ID returned by gitlab_find_action, or a supported compatibility alias, such as project.list, issue.update, or issue.close."
      • changedInput schema / properties / confirm / description
        Previous value: -"Set true to explicitly confirm destructive actions."New value: +"Set top-level confirm=true to explicitly approve destructive actions; do not put confirm inside params for gitlab_execute_tool."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "description": "Result envelope. Top-level shape varies per action and matches the chosen action's typed output. Includes optional cross-cutting fields documented below.",
        +  "properties": {
        +    "next_steps": {
        +      "description": "Optional. Suggested follow-up actions or tool calls for the LLM, contextual to the result.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "pagination": {
        +      "additionalProperties": true,
        +      "description": "Present on list actions. Use `has_more` and `next_page` to paginate through results.",
        +      "properties": {
        +        "has_more": {
        +          "description": "True when more pages are available after the current one.",
        +          "type": "boolean"
        +        },
        +        "next_page": {
        +          "description": "Next page index when `has_more` is true.",
        +          "type": "integer"
        +        },
        +        "page": {
        +          "description": "Current 1-based page index.",
        +          "type": "integer"
        +        },
        +        "per_page": {
        +          "description": "Items per page.",
        +          "type": "integer"
        +        },
        +        "prev_page": {
        +          "description": "Previous page index when applicable.",
        +          "type": "integer"
        +        },
        +        "total": {
        +          "description": "Total item count when known (some endpoints omit it for performance).",
        +          "type": "integer"
        +        },
        +        "total_pages": {
        +          "description": "Total page count when known.",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedgitlab_find_action1 field changed
      • changedInput schema / properties / query / description
        Previous value: -"Search terms for GitLab actions, such as project create, merge request approve, pipeline retry, or ci variable."New value: +"Search terms combining a GitLab domain or resource with a verb, filter, or object name, such as project create, merge request approve, pipeline retry, issue delete, or ci variable."
  6. 30 tool updatesv2.0.1
    • Removedgitlab_access
    • Removedgitlab_admin
    • Removedgitlab_analyze
    • Removedgitlab_branch
    • Removedgitlab_ci_catalog
    • Removedgitlab_ci_variable
    • Removedgitlab_custom_emoji
    • Removedgitlab_environment
    • Addedgitlab_execute_tool
    • Removedgitlab_feature_flags
    • Addedgitlab_find_action
    • Removedgitlab_group
    • Removedgitlab_issue
    • Removedgitlab_job
    • Removedgitlab_merge_request
    • Removedgitlab_model_registry
    • Removedgitlab_mr_review
    • Removedgitlab_package
    • Removedgitlab_pipeline
    • Removedgitlab_project
    • Removedgitlab_release
    • Removedgitlab_repository
    • Removedgitlab_runner
    • Removedgitlab_search
    • Removedgitlab_server
    • Removedgitlab_snippet
    • Removedgitlab_tag
    • Removedgitlab_template
    • Removedgitlab_user
    • Removedgitlab_wiki

TDQS

A4.5/5.0
Disambiguation5/5

gitlab_execute_action and gitlab_find_action have clearly distinct responsibilities: one runs a catalog action, the other searches for catalog information. There is no functional overlap or ambiguity between them.

Naming Consistency5/5

Both tools use the same gitlab_<verb>_action pattern in snake_case. The verb-noun structure is consistent and predictable.

Tool Count4/5

Two tools is slightly below the typical 3-15 range, but the split between finding and executing actions is a reasonable minimal surface for a catalog-driven server. It feels compact rather than incomplete.

Completeness5/5

The pair forms a complete discover-and-execute workflow: find_action provides schemas and execution examples, and execute_action performs the requested catalog action. Since execution is generic, the tool surface itself has no dead ends.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A Model Context Protocol server that enables AI assistants to interact with GitLab repositories, allowing tasks like managing merge requests, searching projects, and creating comments through RESTful API integration.
    19
    2
    -
  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server for GitLab and Jira integration. This server allows AI agents like gemini-cli to interact with your GitLab and Jira instances.
    32
    18
    11
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Full-coverage GitLab MCP server with 44 tools across 18 resource types. Agent-optimized CQRS design — one tool call handles complete multi-step operations. Supports OAuth 2.1, read-only mode, stdio/SSE/StreamableHTTP transports, and GraphQL-native work items with full hierarchy (epics,issues,etc)
    1,922
    6
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmrplens/gitlab-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server