Aller au contenu
vetkit

Doc · MCP

Serveur MCP vetkit

Dotez votre agent de code d’un auditeur de code. Le serveur MCP vetkit permet à Claude Code — et à tout autre client Model Context Protocol — de connecter des dépôts, de lancer des audits et de consulter constats et rapports.

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

Demandez ensuite à votre agent quelque chose comme « Auditez acme/payments-api et dites-moi ce qu’il faut corriger en priorité. » Exécutez /mcp dans Claude Code pour vérifier que vetkit est connecté.

Prérequis

  • Node.js 20.3 ou version ultérieure, avec npx dans votre PATH.
  • Un compte vetkit avec la GitHub App installée sur les dépôts que vous souhaitez auditer.
  • Une clé d’API vetkit (étape suivante).

Créer une clé d’API

  1. Ouvrez Paramètres → Clés d’API dans l’application vetkit. Seuls les propriétaires et les administrateurs de l’organisation peuvent gérer les clés.
  2. Nommez la clé d’après l’endroit où elle sera utilisée, par exemple « Claude Code — portable ».
  3. Choisissez les portées. Pour profiter de toutes les fonctionnalités MCP, sélectionnez repos:read, repos:write, audits:read, audits:write, findings:read et reports:read. Pour un agent en lecture seule, omettez repos:write et audits:write.
  4. Définissez éventuellement une date d’expiration et une limite de débit par minute (60 par défaut, jusqu’à 600).
  5. Copiez le secret. Il ressemble à vk_live_… et n’est affiché qu’une seule fois ; vetkit n’en stocke qu’un hachage.

Rotation et révocation

Renouveler une clé émet un nouveau secret et maintient l’ancien valide pendant 24 heures, le temps de déployer le nouveau. La révocation prend effet immédiatement — la requête suivante renvoie 401 API_KEY_REVOKED.

Installation

Claude Code

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

Ajoutez --scope user pour rendre vetkit disponible dans tous vos projets, et pas seulement dans le projet courant.

Claude Desktop

Ouvrez Settings → Developer → Edit Config et ajoutez vetkit à claude_desktop_config.json, puis redémarrez Claude Desktop :

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

Cursor

Ajoutez le même bloc à ~/.cursor/mcp.json (global) ou à .cursor/mcp.json dans un projet. Ne commitez pas une configuration de projet qui contient votre clé.

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

Autres clients MCP

Tout client capable de lancer un serveur stdio convient : exécutez npx -y @vetkit/mcp avec VETKIT_API_KEY dans son environnement. Vous pouvez aussi installer le paquet globalement et exécuter directement le binaire vetkit-mcp.

Installation globale
npm install -g @vetkit/mcpVETKIT_API_KEY=vk_live_... vetkit-mcp

Configuration

Le serveur se configure entièrement par des variables d’environnement.

VariableObligatoireDescription
VETKIT_API_KEYOuiVotre clé d’API, vk_live_… ou vk_test_….
VETKIT_API_URLNonURL de base de l’API. Par défaut https://api.vetkit.dev. HTTPS obligatoire ; le HTTP simple n’est accepté que pour localhost.
VETKIT_ORG_IDNonIdentifiant de l’organisation. Chaque clé d’API appartient à exactement une organisation, utilisée par défaut : vous en aurez donc rarement besoin.
VETKIT_APP_URLNonURL de l’application web utilisée pour les liens vers les audits. Par défaut https://app.vetkit.dev.

Outils

Chaque outil renvoie du texte lisible, et tous les outils sauf vetkit_get_report renvoient aussi un contenu structuré typé. Les outils portent des annotations MCP, ce qui permet aux clients d’approuver automatiquement ceux en lecture seule. Aucun outil ne supprime quoi que ce soit.

vetkit_list_repos

lecture seule

Liste les dépôts connectés à votre organisation, avec la note et le score du dernier audit.

Portées : repos:read

ArgumentTypeDescription
limitnumberTaille de page, 1–100. 25 par défaut.
cursorstringLa valeur nextCursor de la page précédente.
Exemple d’arguments
{ "limit": 10 }

vetkit_connect_repo

écriture

Connecte un dépôt GitHub. Si la GitHub App vetkit n’est pas encore installée pour le propriétaire, renvoie le résultat "installation_required" avec une URL d’installation à ouvrir dans le navigateur.

Portées : repos:write

ArgumentTypeDescription
urlobligatoirestringURL GitHub (https://github.com/owner/name) ou "owner/name".
Exemple d’arguments
{ "url": "https://github.com/acme/payments-api" }

vetkit_run_audit

écriture

Lance un audit et, par défaut, attend qu’il se termine en envoyant des notifications de progression. Connecte d’abord le dépôt si nécessaire. Renvoie la note, le score et le nombre de constats.

Portées : repos:read, audits:write, audits:read (+ repos:write pour la connexion automatique)

ArgumentTypeDescription
repoobligatoirestringIdentifiant du dépôt, "owner/name" ou URL GitHub — y compris /tree/<branch>.
refstringBranche, tag ou SHA de commit. Par défaut, la référence indiquée dans l’URL, sinon la branche par défaut.
waitbooleanAttendre un statut final. true par défaut.
timeoutSecondsnumberAttente maximale, 10–1800. 600 par défaut. L’audit continue après l’expiration du délai.
Exemple d’arguments
{ "repo": "acme/payments-api", "ref": "main" }

vetkit_get_audit

lecture seule

Renvoie le statut, la note, le score, le nombre de constats et la progression par analyseur d’un audit.

Portées : audits:read

ArgumentTypeDescription
auditIdobligatoireuuidL’identifiant d’audit renvoyé par vetkit_run_audit.
Exemple d’arguments
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }

vetkit_list_findings

lecture seule

Liste les constats d’un audit, du plus grave au moins grave. Renvoie un tableau compact sous forme de texte et tous les détails — message, extrait masqué, correction, références — sous forme de contenu structuré.

Portées : findings:read

ArgumentTypeDescription
auditIdobligatoireuuidL’audit à consulter.
severitystring[]CRITICAL, HIGH, MEDIUM, LOW ou INFO.
categorystring[]SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE ou AI_SIGNAL.
statusstringNEW (apparu depuis l’audit précédent) ou EXISTING.
limitnumberTaille de page, 1–100. 25 par défaut.
cursorstringLa valeur nextCursor de la page précédente.
Exemple d’arguments
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }

vetkit_get_report

lecture seule

Renvoie le rapport d’un audit terminé : Markdown lisible, synthèse JSON avec les scores par catégorie et le différentiel par rapport à l’audit précédent, ou SARIF 2.1.0.

Portées : reports:read

ArgumentTypeDescription
auditIdobligatoireuuidL’audit à consulter.
formatstringmarkdown (par défaut), json ou sarif.
maxCharsnumberTronquer la sortie au-delà de ce nombre de caractères, 2 000–500 000. 40 000 par défaut.
Exemple d’arguments
{ "auditId": "0192f3a4-…", "format": "markdown" }

Audits de longue durée

La plupart des audits se terminent en quelques minutes. vetkit_run_audit interroge l’API toutes les quelques secondes et envoie des notifications de progression pendant l’attente. Certains clients annulent les appels d’outils au bout d’un délai fixe — Claude Code, par exemple, respecte MCP_TOOL_TIMEOUT. Si c’est le cas du vôtre, passez "wait": false et interrogez l’API avec vetkit_get_audit. Lorsque timeoutSeconds est écoulé, l’audit continue et l’outil renvoie "outcome": "still_running".

Erreurs

Les erreurs de l’API sont renvoyées sous forme de résultats d’outil avec isError: true et incluent le statut HTTP, le code d’erreur vetkit, le message, l’identifiant de requête et une indication.

  • 401 API_KEY_INVALID, API_KEY_REVOKED, API_KEY_EXPIRED — créez ou renouvelez une clé, mettez à jour VETKIT_API_KEY et redémarrez le serveur.
  • 403 INSUFFICIENT_SCOPE — il manque à la clé une portée requise par l’outil.
  • 409 AUDIT_CONCURRENCY_LIMIT et 429 RATE_LIMITED — patientez puis réessayez ; l’indication précise le délai lorsque l’API envoie Retry-After.
  • INSTALLATION_REQUIRED est renvoyé comme un résultat normal contenant l’URL d’installation de la GitHub App, et non comme une erreur.

Remarques de sécurité

  • Traitez la clé d’API comme un mot de passe. Elle donne accès aux audits et aux constats de votre organisation, y compris pour les dépôts privés. Conservez-la dans la configuration env de votre client MCP, jamais dans des fichiers que vous commitez. N’accordez que les portées nécessaires, définissez une date d’expiration et révoquez-la depuis l’application en cas de fuite.
  • La clé n’est envoyée qu’à VETKIT_API_URL, dans un en-tête Authorization: Bearer via HTTPS. Le serveur ne la journalise jamais et ne l’inclut jamais dans les messages d’erreur.
  • Le serveur communique en MCP uniquement via stdio. Il n’ouvre aucun port réseau et ne journalise que sur stderr.
  • Les extraits des constats sont masqués avant que vetkit ne les stocke ; les valeurs des secrets ne sont jamais renvoyées.
  • Le texte des rapports et des constats provient du dépôt audité (chemins de fichiers, messages). Traitez-le comme une entrée non fiable, comme toute autre sortie d’outil — un dépôt malveillant pourrait tenter d’y glisser des instructions destinées à votre agent.

Vous préférez le HTTP brut ? Tout ce que fait le serveur MCP est disponible via l’API REST.