fortigate-monitor-plugin
v0.1.2
Published
FortiGate & FortiAnalyzer read-only monitoring MCP plugin — Claude Code, Codex & OpenCode compatible
Maintainers
Readme
fortinet-monitor-plugin
Plugin MCP de solo lectura para monitorear equipos Fortinet. Soporta dos productos: FortiGate (FortiOS REST API) y FortiAnalyzer (API JSON-RPC). Compatible con Claude Code, Codex y OpenCode.
Qué hace
- FortiGate (19 tools
fortigate_*, GET-only): salud y versión, CPU/memoria, licencias, HA, interfaces, ruteo, ARP, DHCP, SD-WAN, sesiones, políticas y hit counts, túneles VPN IPsec/SSL y logs. La capa HTTP solo hace GET y restringe los paths a/api/v2/monitor,/api/v2/cmdby/api/v2/log. - FortiAnalyzer (12 tools
faz_*, read-only): salud/versión, estado del sistema, HA, dispositivos administrados (FortiGates que reportan), ADOMs, uso de disco, usuarios admin, historial de tareas, búsqueda de logs (faz_log_search) y salud SD-WAN centralizada de todas las sucursales (faz_sdwan_health). El transporte JSON-RPC solo permitemethod:"get"(la búsqueda de logs y el SD-WAN health usan una consulta efímera que no modifica configuración).
El producto se elige en el instalador y se persiste en la variable
FORTI_PRODUCT (fortigate por defecto, o faz).
Requisitos en el equipo
Antes de instalar: este plugin necesita su propio API token, generado con un perfil de administración read-only. Nunca reutilices el token de un admin con permisos de escritura.
- FortiGate:
- Crear un perfil de administración con acceso read-only (o usar el
perfil
super_admin_readonlysi ya existe), vía GUI en System > Admin Profiles o por CLI:config system accprofile edit "api-readonly" set ftviewgrp read set sysgrp read set netgrp read set loggrp read next end - Crear el api-user con ese perfil y restringir
trusthosta la IP del equipo donde corre el plugin:config system api-user edit "mcp-monitor" set accprofile "api-readonly" set vdom "root" set trusthost1 <IP_DEL_PLUGIN> 255.255.255.255 next end - Generar el token:
execute api-user generate-key mcp-monitor. Guardalo: no se puede volver a consultar, solo regenerar.
- Crear un perfil de administración con acceso read-only (o usar el
perfil
- FortiAnalyzer: crear un admin con un perfil que tenga JSON API Access =
Read (nunca Read-Write) y permisos de lectura sobre Device Manager / Log
View / System Settings (si faltan, las tools devuelven
-11 No permission). Generar el API token del usuario desde System Settings > Administrators.
Instalación
npm install
npm run build # compila y genera los instaladores de dist-installer/
npm run setup # asistente: producto, host, puerto, token, TLS → Claude/Codex/OpenCodeEl asistente permite elegir varios clientes a la vez (Claude Code, Codex,
OpenCode) y registrar varias conexiones en una corrida: primero pregunta si
el equipo es FortiGate o FortiAnalyzer, y registra cada conexión como un MCP
server independiente fortigate-<alias> o fortianalyzer-<alias> (la acción "Agregar
equipo" suma sin tocar los existentes). Pre-carga valores desde .env o de una
instalación previa, prueba cada conexión y reporta el equipo detectado.
Instalación multiplataforma (sin clonar el repo)
npm run build genera en dist-installer/ instaladores self-extracting:
- Mac / Linux:
bash fortinet-monitor-plugin-<version>-setup.sh - Windows:
powershell -File fortinet-monitor-plugin-<version>-setup.ps1
Validan Node ≥ 20, extraen el plugin en ~/.fortinet-monitor-plugin, instalan
dependencias y lanzan el configurador.
Uso
fortigate_health/faz_health— siempre primero: valida token y detecta la versión.fortigate_version_info/faz_version_info— guía y enlaces de doc oficial para la familia detectada (7.0/7.2/7.4/7.6).fortigate_api_get/faz_api_get— acceso genérico read-only para recursos sin tool dedicada.faz_log_search— busca logs en el FortiAnalyzer (por ADOM, device, tipo, rango y filtro); es asíncrona y espera a que la búsqueda complete.faz_sdwan_health— salud de los enlaces SD-WAN de todas las sucursales vista desde el FAZ: último estado por enlace (latencia, jitter, packet loss, MOS, ancho de banda) y ranking de enlaces con más caídas SLA en la ventana. Requiere que el FortiGate de cada sucursal tenga configurado el log de eventos SD-WAN hacia este FAZ (Health Check SLA status).
Catálogo de endpoints FortiOS en docs/fortios-api-reference.md y patrones de
uso para agentes en skills/fortigate-monitor/SKILL.md.
Seguridad
- El token solo vive en la configuración del host MCP (
~/.claude.json,~/.codex/config.toml,opencode.jsonc) o en.envlocal (no commiteado). - Las respuestas redactan secretos (tokens, psksecret, passwords y campos FAZ
adm_pass/psk/private_key). - TLS verificado por defecto. El FortiGate no envía el certificado intermedio
en el handshake, por lo que el plugin incluye
certs/sectigo-intermediate.pem(CA pública de Sectigo) que el instalador pre-carga víaNODE_EXTRA_CA_CERTS— la verificación queda completa sin desactivar nada. La solución definitiva es instalar la cadena completa (cert + intermedio) en el FortiGate.
