Документация · MCP
MCP-сервер vetkit
Дайте вашему ИИ-агенту аудитора кода. MCP-сервер vetkit позволяет Claude Code — и любому другому клиенту Model Context Protocol — подключать репозитории, запускать аудиты и читать находки и отчёты.
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-ключ
- Откройте Настройки → API-ключи в приложении vetkit. Управлять ключами могут только владельцы и администраторы организации.
- Назовите ключ по месту, где он будет использоваться, например «Claude Code — ноутбук».
- Выберите области доступа. Для полной функциональности MCP выберите
repos:read,repos:write,audits:read,audits:write,findings:readиreports:read. Для агента только для чтения не включайтеrepos:writeиaudits:write. - При желании задайте срок действия и лимит запросов в минуту (по умолчанию 60, максимум 600).
- Скопируйте секрет. Он выглядит как
vk_live_…и показывается один раз; vetkit хранит только его хеш.
Перевыпуск и отзыв
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:
{ "mcpServers": { "vetkit": { "command": "npx", "args": ["-y", "@vetkit/mcp"], "env": { "VETKIT_API_KEY": "vk_live_..." } } }}Cursor
Добавьте тот же блок в ~/.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
| Аргумент | Тип | Описание |
|---|---|---|
limit | number | Размер страницы, 1–100. По умолчанию 25. |
cursor | string | Значение nextCursor из предыдущей страницы. |
{ "limit": 10 }vetkit_connect_repo
записьПодключает репозиторий GitHub. Если у владельца ещё нет установки GitHub App vetkit, возвращает outcome "installation_required" и URL установки, который нужно открыть в браузере.
Области доступа: repos:write
| Аргумент | Тип | Описание |
|---|---|---|
urlобязательный | string | URL 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обязательный | string | ID репозитория, "owner/name" или URL GitHub, в том числе /tree/<branch>. |
ref | string | Ветка, тег или SHA коммита. По умолчанию — ref из URL, а если его нет — ветка по умолчанию. |
wait | boolean | Ждать финального статуса. По умолчанию true. |
timeoutSeconds | number | Максимальное время ожидания, 10–1800. По умолчанию 600. После тайм-аута аудит продолжает выполняться. |
{ "repo": "acme/payments-api", "ref": "main" }vetkit_get_audit
только чтениеВозвращает статус, оценку, балл, количество находок и прогресс каждого анализатора для одного аудита.
Области доступа: audits:read
| Аргумент | Тип | Описание |
|---|---|---|
auditIdобязательный | uuid | ID аудита, возвращённый vetkit_run_audit. |
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }vetkit_list_findings
только чтениеВозвращает находки аудита, начиная с самых критичных. Компактная таблица возвращается текстом, а полные сведения — сообщение, замаскированный фрагмент кода, рекомендации по исправлению, ссылки — структурированным контентом.
Области доступа: findings:read
| Аргумент | Тип | Описание |
|---|---|---|
auditIdобязательный | uuid | Аудит, данные которого нужно прочитать. |
severity | string[] | CRITICAL, HIGH, MEDIUM, LOW или INFO. |
category | string[] | SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE или AI_SIGNAL. |
status | string | NEW (появилась после предыдущего аудита) или EXISTING. |
limit | number | Размер страницы, 1–100. По умолчанию 25. |
cursor | string | Значение nextCursor из предыдущей страницы. |
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }vetkit_get_report
только чтениеВозвращает отчёт завершённого аудита: читаемый Markdown, JSON-сводку с баллами по категориям и сравнением с предыдущим аудитом или SARIF 2.1.0.
Области доступа: reports:read
| Аргумент | Тип | Описание |
|---|---|---|
auditIdобязательный | uuid | Аудит, данные которого нужно прочитать. |
format | string | markdown (по умолчанию), json или sarif. |
maxChars | number | Обрезать вывод, если он длиннее указанного числа символов, 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.