sistema: OPERATIVO
← volver a todos los hacks
SUPPLY CHAIN MEDIUM NEW

Tres de cada cinco herramientas MCP desplegadas no le dicen al agente qué hacen

Una muestra probabilística del registro MCP publicada el 10 de septiembre de 2026 encuentra que el 58,8 % de las herramientas desplegadas no lleva ninguna anotación de seguridad.

2026-09-17 // 8 min affects: mcp-protocol, mcp-servers, mcp-clients, llm-agents, tool-use-benchmarks

¿Qué es esto?

El 10 de septiembre de 2026, el investigador independiente Haseeb Mohammed Afsar publicó una medición de la población de servidores del Model Context Protocol que hace algo que la literatura existente no hace: extrae una muestra probabilística y se niega a reparar nada.

A partir de un censo del registro MCP oficial — 24.135 servidores en el barrido del 22 de agosto de 2026, frente a 16.548 el 14 de julio de 2026 — el estudio construye un marco de muestreo de 7.258 entradas activas publicadas en npm y declaradas en stdio, extrae 400 con una semilla publicada y sondea cada una exactamente una vez. Sin credenciales, sin reintentos, sin reparación. Cada extracción queda registrada con su resultado.

Dos cifras importan para la postura de seguridad. Solo el 48,8 % completó un apretón de manos initialize. Y de las 2.766 herramientas anunciadas por los 195 servidores que sí arrancaron, 1.626 — el 58,8 % — no llevan ninguna anotación de seguridad.

Cómo funciona

Las ToolAnnotations de MCP, incorporadas en la revisión 2025-03-26 de la especificación, son cuatro booleanos opcionales que permiten a un servidor indicar al cliente qué hace una herramienta antes de invocarla: readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Constituyen todo el vocabulario de riesgo previo a la llamada del protocolo.

La especificación es cuidadosa con ellas en dos direcciones a la vez. Primero, son pistas y no contratos: una publicación de los mantenedores de MCP del 16 de marzo de 2026 reitera que los clientes deben tratar como no confiables las anotaciones procedentes de un servidor no confiable, porque un servidor puede declarar readOnlyHint: true y borrar sus archivos igualmente. Segundo, los valores por defecto son deliberadamente pesimistas: una herramienta sin anotar debe presuponerse no de solo lectura, potencialmente destructiva, no idempotente y abierta al exterior.

Ese valor por defecto es la pieza que sostiene el conjunto. Solo produce un comportamiento seguro si los clientes lo respetan, y respetarlo con una tasa de omisión del 58,8 % significa solicitar confirmación al usuario en aproximadamente tres de cada cinco herramientas que el agente puede alcanzar.

La medición también muestra dónde se concentra la omisión, y no está repartida. De los 194 servidores que anuncian al menos una herramienta, 72 anotan todas sus herramientas y 122 no anotan ninguna. Ni un solo servidor parcialmente anotado apareció en la muestra. Los autores evitan presentarlo como un absoluto — cero observaciones sobre 194 sostiene una cota superior unilateral al 95 % del 1,53 % para la anotación parcial, no una negación — y señalan que una ejecución anterior no publicada encontró cuatro servidores parciales, resultado que la ejecución actual no reproduce.

  extraídos del marco de muestreo    400 servidores
  ├─ apretón de manos completado     195   48,8 %   ← el único nivel que se mide
  ├─ nunca arrancó                   150   37,5 %
  ├─ requiere credenciales            53   13,3 %
  └─ paquete no disponible             2    0,5 %

  de los 195 que arrancaron → 2.766 herramientas anunciadas
  ├─ violaciones fatales de JSON Schema  0    0,0 %
  └─ sin anotación de seguridad      1.626   58,8 %   (marco curado: 41,5 %)

La línea de los esquemas merece atención porque contradice una intuición extendida: cero de 2.766 herramientas presentan una violación fatal de JSON Schema. En la práctica, los esquemas de herramientas MCP no están malformados. Toda la varianza está en los metadatos opcionales.

Por qué importa

El hallazgo de mayor alcance no es el 58,8 %. Es que la curación embellece la salud del ecosistema en ambas direcciones a la vez. Procesado con el mismo instrumento, un marco curado a mano de 24 servidores de referencia y populares arroja una tasa de arranque del 66,7 % (17,9 puntos mejor) y una tasa de omisión de anotaciones del 41,5 % (17,3 puntos mejor). Los servidores de referencia anotan, y los marcos curados están llenos de servidores de referencia. Cualquier estadística de postura extraída de una lista de popularidad, de un conjunto de referencia o de una canalización que repara servidores hasta que arrancan está midiendo una población que se seleccionó a sí misma por funcionar.

Eso tiene una consecuencia directa sobre cómo leer el resto de la literatura de seguridad de MCP. La evaluación dinámica de Nicolás Padilla, del 31 de julio de 2026, sobre 414 servidores expuestos a Internet — 68 hallazgos reportables, 91,8 % sin OAuth y 41,6 % de los servidores confirmados desaparecidos en tres días entre pasadas — corrobora esa rotación desde el lado remoto. Dos instrumentos independientes coinciden ya en que una fracción amplia de lo que el registro anuncia no es algo duradero ni en funcionamiento.

Para un cliente, una herramienta sin anotar deja exactamente dos opciones, ambas malas a esta tasa. Respetar el valor por defecto pesimista y generar solicitudes de aprobación sobre la mayor parte de la superficie de herramientas, que es la forma de enseñar a los usuarios a aceptar sin leer — la misma fatiga que cubrimos en la brecha entre lo que bloquea un diálogo de aprobación y lo que muestra. O ignorarlo, y haber aprobado en silencio herramientas cuyo comportamiento nadie declaró. La propia publicación de los mantenedores señala que hoy ningún cliente MCP permite filtrar herramientas por valor de anotación, y ninguno expone las anotaciones en los diálogos de aprobación: en la práctica, la mayor parte de este vocabulario no llega a la decisión que debía informar.

El 37,5 % que nunca arranca es un problema de segundo orden. Un registro en el que dos de cada cinco entradas publicadas están inertes es un registro lleno de nombres que no resuelven a nada — y un nombre que no resuelve a nada es un nombre que un atacante puede hacer resolver a algo. Ese es el problema de higiene de la ruta de instalación que subyace a las reescrituras de descripción tras la aprobación y a la campaña Deadbugz con metadatos activados en tiempo de ejecución, donde el comportamiento hostil solo aparece una vez obtenida la aprobación.

Un último resultado, dirigido a quien evalúe agentes: con un único método de similitud mantenido constante, las herramientas MCP reales muestran un 2,8 % de casi duplicados a coseno 0,70 y un 0,0 % entre autores independientes en todos los umbrales probados. BFCL v4 muestra un 16,7 %, de los cuales 16,4 puntos se sitúan entre tareas presentadas como independientes. Antes de la deduplicación, el 68,8 % de las filas en bruto de BFCL y el 85,6 % de las de UltraTool son repeticiones exactas de nombre más descripción, frente al 0,4 % de MCP real. Tras deduplicar, UltraTool resulta más limpio que las herramientas reales, con un 0,3 %: es por tanto una propiedad de un corpus concreto y no de los corpus sintéticos como clase — el artículo lo dice explícitamente. La conclusión operativa: una estadística calculada sobre estas publicaciones sin deduplicación global mide repetición, no herramientas.

Defensas

Trate una anotación ausente como un hallazgo, no como un valor por defecto. Si opera una pasarela MCP interna, enumere tools/list en cada servidor registrado y reporte la tasa de omisión de anotaciones por servidor. La distribución de todo o nada abarata el ejercicio: está clasificando servidores, no herramientas.

No permita que una pista ausente se convierta en una aprobación implícita. Sea cual sea el trato que su cliente dé a destructiveHint: true, debe dar el mismo a una herramienta sin ninguna pista. Es lo que dice el valor por defecto de la especificación, y es el caso que menos ejercitan los clientes.

Nunca deje que una pista de un servidor no confiable relaje un control. Las anotaciones las escribe el servidor y nadie las verifica. Úselas para endurecer la postura — una herramienta con openWorldHint: true marca la sesión como portadora de contenido no confiable — y nunca para saltarse un control. Donde necesite una garantía en lugar de una pista, sitúela en la capa de autorización, el transporte o el aislamiento. La aplicación de reglas pertenece allí donde puede aplicarse.

Fije la ruta de instalación, no el nombre del registro. Con una tasa de no arranque del 37,5 %, la mayoría de las entradas del registro no son dependencias reales — pero aquellas de las que sí depende deben fijarse por versión y huella de integridad, resolverse desde un espejo que usted controle y volver a verificarse en cada reconexión en lugar de darse por buenas tras el primer apretón de manos.

Relea sus propios indicadores de postura. Si un informe de proveedor, una auditoría interna o un banco de pruebas de escáneres muestreó servidores populares o de referencia, asuma que es unos 17 puntos optimista tanto en tasa de arranque como en cobertura de anotaciones. Pregunte cuál fue el marco de muestreo antes de llevar la cifra a un registro de riesgos.

Anote lo que publique. Si escribe un servidor, ponga readOnlyHint: true en las herramientas de solo lectura, destructiveHint: false en las operaciones puramente aditivas y openWorldHint: false en las de dominio cerrado. Cuesta cuatro booleanos y es la única señal que recibe un cliente antes de la llamada.

Estado

ElementoDetalle
PublicaciónarXiv:2609.10962v1 [cs.SE], 10 de septiembre de 2026
AutorHaseeb Mohammed Afsar (investigador independiente)
Barridos del censo14 de julio de 2026 (16.548 servidores) y 22 de agosto de 2026 (24.135 servidores), ambos completos
Muestra400 servidores npm/stdio, semilla 20260819, marco fijado por SHA-256
Cifras clave48,8 % de tasa de arranque; 58,8 % de 2.766 herramientas sin anotar; 0 violaciones fatales de esquema
Efecto de curación+17,9 pts en tasa de arranque, −17,3 pts en omisión de anotaciones sobre un marco curado de 24 servidores
CorroboraciónarXiv:2608.00150 (31 de julio de 2026), 414 servidores expuestos, 41,6 % desaparecidos en tres días
Límites de alcanceSolo npm/stdio (30,7 % de la población y bajando); sonda única, sin reintento — 48,8 % es una cota inferior
ReproducibilidadInstrumento, semilla, resultados por extracción y scripts publicados; DOI de concepto Zenodo 10.5281/zenodo.21347997

Sources