mm.tech
security stable Rust

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

Repos relacionados