
Wireshark para MCP. Un proxy transparente que muestra cada llamada de herramienta real entre tu cliente de IA y tus servidores MCP, en vivo en tu terminal.
Wireshark para MCP. Un proxy transparente que muestra cada llamada real a herramientas entre tu cliente de IA y tus servidores MCP, en vivo en tu terminal.
El Inspector MCP oficial se conecta como su propio cliente, por lo que nunca ve lo que tu cliente (Cursor, Claude Code, Codex) envía realmente a tu servidor. Y cualquier cosa que espera a que llegue una solicitud no puede mostrar la llamada que el modelo nunca hizo, o que hizo con argumentos incorrectos. Cuando una herramienta no se llama silenciosamente, las capacidades no coinciden, o una llamada simplemente se cuelga, te quedas revisando registros y adivinando.
mcpsnoop se sitúa en la ruta de datos real en su lugar. Envuelve el comando de tu servidor con él y observa cada trama JSON-RPC en vivo, mientras tu cliente y servidor reales conversan.
Esta página también es el listado de la Acción de GitHub mcpsnoop, así que aquí está todo. Comprueba una sesión capturada, registra cada hallazgo como una alerta de escaneo de código, y hace fallar el trabajo en lo que hayas establecido como condición.```yaml permissions: security-events: write contents: read
steps:
Elige la versión que quieras. La más reciente está en la
[página de releases](https://github.com/kerlenton/mcpsnoop/releases). Cada entrada,
qué significan los códigos de salida y cómo conectarlo sin la acción están en
[La GitHub Action](#the-github-action) más abajo.
## Inicio rápido
Pruébalo de inmediato, sin necesidad de configurar nada.```bash
mcpsnoop demo
Para usarlo de verdad, envuelve tu servidor en la configuración MCP de tu cliente.```json { "mcpServers": { "my-server": { "command": "mcpsnoop", "args": ["--", "node", "build/index.js"] } } }
Todo lo que va después de `--` es el comando que normalmente inicia tu servidor. Sustitúyelo por lo que ya uses, como `python server.py`, `npx -y @scope/server` o un binario compilado.
En Claude Desktop no tienes que hacer esa edición a mano.```bash
mcpsnoop wrap my-server # route my-server through mcpsnoop
mcpsnoop unwrap my-server # put it back
wrap encuentra claude_desktop_config.json, lo copia a
claude_desktop_config.json.mcpsnoop.bak la primera vez, y reescribe solo la
entrada de ese servidor, por lo que tu formato y todos los demás servidores se dejan intactos.
Dentro de la entrada reescrita, las claves vuelven en orden alfabético. unwrap
restaura el archivo y elimina la copia de seguridad una vez que ningún servidor esté envuelto.
Reinicia Claude Desktop después de cualquiera de las dos acciones, ya que los servidores MCP se lanzan una sola vez al
inicio.
Luego usa tu cliente como de costumbre y abre la interfaz de usuario.```bash mcpsnoop
No flags, no socket paths, no startup order to remember. The shim and the UI find
each other on their own, and the UI backfills past sessions from disk.
For a streamable-HTTP server, run mcpsnoop as a reverse proxy.```bash
mcpsnoop http --target http://localhost:3000/mcp --listen :7000
El estado HTTP de cada respuesta se muestra en el flujo, por lo que una respuesta que no
contiene ningún mensaje JSON-RPC propio sigue siendo un marco visible en lugar de nada: el
desafío 401, el 403 en un Origin rechazado, el 202 que confirma una
notificación, y el 502 cuando no se puede alcanzar el destino en absoluto. El encabezado WWW-Authenticate de un 401 se conserva textualmente y se muestra en el inspector,
ya que indica el esquema de autenticación y los metadatos del recurso a los que acudir a continuación. Filtra por
estado con status:401 en la TUI, o por cualquier fallo con status:err. Un 4xx
o 5xx cuenta como error, por lo que una ejecución predeterminada de mcpsnoop check falla en ese caso.
¿No tienes un servidor propio? Pruébalo de verdad contra un servidor de prueba publicado, impulsado por tu propio cliente. Para inspeccionar una sesión después de que haya ocurrido, consulta revisar sesiones pasadas desde registros.
Si reutilizas las mismas opciones de shim en un proyecto, colócalas en un
archivo .mcpsnoop.toml en el directorio de trabajo actual.```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
Repite `redact-key`, `redact-value` y `redact-path` en líneas propias para añadir
más de uno de cada.
Esas son todas las claves que admite.
El archivo solo se busca en el directorio de trabajo actual, no en directorios
padres.
Las banderas explícitas de la línea de comandos anulan los valores del archivo de configuración.
## Comandos
| Comando | Qué hace |
|---|---|
| `mcpsnoop -- <server>` | envuelve un servidor stdio como un shim transparente |
| `mcpsnoop` | abre la TUI en vivo |
| `mcpsnoop http --target <url>` | hace de proxy para un servidor HTTP transmisible |
| `mcpsnoop export` | renderiza una sesión a json, html, text, har u otlp |
| `mcpsnoop check` | falla el CI por errores, marcos inválidos, advertencias, desajustes de enrutamiento, llamadas colgadas, resultados tardíos o un presupuesto de latencia |
| `mcpsnoop baseline` | inspecciona, acepta o restablece definiciones de herramientas de confianza |
| `mcpsnoop diff` | compara herramientas y llamadas entre dos sesiones capturadas |
| `mcpsnoop open` | abre una sesión guardada en la TUI |
| `mcpsnoop inventory` | lista cada servidor que haya pasado por mcpsnoop en esta máquina |
| `mcpsnoop stats` | pliega cada captura almacenada en una fila por servidor y herramienta |
| `mcpsnoop prune` | elimina registros de sesiones guardadas más antiguos que un límite |
| `mcpsnoop wrap <server>` | enruta uno de los servidores de Claude Desktop a través de mcpsnoop |
| `mcpsnoop unwrap <server>` | restaura la entrada de ese servidor a como estaba |
| `mcpsnoop remote <user@host>` | imprime el comando del túnel SSH |
| `mcpsnoop demo` | reproduce una sesión con guion |
Ejecuta `mcpsnoop help` para la lista completa, o `mcpsnoop help <comando>` para las banderas de uno.
## Cómo se compara