MCP Shield

Ver en Markdown

MCP Shield revisa el tráfico de tu servidor MCP en el borde de OpenWAF: política de métodos y herramientas, inyección, fugas de credenciales y límite por token.

En esta página

MCP Shield es una capa del borde de OpenWAF que entiende MCP. Publicas tu propio servidor MCP (Model Context Protocol, transporte Streamable HTTP) detrás de OpenWAF, declaras su ruta como endpoint MCP y el borde lee cada mensaje JSON-RPC que pasa: comprueba qué métodos y herramientas se llaman, revisa los argumentos y los resultados de las herramientas en busca de inyección de instrucciones y de credenciales filtradas, y limita las peticiones por token.

Forma parte de Bots y agentes de IA y sigue el mismo interruptor: viene desactivado, se activa por endpoint y empieza en modo registro, en el que solo anota lo que haría.

Por qué un servidor MCP necesita sus propias comprobaciones

Un modelo lee como contexto lo que le devuelve un servidor MCP y decide con ello a qué herramienta llamar después. Eso abre riesgos que un cortafuegos de API normal no mira:

RiesgoCómo llegaQué hace MCP Shield
Inyección indirecta de instruccionesTexto escrito por un tercero dentro del resultado de una herramienta, de un recurso, de un prompt o de la descripción de una herramienta: «ignore previous instructions», etiquetas <system> falsas, órdenes de llamar a otra herramienta sin preguntar al usuario, enlaces de exfiltraciónRevisa las cadenas de cada respuesta y sustituye el mensaje envenenado por un error JSON-RPC si eliges block
Métodos o herramientas no previstosUn cliente, o un modelo manipulado, llama a una herramienta que ese endpoint no debería ofrecer, por ejemplo una destructivaLista de métodos permitidos y listas de herramientas permitidas y denegadas
Fugas de credencialesClaves de API, claves privadas o URL de bases de datos en los argumentos o en los resultadosPatrones DLP en las peticiones y en las respuestas
Clientes abusivosUn token que lanza cientos de llamadas por minutoPeticiones por minuto por token
Mensajes malformados o enormesCuerpos que no son JSON-RPC o que no cabenTope de tamaño y validación JSON-RPC

MCP Shield no autentica a nadie: tu servidor MCP sigue comprobando sus tokens. El borde solo usa un hash SHA-256 de la cabecera Authorization para contar las peticiones y para la huella de los eventos.

Qué le pasa a una petición

  1. Endpoint. Se aplica el primer endpoint de la lista del sitio (de IA o MCP) cuyo prefijo coincide con la ruta y cuyos métodos HTTP incluyen el de la petición.
  2. Ritmo. Con límite por token, la petición cuenta para sha256(Authorization) (la IP del cliente si no hay esa cabecera).
  3. Tamaño. El cuerpo del POST se lee hasta el tope del endpoint.
  4. JSON-RPC. El cuerpo tiene que ser un mensaje JSON-RPC 2.0 o un lote (array) no vacío.
  5. Política. Cada mensaje del cliente con method se compara con los métodos permitidos; los nombres de tools/call, con las listas de herramientas.
  6. Revisión de la petición. Argumentos de las herramientas, parámetros de resources/read y argumentos de los prompts.
  7. Tu servidor. La petición sigue sin cambios, salvo que se le quita Accept-Encoding para que la respuesta llegue legible.
  8. Revisión de la respuesta. Las respuestas JSON se leen enteras (hasta 2 MiB); las text/event-stream, evento a evento según llegan, y cada evento se reenvía en cuanto está revisado.

Las cabeceras de sesión (Mcp-Session-Id, MCP-Protocol-Version, Last-Event-ID), los ids de los eventos SSE, las peticiones DELETE, el enmarcado de los flujos GET y las respuestas 202 nunca se tocan.

Registro y aplicar

El modo de Bots y agentes de IA del sitio decide si el borde actúa:

  • Registro: no se bloquea nada. Cada infracción de la política y cada detección quedan como evento y como contador, para ver qué haría el modo aplicar.
  • Aplicar: el borde responde él mismo a las llamadas fuera de la política y, donde la revisión está en block, rechaza la petición o sustituye la respuesta.

Los bloqueos son errores JSON-RPC con el id de la petición bloqueada, así que tu cliente MCP enseña el error en esa llamada y la sesión sigue. La página de errores recoge cada código.

Nuestro propio servidor MCP

El servidor MCP de OpenWAF, mcp.openwaf.dev, es el primer endpoint detrás de MCP Shield. Funciona primero en modo registro, como se recomienda aquí, antes de que ninguna parte pase a aplicar.

Siguientes pasos

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar