Seguridad de la herramienta de WebMCP

Julia Pagnucco
Julia Pagnucco
Alexandra Klepper
Alexandra Klepper

Publicado: 9 de junio de 2026, última actualización: 1 de septiembre de 2026

Explicativa Web Extensiones Estado de Chrome Intención
GitHub Prueba de origen Prueba de origen Ver Intención de experimentar

Puedes usar el Protocolo de contexto del modelo web (WebMCP) para compilar y exponer herramientas estructuradas a los agentes de IA que se ejecutan en el navegador, incluidos los agentes potenciados por extensiones. Un agente usa un modelo de lenguaje grande (LLM), reglas, memoria y herramientas para ejecutar acciones en nombre del usuario.

Como los LLM tratan todo el texto, las instrucciones y los datos del usuario como una sola secuencia de tokens, son susceptibles a la inyección indirecta de instrucciones, que es la inclusión de instrucciones maliciosas por parte de un atacante. Nuestro equipo escribió este documento sobre la seguridad de las herramientas para ayudarte a proteger tu sitio web y a tus usuarios de las personas que actúan de mala fe.

Si bien algunos modelos tienen capas que abordan la inyección de instrucciones, es imposible garantizar la seguridad dentro de un modelo de lenguaje grande (LLM). Los modelos son probabilísticos por naturaleza. Es importante recordar que se han producido ataques de inyección de instrucciones repetibles contra sistemas basados en agentes que utilizan LLM de estado del arte, y la prevalencia de ataques en la Web está aumentando.

Para abordar estas inquietudes, proporcionamos orientación preliminar sobre la seguridad para quienes crean herramientas con WebMCP.

Usa sugerencias de anotaciones

Hay algunas sugerencias que debes agregar cuando crees tus herramientas:

  • Usa untrustedContentHint cuando corresponda. Si una herramienta devuelve contenido generado por usuarios (CGU) o datos de fuentes externas, considera agregar el ícono untrustedContentHint a la herramienta. Este campo etiqueta explícitamente la carga útil como no confiable para ayudar a proteger la integridad de tu sitio y, al mismo tiempo, proporcionar un indicador al agente de que estos datos requieren una mayor supervisión.
  • Usa consequentialHint para acciones irreversibles o de alto riesgo. Si la ejecución de una herramienta genera acciones significativas, como reservar un viaje o transferir dinero, establece consequentialHint: true para que el agente o el navegador puedan solicitar la confirmación del usuario antes de la ejecución.
  • Usa readOnlyHint en herramientas que no cambian el estado. Esto permite que el agente tome mejores decisiones sobre cuándo solicitar confirmaciones del usuario.

Expón tus herramientas con cuidado

La API de WebMCP document.modelContext.registerTool solo expone la funcionalidad de la herramienta a los agentes. De forma predeterminada, otros sitios web o los elementos iframe de origen cruzado no pueden observar tus herramientas ni interactuar con ellas.

Puedes proporcionar acceso a tu herramienta con la opción exposedTo en registerTool a un array de orígenes específicos y seguros. Esto expone tu herramienta a esos orígenes cuando se incorpora en tu sitio y cuando tu sitio se incorpora en ese origen.

// https://partner.org

await document.modelContext.registerTool({
  name: 'my_shared_tool',
  description: 'Shared across origins',
  // ...
}, {
  exposedTo: ['https://trusted.com', 'https://example.com']
});

Solo expón tus herramientas a orígenes en los que confíes. Esto es especialmente importante cuando las herramientas administran datos del usuario o afectan al usuario de alguna otra manera.

  • Una herramienta de solo lectura, como getFavoriteProducts, puede revelar información sobre un usuario. Solo debes exponer estas herramientas a los sitios web con los que compartirías directamente estos datos.
  • Las herramientas con acceso de lectura y escritura realizan acciones en nombre de un usuario. Estas herramientas solo deben exponerse a los orígenes en los que decidas que se puede confiar cuando actúen en nombre de tu usuario. Por ejemplo, es posible que quieras exponer postComment a trustedExample.com, pero no a evilExample.com.

Cómo establecer presupuestos de caracteres

Para evitar las protecciones del agente, escribe descripciones y resultados de herramientas concisos. Para obtener mejores resultados, te recomendamos los siguientes límites de caracteres:

  • 500 caracteres por descripción de la herramienta
  • 150 caracteres por descripción del parámetro
  • 30 caracteres por nombre de herramienta y nombre de parámetro
  • Límite de 1,500 caracteres por resultado de herramienta individual

Es probable que haya alguna variación entre los agentes, y es posible que desees ajustar tus presupuestos de caracteres con los comentarios de los usuarios.

Próximos pasos

Seguimos investigando y trabajando en la creación de una infraestructura segura para la Web de agentes. Por ejemplo, hay una discusión en curso sobre la administración del consentimiento entre las partes, y el borrador de la especificación incluye requestUserInteraction() para solicitar de forma asíncrona la entrada del usuario en la ejecución de la herramienta.

¿Cómo planeas implementar WebMCP en tu aplicación? ¿Tienes otras preocupaciones, ya sean de seguridad o de otro tipo? Si te registras en la prueba de origen de WebMCP, queremos conocer tu experiencia:

Si compilas un agente, te recomendamos que leas Consideraciones de seguridad del agente para WebMCP.