Перейти к содержимому
vetkit

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

MCP-сервер vetkit

Дайте вашему ИИ-агенту аудитора кода. MCP-сервер vetkit позволяет Claude Code — и любому другому клиенту Model Context Protocol — подключать репозитории, запускать аудиты и читать находки и отчёты.

Установка в Claude Code
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcp

Затем попросите агента, например: «Проведи аудит acme/payments-api и скажи, что исправить в первую очередь». Выполните /mcp в Claude Code, чтобы убедиться, что vetkit подключён.

Требования

  • Node.js 20.3 или новее, npx должен быть в PATH.
  • Аккаунт vetkit с GitHub App, установленным для репозиториев, которые вы хотите проверять.
  • API-ключ vetkit (следующий шаг).

Создайте API-ключ

  1. Откройте Настройки → API-ключи в приложении vetkit. Управлять ключами могут только владельцы и администраторы организации.
  2. Назовите ключ по месту, где он будет использоваться, например «Claude Code — ноутбук».
  3. Выберите области доступа. Для полной функциональности MCP выберите repos:read, repos:write, audits:read, audits:write, findings:read и reports:read. Для агента только для чтения не включайте repos:write и audits:write.
  4. При желании задайте срок действия и лимит запросов в минуту (по умолчанию 60, максимум 600).
  5. Скопируйте секрет. Он выглядит как vk_live_… и показывается один раз; vetkit хранит только его хеш.

Перевыпуск и отзыв

При перевыпуске ключа создаётся новый секрет, а старый остаётся действительным 24 часа, чтобы вы успели его заменить. Отзыв действует мгновенно — следующий запрос вернёт 401 API_KEY_REVOKED.

Установка

Claude Code

Терминал
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcp

Добавьте --scope user, чтобы vetkit был доступен во всех проектах, а не только в текущем.

Claude Desktop

Откройте Settings → Developer → Edit Config, добавьте vetkit в claude_desktop_config.json и перезапустите Claude Desktop:

claude_desktop_config.json
{  "mcpServers": {    "vetkit": {      "command": "npx",      "args": ["-y", "@vetkit/mcp"],      "env": { "VETKIT_API_KEY": "vk_live_..." }    }  }}

Cursor

Добавьте тот же блок в ~/.cursor/mcp.json (глобально) или в .cursor/mcp.json в проекте. Не коммитьте конфигурацию проекта, если в ней есть ваш ключ.

~/.cursor/mcp.json
{  "mcpServers": {    "vetkit": {      "command": "npx",      "args": ["-y", "@vetkit/mcp"],      "env": { "VETKIT_API_KEY": "vk_live_..." }    }  }}

Другие MCP-клиенты

Подойдёт любой клиент, который умеет запускать stdio-сервер: выполните npx -y @vetkit/mcp с переменной VETKIT_API_KEY в окружении. Также можно установить пакет глобально и запускать исполняемый файл vetkit-mcp напрямую.

Глобальная установка
npm install -g @vetkit/mcpVETKIT_API_KEY=vk_live_... vetkit-mcp

Конфигурация

Сервер полностью настраивается через переменные окружения.

ПеременнаяОбязательнаОписание
VETKIT_API_KEYДаВаш API-ключ: vk_live_… или vk_test_….
VETKIT_API_URLНетБазовый URL API. По умолчанию https://api.vetkit.dev. Должен использовать HTTPS; обычный HTTP допускается только для localhost.
VETKIT_ORG_IDНетID организации. Каждый API-ключ принадлежит ровно одной организации, которая и используется по умолчанию, поэтому эта переменная нужна редко.
VETKIT_APP_URLНетURL веб-приложения для ссылок на аудиты. По умолчанию https://app.vetkit.dev.

Инструменты

Каждый инструмент возвращает читаемый текст, а все инструменты, кроме vetkit_get_report, также возвращают типизированный структурированный контент. У инструментов есть аннотации MCP, поэтому клиенты могут автоматически одобрять инструменты только для чтения. Ни один инструмент ничего не удаляет.

vetkit_list_repos

только чтение

Возвращает список репозиториев, подключённых к вашей организации, с оценкой и баллом последнего аудита.

Области доступа: repos:read

АргументТипОписание
limitnumberРазмер страницы, 1–100. По умолчанию 25.
cursorstringЗначение nextCursor из предыдущей страницы.
Пример аргументов
{ "limit": 10 }

vetkit_connect_repo

запись

Подключает репозиторий GitHub. Если у владельца ещё нет установки GitHub App vetkit, возвращает outcome "installation_required" и URL установки, который нужно открыть в браузере.

Области доступа: repos:write

АргументТипОписание
urlобязательныйstringURL GitHub (https://github.com/owner/name) или "owner/name".
Пример аргументов
{ "url": "https://github.com/acme/payments-api" }

vetkit_run_audit

запись

Запускает аудит и по умолчанию ждёт его завершения, отправляя уведомления о ходе выполнения. При необходимости сначала подключает репозиторий. Возвращает оценку, балл и количество находок.

Области доступа: repos:read, audits:write, audits:read (+ repos:write для автоподключения)

АргументТипОписание
repoобязательныйstringID репозитория, "owner/name" или URL GitHub, в том числе /tree/<branch>.
refstringВетка, тег или SHA коммита. По умолчанию — ref из URL, а если его нет — ветка по умолчанию.
waitbooleanЖдать финального статуса. По умолчанию true.
timeoutSecondsnumberМаксимальное время ожидания, 10–1800. По умолчанию 600. После тайм-аута аудит продолжает выполняться.
Пример аргументов
{ "repo": "acme/payments-api", "ref": "main" }

vetkit_get_audit

только чтение

Возвращает статус, оценку, балл, количество находок и прогресс каждого анализатора для одного аудита.

Области доступа: audits:read

АргументТипОписание
auditIdобязательныйuuidID аудита, возвращённый vetkit_run_audit.
Пример аргументов
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }

vetkit_list_findings

только чтение

Возвращает находки аудита, начиная с самых критичных. Компактная таблица возвращается текстом, а полные сведения — сообщение, замаскированный фрагмент кода, рекомендации по исправлению, ссылки — структурированным контентом.

Области доступа: findings:read

АргументТипОписание
auditIdобязательныйuuidАудит, данные которого нужно прочитать.
severitystring[]CRITICAL, HIGH, MEDIUM, LOW или INFO.
categorystring[]SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE или AI_SIGNAL.
statusstringNEW (появилась после предыдущего аудита) или EXISTING.
limitnumberРазмер страницы, 1–100. По умолчанию 25.
cursorstringЗначение nextCursor из предыдущей страницы.
Пример аргументов
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }

vetkit_get_report

только чтение

Возвращает отчёт завершённого аудита: читаемый Markdown, JSON-сводку с баллами по категориям и сравнением с предыдущим аудитом или SARIF 2.1.0.

Области доступа: reports:read

АргументТипОписание
auditIdобязательныйuuidАудит, данные которого нужно прочитать.
formatstringmarkdown (по умолчанию), json или sarif.
maxCharsnumberОбрезать вывод, если он длиннее указанного числа символов, 2 000–500 000. По умолчанию 40 000.
Пример аргументов
{ "auditId": "0192f3a4-…", "format": "markdown" }

Долгие аудиты

Большинство аудитов завершается за несколько минут. Пока vetkit_run_audit ждёт, он опрашивает статус каждые несколько секунд и отправляет уведомления о ходе выполнения. Некоторые клиенты отменяют вызовы инструментов через фиксированное время — например, Claude Code учитывает MCP_TOOL_TIMEOUT. Если ваш клиент так делает, передайте "wait": false и опрашивайте статус через vetkit_get_audit. Когда истекает timeoutSeconds, аудит продолжает выполняться, а инструмент возвращает "outcome": "still_running".

Ошибки

Ошибки API возвращаются как результаты инструментов с isError: true и содержат HTTP-статус, код ошибки vetkit, сообщение, ID запроса и подсказку.

  • 401 API_KEY_INVALID, API_KEY_REVOKED, API_KEY_EXPIRED — создайте или перевыпустите ключ, обновите VETKIT_API_KEY и перезапустите сервер.
  • 403 INSUFFICIENT_SCOPE — у ключа нет области доступа, нужной инструменту.
  • 409 AUDIT_CONCURRENCY_LIMIT и 429 RATE_LIMITED — подождите и повторите попытку; если API отправляет Retry-After, подсказка содержит время ожидания.
  • INSTALLATION_REQUIRED возвращается как обычный результат с URL установки GitHub App, а не как ошибка.

Замечания по безопасности

  • Обращайтесь с API-ключом как с паролем. Он даёт доступ к аудитам и находкам вашей организации, включая приватные репозитории. Храните его в конфигурации env вашего MCP-клиента и никогда — в файлах, которые вы коммитите. Выдавайте только нужные области доступа, задайте срок действия и отзовите ключ в приложении, если произошла утечка.
  • Ключ отправляется только на VETKIT_API_URL в заголовке Authorization: Bearer по HTTPS. Сервер никогда не записывает его в логи и не включает в сообщения об ошибках.
  • Сервер работает по MCP только через stdio. Он не открывает сетевых портов и пишет логи только в stderr.
  • Фрагменты кода в находках маскируются до того, как vetkit их сохранит; значения секретов никогда не возвращаются.
  • Текст отчётов и находок берётся из проверяемого репозитория (пути к файлам, сообщения). Считайте его недоверенными входными данными, как и любой другой вывод инструментов: вредоносный репозиторий может попытаться встроить инструкции, адресованные вашему агенту.

Предпочитаете чистый HTTP? Всё, что делает MCP-сервер, доступно через REST API.