Un endpoint MCP es una entrada de los endpoints de IA del dominio (o de un nombre), ai_agents.endpoints, con "kind": "mcp" y un objeto mcp. Un sitio tiene hasta 20 endpoints contando los de IA y los MCP, y cada prefijo de ruta solo puede usarse una vez.
{"kind": "mcp", "path_prefix": "/mcp", "methods": ["POST", "GET", "DELETE"],
"mcp": {"methods_allowed": ["initialize", "ping", "notifications/*", "tools/list", "tools/call"],
"tools_allowed": [], "tools_denied": ["delete_record"],
"max_request_kb": 256, "inspect_requests": "log", "inspect_responses": "log",
"rate_per_token": 120}}Todos los ajustes
| Ajuste | Qué hace | Por defecto |
|---|---|---|
kind | mcp para un endpoint MCP | — |
path_prefix | Ruta de tu servidor MCP, empieza por /, hasta 256 bytes | — |
methods | Métodos HTTP que cubre el endpoint: cualquiera de POST, GET y DELETE, siempre con POST | POST, GET, DELETE |
mcp.methods_allowed | De 1 a 64 métodos JSON-RPC: nombres exactos o un prefijo terminado en /* como notifications/* | Los doce métodos estándar de abajo |
mcp.tools_allowed | Hasta 200 nombres de herramienta. Vacía = cualquier herramienta que no esté denegada | [] |
mcp.tools_denied | Hasta 200 nombres de herramienta que siempre se rechazan | [] |
mcp.max_request_kb | Cuerpo de POST más grande, de 1 a 1024 KiB | 256 |
mcp.inspect_requests | off, log o block para los argumentos de las herramientas, los parámetros de resources/read y los argumentos de los prompts | log |
mcp.inspect_responses | off, log o block para los resultados de las herramientas, el contenido de los recursos y todo lo demás que devuelve el servidor | log |
mcp.rate_per_token | Peticiones por minuto por token, de 0 a 100000. 0 = sin límite | 0 |
Los doce métodos por defecto son initialize, ping, notifications/*, tools/list, tools/call, resources/list, resources/read, resources/templates/list, prompts/list, prompts/get, completion/complete y logging/setLevel. El panel puede devolver la lista a ellos.
Los nombres de herramienta admiten letras, cifras y _ . : / -, hasta 128 caracteres, y se comparan exactamente con el name de tools/call.
Los campos de los endpoints de IA clásicos (max_body_bytes, rpm_per_ip, rpm_per_session, session_header, session_cookie, injection_action, limit_action) no se usan en los endpoints MCP y tienen que quedar vacíos.
Modos
Deciden dos interruptores. El modo de Bots y agentes de IA del sitio dice si el borde actúa; cada ajuste de revisión dice qué hacer con una detección:
| Modo registro | Modo aplicar | |
|---|---|---|
| Método o herramienta fuera de la política, ritmo, tamaño, JSON-RPC no válido | Evento, la petición pasa | El borde responde con un error |
Revisión off | No se revisa | No se revisa |
Revisión log | Evento, pasa | Evento, pasa |
Revisión block | Evento, pasa | Petición rechazada o respuesta sustituida por un error |
Así que un sitio en modo registro nunca bloquea, digan lo que digan los ajustes de revisión. Por eso se puede poner primero la política que quieres y leer qué haría.
Ritmo por token
El límite cuenta peticiones por minuto con la clave de un hash SHA-256 de la cabecera Authorization, o de la IP del cliente si no la hay. Cada nodo del borde cuenta por su cuenta: con N nodos sirviendo el sitio, un token puede llegar hasta N veces el límite. Úsalo como techo contra agentes desbocados, no como una cuota exacta.
Ejemplos
Solo herramientas de lectura (cualquier otro tools/call se rechaza):
{"tools_allowed": ["list_zones", "get_zone", "list_records"], "tools_denied": []}Todo salvo dos herramientas destructivas:
{"tools_allowed": [], "tools_denied": ["delete_zone", "delete_record"]}Un servidor que solo ofrece herramientas (sin recursos ni prompts):
{"methods_allowed": ["initialize", "ping", "notifications/*", "tools/list", "tools/call"]}Todo el dominio o un nombre
El endpoint puede ir en los ajustes del dominio o en la copia propia de un nombre (--host en la CLI, el selector de ámbito en el panel). Los ajustes de Bots y agentes de IA de un nombre sustituyen a los del dominio para ese nombre. La lista de endpoints siempre se sustituye entera al cambiarla.
Qué nodos lo aplican
MCP Shield funciona en los nodos del borde de OpenWAF. Un nodo que todavía no lo admite sigue sirviendo el sitio, sin sus endpoints MCP, y al publicar el cambio se devuelve un aviso que nombra el nodo.