
Wireshark pour MCP. Un proxy transparent qui affiche chaque appel d'outil réel entre votre client IA et vos serveurs MCP, en direct dans votre terminal.
Wireshark pour MCP. Un proxy transparent qui affiche chaque véritable appel d'outil entre votre client IA et vos serveurs MCP, en direct dans votre terminal.
L'Inspecteur MCP officiel se connecte en tant que client propre, donc il ne voit jamais ce que votre client (Cursor, Claude Code, Codex) envoie réellement à votre serveur. Et tout ce qui attend qu'une requête arrive ne peut pas afficher l'appel que le modèle n'a jamais fait, ou qu'il a fait avec les mauvais arguments. Lorsqu'un outil n'est pas appelé silencieusement, que les capacités ne correspondent pas, ou qu'un appel reste bloqué, vous vous retrouvez à fouiller les journaux et à deviner.
mcpsnoop se place plutôt dans le chemin de données réel. Enveloppez la commande de votre serveur avec lui et regardez chaque trame JSON-RPC en direct, pendant que votre vrai client et votre serveur communiquent.
Cette page est également la fiche de l'Action GitHub mcpsnoop, voici donc l'ensemble. Elle vérifie une session capturée, consigne chaque constat comme une alerte d'analyse de code, et fait échouer le job sur ce que vous avez conditionné.```yaml permissions: security-events: write contents: read
steps:
Épinglez la version que vous souhaitez. La plus récente se trouve sur la
[page des versions](https://github.com/kerlenton/mcpsnoop/releases). Chaque entrée,
la signification des codes de sortie, et comment le brancher sans l'action sont détaillés
dans [L'action GitHub](#the-github-action) plus bas.
## Démarrage rapide
Voyez-le immédiatement, sans rien à configurer.```bash
mcpsnoop demo
Pour l’utiliser en conditions réelles, enveloppez votre serveur dans la configuration MCP de votre client.```json { "mcpServers": { "my-server": { "command": "mcpsnoop", "args": ["--", "node", "build/index.js"] } } }
Tout ce qui suit `--` est la commande qui lance normalement votre serveur. Remplacez-la par
ce que vous utilisez déjà, comme `python server.py`, `npx -y @scope/server`, ou un
binaire compilé.
Sur Claude Desktop, vous n'avez pas à effectuer cette modification à la main.```bash
mcpsnoop wrap my-server # route my-server through mcpsnoop
mcpsnoop unwrap my-server # put it back
wrap trouve claude_desktop_config.json, le copie vers
claude_desktop_config.json.mcpsnoop.bak la première fois, et ne réécrit que
l'entrée de ce seul serveur, afin que votre mise en forme et tous les autres serveurs soient laissés intacts.
Dans l'entrée réécrite, les clés reviennent dans l'ordre alphabétique. unwrap
restaure le fichier et supprime la sauvegarde une fois qu'aucun serveur n'est plus enveloppé.
Redémarrez Claude Desktop après l'une ou l'autre opération, car les serveurs MCP sont lancés une seule fois au
démarrage.
Utilisez ensuite votre client comme d'habitude et ouvrez l'interface utilisateur.```bash mcpsnoop
Aucun drapeau, aucun chemin de socket, aucun ordre de démarrage à retenir. Le shim et l’interface se trouvent
mutuellement, et l’interface reconstitue les sessions passées depuis le disque.
Pour un serveur HTTP streamable, exécutez mcpsnoop en tant que proxy inverse.```bash
mcpsnoop http --target http://localhost:3000/mcp --listen :7000
Le statut HTTP de chaque réponse apparaît dans le flux, de sorte qu’une réponse qui ne porte
aucun message JSON-RPC propre reste un cadre visible plutôt que rien : le
défi 401, le 403 sur un Origin rejeté, le 202 qui accuse réception d’une
notification, et le 502 lorsque la cible est totalement injoignable. L’en-tête WWW-Authenticate d’un 401 est conservé tel quel et affiché dans l’inspecteur,
car il nomme le schéma d’authentification et les métadonnées de ressource à consulter ensuite. Filtrez par
statut avec status:401 dans la TUI, ou par toute erreur avec status:err. Un 4xx
ou un 5xx compte comme une erreur, donc une exécution par défaut de mcpsnoop check échoue dessus.
Pas de serveur à vous ? Essayez pour de vrai contre un serveur de test publié, piloté par votre propre client. Pour inspecter une session après coup, voir revoir les sessions passées à partir des journaux.
Si vous réutilisez les mêmes options de shim dans un projet, placez-les dans un
fichier .mcpsnoop.toml dans le répertoire de travail courant.```toml
label = "filesystem"
trace-file = "trace.jsonl"
redact-secrets = true
redact-key = "token,authorization"
redact-value = "sk-[A-Za-z0-9]+"
redact-path = "$.params.arguments.password"
no-trace = false
Répétez `redact-key`, `redact-value` et `redact-path` sur leurs propres lignes pour en ajouter plus d’un de chaque.
Ce sont toutes les clés qu’il prend en charge.
Le fichier n’est recherché que dans le répertoire de travail actuel, pas dans les répertoires parents.
Les indicateurs explicites de la ligne de commande remplacent les valeurs du fichier de configuration.
## Commandes
| Commande | Ce qu’elle fait |
|---|---|
| `mcpsnoop -- <server>` | enveloppe un serveur stdio comme un shim transparent |
| `mcpsnoop` | ouvre la TUI en direct |
| `mcpsnoop http --target <url>` | sert de proxy à un serveur HTTP streamable |
| `mcpsnoop export` | rend une session en json, html, text, har ou otlp |
| `mcpsnoop check` | fait échouer la CI sur les erreurs, les trames invalides, les avertissements, les incohérences de routage, les appels bloqués, les résultats tardifs ou un budget de latence |
| `mcpsnoop baseline` | inspecte, accepte ou réinitialise les définitions d’outils approuvées |
| `mcpsnoop diff` | compare les outils et les appels entre deux sessions capturées |
| `mcpsnoop open` | ouvre une session enregistrée dans la TUI |
| `mcpsnoop inventory` | liste chaque serveur qui a transité par mcpsnoop sur cette machine |
| `mcpsnoop stats` | regroupe chaque capture stockée en une ligne par serveur et outil |
| `mcpsnoop prune` | supprime les journaux de sessions enregistrés plus anciens qu’un seuil |
| `mcpsnoop wrap <server>` | route l’un des serveurs de Claude Desktop via mcpsnoop |
| `mcpsnoop unwrap <server>` | remet l’entrée de ce serveur dans son état d’origine |
| `mcpsnoop remote <user@host>` | affiche la commande de tunnel SSH |
| `mcpsnoop demo` | joue une session scénarisée |
Exécutez `mcpsnoop help` pour la liste complète, ou `mcpsnoop help <command>` pour les indicateurs d’une commande.
## Comparaison