Saltar al contenido
vetkit

Documentación · MCP

Servidor MCP de vetkit

Dale a tu agente de programación un auditor de código. El servidor MCP de vetkit permite que Claude Code —y cualquier otro cliente de Model Context Protocol— conecte repositorios, ejecute auditorías y lea hallazgos e informes.

Instalar en Claude Code
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcp

Después, pídele a tu agente algo como “Audita acme/payments-api y dime qué debo corregir primero”. Ejecuta /mcp dentro de Claude Code para confirmar que vetkit está conectado.

Requisitos

  • Node.js 20.3 o posterior, con npx en tu PATH.
  • Una cuenta de vetkit con la GitHub App instalada en los repositorios que quieras auditar.
  • Una clave de API de vetkit (siguiente paso).

Crea una clave de API

  1. Abre Configuración → Claves de API en la app de vetkit. Solo los propietarios y administradores de la organización pueden gestionar claves.
  2. Ponle a la clave un nombre que indique dónde se va a usar, por ejemplo “Claude Code — portátil”.
  3. Elige los ámbitos. Para disponer de todas las funciones de MCP, elige repos:read, repos:write, audits:read, audits:write, findings:read y reports:read. Para un agente de solo lectura, omite repos:write y audits:write.
  4. Opcionalmente, define una fecha de expiración y un límite de solicitudes por minuto (60 de forma predeterminada, hasta 600).
  5. Copia el secreto. Tiene el formato vk_live_… y se muestra una sola vez; vetkit solo almacena un hash.

Rotación y revocación

Al rotar una clave se emite un secreto nuevo y el anterior sigue siendo válido durante 24 horas para que puedas desplegar el nuevo. La revocación tiene efecto inmediato: la siguiente solicitud devuelve 401 API_KEY_REVOKED.

Instalación

Claude Code

Terminal
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcp

Añade --scope user para que vetkit esté disponible en todos tus proyectos y no solo en el actual.

Claude Desktop

Abre Settings → Developer → Edit Config, añade vetkit a claude_desktop_config.json y reinicia Claude Desktop:

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

Cursor

Añade el mismo bloque a ~/.cursor/mcp.json (global) o a .cursor/mcp.json en un proyecto. No hagas commit de una configuración de proyecto que contenga tu clave.

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

Otros clientes MCP

Funciona con cualquier cliente que pueda lanzar un servidor stdio: ejecuta npx -y @vetkit/mcp con VETKIT_API_KEY en su entorno. También puedes instalar el paquete de forma global y ejecutar directamente el binario vetkit-mcp.

Instalación global
npm install -g @vetkit/mcpVETKIT_API_KEY=vk_live_... vetkit-mcp

Configuración

El servidor se configura por completo mediante variables de entorno.

VariableObligatoriaDescripción
VETKIT_API_KEYSíTu clave de API, vk_live_… o vk_test_….
VETKIT_API_URLNoURL base de la API. Valor predeterminado: https://api.vetkit.dev. Debe usar HTTPS; HTTP sin cifrar solo se acepta para localhost.
VETKIT_ORG_IDNoId de la organización. Cada clave de API pertenece exactamente a una organización, que se usa de forma predeterminada, así que rara vez lo necesitarás.
VETKIT_APP_URLNoURL de la app web que se usa en los enlaces a auditorías. Valor predeterminado: https://app.vetkit.dev.

Herramientas

Todas las herramientas devuelven texto legible y todas, salvo vetkit_get_report, devuelven además contenido estructurado tipado. Las herramientas incluyen anotaciones MCP, por lo que los clientes pueden aprobar automáticamente las de solo lectura. Ninguna herramienta elimina nada.

vetkit_list_repos

solo lectura

Lista los repositorios conectados a tu organización, con la calificación y la puntuación de la última auditoría.

Ámbitos: repos:read

ArgumentoTipoDescripción
limitnumberTamaño de página, 1–100. Valor predeterminado: 25.
cursorstringEl valor de nextCursor de la página anterior.
Argumentos de ejemplo
{ "limit": 10 }

vetkit_connect_repo

escritura

Conecta un repositorio de GitHub. Si la GitHub App de vetkit aún no está instalada para el propietario, devuelve el resultado "installation_required" con una URL de instalación que debes abrir en el navegador.

Ámbitos: repos:write

ArgumentoTipoDescripción
urlobligatoriostringURL de GitHub (https://github.com/owner/name) o "owner/name".
Argumentos de ejemplo
{ "url": "https://github.com/acme/payments-api" }

vetkit_run_audit

escritura

Inicia una auditoría y, de forma predeterminada, espera a que termine mientras envía notificaciones de progreso. Si es necesario, conecta antes el repositorio. Devuelve la calificación, la puntuación y el número de hallazgos.

Ámbitos: repos:read, audits:write, audits:read (+ repos:write para conectar automáticamente)

ArgumentoTipoDescripción
repoobligatoriostringId del repositorio, "owner/name" o una URL de GitHub, incluidas las que contienen /tree/<branch>.
refstringRama, etiqueta o SHA de commit. De forma predeterminada, la ref de la URL y, si no hay ninguna, la rama predeterminada.
waitbooleanEsperar a un estado final. Valor predeterminado: true.
timeoutSecondsnumberTiempo máximo de espera, 10–1800. Valor predeterminado: 600. La auditoría sigue en curso aunque se agote el tiempo.
Argumentos de ejemplo
{ "repo": "acme/payments-api", "ref": "main" }

vetkit_get_audit

solo lectura

Devuelve el estado, la calificación, la puntuación, el número de hallazgos y el progreso por analizador de una auditoría.

Ámbitos: audits:read

ArgumentoTipoDescripción
auditIdobligatoriouuidEl id de auditoría que devuelve vetkit_run_audit.
Argumentos de ejemplo
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }

vetkit_list_findings

solo lectura

Lista los hallazgos de una auditoría, de mayor a menor severidad. Devuelve una tabla compacta como texto y los detalles completos —mensaje, fragmento enmascarado, corrección, referencias— como contenido estructurado.

Ámbitos: findings:read

ArgumentoTipoDescripción
auditIdobligatoriouuidLa auditoría que se va a leer.
severitystring[]CRITICAL, HIGH, MEDIUM, LOW o INFO.
categorystring[]SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE o AI_SIGNAL.
statusstringNEW (aparecido desde la auditoría anterior) o EXISTING.
limitnumberTamaño de página, 1–100. Valor predeterminado: 25.
cursorstringEl valor de nextCursor de la página anterior.
Argumentos de ejemplo
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }

vetkit_get_report

solo lectura

Devuelve el informe de una auditoría terminada: Markdown legible, un resumen JSON con las puntuaciones por categoría y la comparación con la auditoría anterior, o SARIF 2.1.0.

Ámbitos: reports:read

ArgumentoTipoDescripción
auditIdobligatoriouuidLa auditoría que se va a leer.
formatstringmarkdown (predeterminado), json o sarif.
maxCharsnumberTrunca la salida a partir de este número de caracteres, 2000–500 000. Valor predeterminado: 40 000.
Argumentos de ejemplo
{ "auditId": "0192f3a4-…", "format": "markdown" }

Auditorías de larga duración

La mayoría de las auditorías terminan en pocos minutos. vetkit_run_audit consulta el estado cada pocos segundos y envía notificaciones de progreso mientras espera. Algunos clientes cancelan las llamadas a herramientas tras un tiempo fijo; Claude Code, por ejemplo, respeta MCP_TOOL_TIMEOUT. Si el tuyo lo hace, pasa "wait": false y consulta el estado con vetkit_get_audit. Cuando se agota timeoutSeconds, la auditoría sigue en curso y la herramienta devuelve "outcome": "still_running".

Errores

Los errores de la API se devuelven como resultados de herramienta con isError: true e incluyen el estado HTTP, el código de error de vetkit, el mensaje, el id de solicitud y una sugerencia.

  • 401 API_KEY_INVALID, API_KEY_REVOKED, API_KEY_EXPIRED — crea o rota una clave, actualiza VETKIT_API_KEY y reinicia el servidor.
  • 403 INSUFFICIENT_SCOPE — a la clave le falta un ámbito que la herramienta necesita.
  • 409 AUDIT_CONCURRENCY_LIMIT y 429 RATE_LIMITED — espera y vuelve a intentarlo; la sugerencia incluye el tiempo de espera cuando la API envía Retry-After.
  • INSTALLATION_REQUIRED se devuelve como un resultado normal con la URL de instalación de la GitHub App, no como un error.

Notas de seguridad

  • Trata la clave de API como una contraseña. Da acceso a las auditorías y los hallazgos de tu organización, incluidos los de repositorios privados. Guárdala en la configuración env de tu cliente MCP, nunca en archivos de los que hagas commit. Concede solo los ámbitos que necesites, define una fecha de expiración y revócala desde la app si se filtra.
  • La clave solo se envía a VETKIT_API_URL, como encabezado Authorization: Bearer por HTTPS. El servidor nunca la registra ni la incluye en los mensajes de error.
  • El servidor solo habla MCP a través de stdio. No abre puertos de red y solo escribe registros en stderr.
  • Los fragmentos de los hallazgos se enmascaran antes de que vetkit los almacene; los valores de los secretos nunca se devuelven.
  • El texto de los informes y los hallazgos procede del repositorio auditado (rutas de archivo, mensajes). Trátalo como entrada no confiable, igual que cualquier otra salida de una herramienta: un repositorio malicioso podría intentar incrustar instrucciones dirigidas a tu agente.

¿Prefieres HTTP directo? Todo lo que hace el servidor MCP está disponible a través de la API REST.