MCP Gauntlet
Pruebas de fuzzing y carga para servidores MCP, antes de publicarlos
Un workspace en Rust: mcp-fuzz (un fuzzer con conciencia de esquema que encuentra crashes y cuelgues, salida SARIF) y mcp-storm (un tester de carga con p50/p95/p99 y un gate de CI), ambos sobre un núcleo cliente MCP async compartido (mcp-gauntlet-core). La contraparte pre-deploy a la defensa en runtime de mcp-armor. 21 tests, tres crates en crates.io, MIT.
Qué problema resuelve
Los servidores MCP fallan en silencio y se publican rápido. La mayoría no tiene pruebas contra entradas malformadas ni presupuesto de latencia, así que la primera vez que alguien descubre que una herramienta se cae con un array vacío es cuando un agente le manda uno. Lo incómodo es que escribir esas pruebas a mano es lo bastante aburrido como para que nadie lo haga.
Cómo funciona
Dos herramientas de línea de comandos comparten un cliente MCP asíncrono y rápido. El fuzzer lee el esquema de entrada de cada herramienta y deriva de ahí sus cargas, luego lanza valores hostiles, límite y malformados contra el servidor buscando caídas, cuelgues, errores internos y huecos de validación que dejan pasar en silencio entradas malas, y escribe SARIF para que el escaneo de código de GitHub recoja los hallazgos. El probador de carga mueve un número fijo de trabajadores concurrentes, informa de latencia p50, p95 y p99 y de rendimiento por herramienta, y hace fallar la compilación en un umbral de latencia o de tasa de error. Ambos están en Rust, un binario estático cada uno, y ambos hablan MCP por stdio o HTTP con streaming.
Cuándo usarlo
Engancha ambos a la CI el día que publiques un servidor por primera vez. Las cargas salen del propio esquema del servidor, así que no hay suite de pruebas que mantener, y un binario estático encaja en cualquier tubería sin entorno de ejecución. Es el atacante previo al despliegue frente a la defensa en ejecución que aporta mcp-armor.
Cuándo no usarlo
Prueba la interfaz, no la lógica que hay detrás. Una herramienta que acepta cualquier entrada y devuelve una respuesta segura de sí misma pero equivocada pasa ambas pruebas sin mancha. En crates.io el fuzzer se publica con el nombre mcp-fuzz, y conviene saberlo antes de buscar el nombre del repositorio y concluir que no está.
Stars
★ 0
installs
↓ 40
Clones (14d)
⊟ 40
Lenguaje
Rust
Actualizado
2026-08-21
Instalación
cargo install mcp-fuzz mcp-storm