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.
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcpDemandez 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
npxdans votrePATH. - 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
- 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.
- Nommez la clé d’après l’endroit où elle sera utilisée, par exemple « Claude Code — portable ».
- Choisissez les portées. Pour profiter de toutes les fonctionnalités MCP, sélectionnez
repos:read,repos:write,audits:read,audits:write,findings:readetreports:read. Pour un agent en lecture seule, omettezrepos:writeetaudits:write. - Définissez éventuellement une date d’expiration et une limite de débit par minute (60 par défaut, jusqu’à 600).
- 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
401 API_KEY_REVOKED.Installation
Claude Code
claude mcp add vetkit -e VETKIT_API_KEY=vk_live_... -- npx -y @vetkit/mcpAjoutez --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 :
{ "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é.
{ "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.
npm install -g @vetkit/mcpVETKIT_API_KEY=vk_live_... vetkit-mcpConfiguration
Le serveur se configure entièrement par des variables d’environnement.
| Variable | Obligatoire | Description |
|---|---|---|
VETKIT_API_KEY | Oui | Votre clé d’API, vk_live_… ou vk_test_…. |
VETKIT_API_URL | Non | URL 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_ID | Non | Identifiant de l’organisation. Chaque clé d’API appartient à exactement une organisation, utilisée par défaut : vous en aurez donc rarement besoin. |
VETKIT_APP_URL | Non | URL 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 seuleListe les dépôts connectés à votre organisation, avec la note et le score du dernier audit.
Portées : repos:read
| Argument | Type | Description |
|---|---|---|
limit | number | Taille de page, 1–100. 25 par défaut. |
cursor | string | La valeur nextCursor de la page précédente. |
{ "limit": 10 }vetkit_connect_repo
écritureConnecte 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
| Argument | Type | Description |
|---|---|---|
urlobligatoire | string | URL GitHub (https://github.com/owner/name) ou "owner/name". |
{ "url": "https://github.com/acme/payments-api" }vetkit_run_audit
écritureLance 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)
| Argument | Type | Description |
|---|---|---|
repoobligatoire | string | Identifiant du dépôt, "owner/name" ou URL GitHub — y compris /tree/<branch>. |
ref | string | Branche, tag ou SHA de commit. Par défaut, la référence indiquée dans l’URL, sinon la branche par défaut. |
wait | boolean | Attendre un statut final. true par défaut. |
timeoutSeconds | number | Attente maximale, 10–1800. 600 par défaut. L’audit continue après l’expiration du délai. |
{ "repo": "acme/payments-api", "ref": "main" }vetkit_get_audit
lecture seuleRenvoie le statut, la note, le score, le nombre de constats et la progression par analyseur d’un audit.
Portées : audits:read
| Argument | Type | Description |
|---|---|---|
auditIdobligatoire | uuid | L’identifiant d’audit renvoyé par vetkit_run_audit. |
{ "auditId": "0192f3a4-5b6c-7d8e-9f01-23456789abcd" }vetkit_list_findings
lecture seuleListe 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
| Argument | Type | Description |
|---|---|---|
auditIdobligatoire | uuid | L’audit à consulter. |
severity | string[] | CRITICAL, HIGH, MEDIUM, LOW ou INFO. |
category | string[] | SECURITY, SECRETS, DEPENDENCIES, QUALITY, HYGIENE ou AI_SIGNAL. |
status | string | NEW (apparu depuis l’audit précédent) ou EXISTING. |
limit | number | Taille de page, 1–100. 25 par défaut. |
cursor | string | La valeur nextCursor de la page précédente. |
{ "auditId": "0192f3a4-…", "severity": ["CRITICAL", "HIGH"] }vetkit_get_report
lecture seuleRenvoie 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
| Argument | Type | Description |
|---|---|---|
auditIdobligatoire | uuid | L’audit à consulter. |
format | string | markdown (par défaut), json ou sarif. |
maxChars | number | Tronquer la sortie au-delà de ce nombre de caractères, 2 000–500 000. 40 000 par défaut. |
{ "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 à jourVETKIT_API_KEYet redémarrez le serveur.403 INSUFFICIENT_SCOPE— il manque à la clé une portée requise par l’outil.409 AUDIT_CONCURRENCY_LIMITet429 RATE_LIMITED— patientez puis réessayez ; l’indication précise le délai lorsque l’API envoieRetry-After.INSTALLATION_REQUIREDest 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
envde 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êteAuthorization: Bearervia 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.