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.
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcpDespué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
npxen tuPATH. - 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
- Abre Configuración → Claves de API en la app de vetkit. Solo los propietarios y administradores de la organización pueden gestionar claves.
- Ponle a la clave un nombre que indique dónde se va a usar, por ejemplo “Claude Code — portátil”.
- Elige los ámbitos. Para disponer de todas las funciones de MCP, elige
repos:read,repos:write,audits:read,audits:write,findings:readyreports:read. Para un agente de solo lectura, omiterepos:writeyaudits:write. - Opcionalmente, define una fecha de expiración y un límite de solicitudes por minuto (60 de forma predeterminada, hasta 600).
- Copia el secreto. Tiene el formato
vk_live_…y se muestra una sola vez; vetkit solo almacena un hash.
Rotación y revocación
401 API_KEY_REVOKED.Instalación
Claude Code
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcpAñ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:
{ "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.
{ "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.
npm install -g @vetkit/mcpVETKIT_API_KEY=vk_live_... vetkit-mcpConfiguración
El servidor se configura por completo mediante variables de entorno.
| Variable | Obligatoria | Descripción |
|---|---|---|
VETKIT_API_KEY | Sí | Tu clave de API, vk_live_… o vk_test_…. |
VETKIT_API_URL | No | URL base de la API. Valor predeterminado: https://api.vetkit.dev. Debe usar HTTPS; HTTP sin cifrar solo se acepta para localhost. |
VETKIT_ORG_ID | No | Id 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_URL | No | URL 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 lecturaLista los repositorios conectados a tu organización, con la calificación y la puntuación de la última auditoría.
Ámbitos: repos:read
| Argumento | Tipo | Descripción |
|---|---|---|
limit | number | Tamaño de página, 1–100. Valor predeterminado: 25. |
cursor | string | El valor de nextCursor de la página anterior. |
{ "limit": 10 }vetkit_connect_repo
escrituraConecta 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
| Argumento | Tipo | Descripción |
|---|---|---|
urlobligatorio | string | URL de GitHub (https://github.com/owner/name) o "owner/name". |
{ "url": "https://github.com/acme/payments-api" }vetkit_run_audit
escrituraInicia 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)
| Argumento | Tipo | Descripción |
|---|---|---|
repoobligatorio | string | Id del repositorio, "owner/name" o una URL de GitHub, incluidas las que contienen /tree/<branch>. |
ref | string | Rama, etiqueta o SHA de commit. De forma predeterminada, la ref de la URL y, si no hay ninguna, la rama predeterminada. |
wait | boolean | Esperar a un estado final. Valor predeterminado: true. |
timeoutSeconds | number | Tiempo máximo de espera, 10–1800. Valor predeterminado: 600. La auditoría sigue en curso aunque se agote el tiempo. |
{ "repo": "acme/payments-api", "ref": "main" }vetkit_get_audit
solo lecturaDevuelve 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
| Argumento | Tipo | Descripción |
|---|---|---|
auditIdobligatorio | uuid | El id de auditoría que devuelve vetkit_run_audit. |
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }vetkit_list_findings
solo lecturaLista 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
| Argumento | Tipo | Descripción |
|---|---|---|
auditIdobligatorio | uuid | La auditoría que se va a leer. |
severity | string[] | CRITICAL, HIGH, MEDIUM, LOW o INFO. |
category | string[] | SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE o AI_SIGNAL. |
status | string | NEW (aparecido desde la auditoría anterior) o EXISTING. |
limit | number | Tamaño de página, 1–100. Valor predeterminado: 25. |
cursor | string | El valor de nextCursor de la página anterior. |
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }vetkit_get_report
solo lecturaDevuelve 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
| Argumento | Tipo | Descripción |
|---|---|---|
auditIdobligatorio | uuid | La auditoría que se va a leer. |
format | string | markdown (predeterminado), json o sarif. |
maxChars | number | Trunca la salida a partir de este número de caracteres, 2000–500 000. Valor predeterminado: 40 000. |
{ "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, actualizaVETKIT_API_KEYy reinicia el servidor.403 INSUFFICIENT_SCOPE— a la clave le falta un ámbito que la herramienta necesita.409 AUDIT_CONCURRENCY_LIMITy429 RATE_LIMITED— espera y vuelve a intentarlo; la sugerencia incluye el tiempo de espera cuando la API envíaRetry-After.INSTALLATION_REQUIREDse 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
envde 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 encabezadoAuthorization: Bearerpor 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.