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:
| Riesgo | Cómo llega | Qué hace MCP Shield |
|---|---|---|
| Inyección indirecta de instrucciones | Texto 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ón | Revisa las cadenas de cada respuesta y sustituye el mensaje envenenado por un error JSON-RPC si eliges block |
| Métodos o herramientas no previstos | Un cliente, o un modelo manipulado, llama a una herramienta que ese endpoint no debería ofrecer, por ejemplo una destructiva | Lista de métodos permitidos y listas de herramientas permitidas y denegadas |
| Fugas de credenciales | Claves de API, claves privadas o URL de bases de datos en los argumentos o en los resultados | Patrones DLP en las peticiones y en las respuestas |
| Clientes abusivos | Un token que lanza cientos de llamadas por minuto | Peticiones por minuto por token |
| Mensajes malformados o enormes | Cuerpos que no son JSON-RPC o que no caben | Tope 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
- 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.
- Ritmo. Con límite por token, la petición cuenta para
sha256(Authorization)(la IP del cliente si no hay esa cabecera). - Tamaño. El cuerpo del
POSTse lee hasta el tope del endpoint. - JSON-RPC. El cuerpo tiene que ser un mensaje JSON-RPC 2.0 o un lote (array) no vacío.
- Política. Cada mensaje del cliente con
methodse compara con los métodos permitidos; los nombres detools/call, con las listas de herramientas. - Revisión de la petición. Argumentos de las herramientas, parámetros de
resources/ready argumentos de los prompts. - Tu servidor. La petición sigue sin cambios, salvo que se le quita
Accept-Encodingpara que la respuesta llegue legible. - 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.