Fortinet MCP Server
Un servidor completo del Protocolo de Contexto de Modelo (MCP) para Fortinet FortiOS 7.6.6
Documentación
Servidor MCP de FortiOS 7.6.x
Un servidor completo Model Context Protocol (MCP) para Fortinet FortiOS 7.6.x: expone toda la API REST (1536 endpoints) como herramientas MCP tipadas utilizables desde Claude Desktop, Cursor o cualquier cliente compatible con MCP.
Tabla de Contenidos
- Características
- Categorías de Herramientas
- Requisitos
- Inicio Rápido
- Modo HTTP
- Ejemplos de Uso
- Estructura del Proyecto
- Notas de Seguridad
- Contribuciones
- Licencia
Características
- Más de 204 herramientas MCP tipadas organizadas por área funcional (sistema, firewall, VPN, router, usuario, monitor, log, seguridad, wireless)
- 5 herramientas genéricas de paso directo que cubren los 1,536 endpoints de la API de FortiOS
- Cliente HTTP asíncrono con autenticación mediante Bearer token a través de
httpx - Soporte completo para las secciones de API CMDB, Monitor, Log y Service
- Verificación SSL configurable (se admiten certificados autofirmados)
- Compatible con entornos multi-VDOM
- Se ejecuta como servidor stdio (Claude Desktop) o HTTP (uso remoto/nube)
Categorías de Herramientas
| Módulo | # Herramientas | Descripción |
|---|---|---|
| Genérico | 5 | cmdb_list/get/create/update/delete, monitor_get/action, log_get, service_call — cubren TODOS los endpoints |
| Sistema | 27 | Interfaces, DNS, NTP, administradores, DHCP, SNMP, certificados, VDOMs, syslog |
| Firewall | 32 | Políticas (IPv4/IPv6), direcciones, grupos de direcciones, servicios, VIPs, IP pools, programaciones, sesiones |
| VPN | 22 | IPsec Fase 1/2, portales/ajustes SSL VPN, túneles activos/inactivos, certificados VPN |
| Router | 17 | Rutas estáticas, OSPF, BGP, RIP, listas de prefijos, route maps, estado SD-WAN |
| Usuario | 18 | Usuarios locales, grupos, RADIUS, LDAP, TACACS+, SAML, sesiones autenticadas |
| Monitor | 18 | ARP, principales emisores de FortiView, control de endpoints, estadísticas IPS, controlador de switches, copia de seguridad de configuración |
| Log | 18 | Tráfico, eventos, VPN, usuario, virus, filtro web, IPS, control de aplicaciones, registros DNS + configuración de logs |
| Seguridad | 29 | IPS, AV, filtro web, control de aplicaciones, DLP, filtro de correo, filtro DNS, WAF, ICAP, filtro SSH, ZTNA |
| Inalámbrico | 18 | Perfiles AP, WTPs, SSIDs (VAPs), Hotspot 2.0, clientes conectados, APs no autorizados |
Total: más de 204 herramientas
Requisitos
| Requisito | Versión |
|---|---|
| Python | 3.11+ |
| Gestor de paquetes | uv (recomendado) o pip |
| FortiGate | FortiOS 7.6.x |
| Autenticación | Cuenta de administrador de API REST con Bearer token |
Inicio Rápido
1. Crear Token de API en FortiGate
- Inicie sesión en la interfaz web de su FortiGate
- Vaya a System > Administrators
- Haga clic en Create New > REST API Admin
- Asigne un perfil de administrador (
super_adminpara acceso completo, o un perfil restringido siguiendo el principio de mínimo privilegio) - Copie el token de API generado: solo se muestra una vez
2. Instalar dependencias
git clone https://github.com/paoloamato2/fortinet-mcp-server.git
cd fortinet-mcp-server
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .
3. Configurar el entorno
cp .env.example .env
Edite .env:
FORTIOS_HOST=https://192.168.1.1
FORTIOS_API_TOKEN=your-token-here
FORTIOS_VDOM=root
FORTIOS_VERIFY_SSL=false
FORTIOS_TIMEOUT=30
4. Ejecutar con MCP Inspector
uv run mcp dev server.py
5. Instalar en Claude Desktop
uv run mcp install server.py --name "FortiOS"
O añada manualmente a claude_desktop_config.json:
{
"mcpServers": {
"fortios": {
"command": "uv",
"args": [
"run",
"--directory", "/absolute/path/to/fortinet-mcp-server",
"python", "server.py"
],
"env": {
"FORTIOS_HOST": "https://192.168.1.1",
"FORTIOS_API_TOKEN": "your-api-token",
"FORTIOS_VDOM": "root",
"FORTIOS_VERIFY_SSL": "false"
}
}
}
}
En macOS,
claude_desktop_config.jsonse encuentra en~/Library/Application Support/Claude/claude_desktop_config.json.
En Windows, se encuentra en%APPDATA%\Claude\claude_desktop_config.json.
Modo HTTP
Para ejecutarlo como servidor HTTP remoto en lugar de stdio:
MCP_TRANSPORT=streamable-http MCP_PORT=8000 uv run server.py
Conéctese mediante http://localhost:8000/mcp.
Este modo es útil para configuraciones de equipos compartidos o implementaciones alojadas en la nube.
Ejemplos de Uso
Mediante Claude Desktop
Una vez instalado, puede hacer preguntas a Claude en lenguaje natural, como:
- "Muéstrame todas las políticas de firewall que deniegan tráfico"
- "¿Qué túneles IPsec están actualmente caídos?"
- "Enumera todas las interfaces con sus direcciones IP"
- "¿Qué ruta se usaría para llegar a 8.8.8.8?"
- "Muestra las 20 principales fuentes de tráfico en FortiView"
- "¿Hay intentos fallidos de inicio de sesión de administrador en los registros?"
Invocaciones Directas de Herramientas
# List firewall policies filtered by action
firewall_policy_list(filter_action="deny")
# Get system status
system_status()
# Check IPsec VPN tunnels
monitor_vpn_ipsec()
# Query forward traffic logs for a specific source IP
log_traffic_forward(srcip="10.10.1.100", rows=50)
# Generic: list any CMDB resource (full API coverage)
cmdb_list("casb/profile")
cmdb_list("wireless-controller.hotspot20/hs-profile")
# Generic: get any monitor data
monitor_get("registration/forticloud")
Estructura del Proyecto
fortinet-mcp-server/
├── server.py # FastMCP entry point, lifespan, tool registration
├── fortios_client.py # Async HTTP client (CMDB/Monitor/Log/Service)
├── pyproject.toml # Project metadata and dependencies
├── .env.example # Environment variable template
├── README.md # This file
└── tools/
├── __init__.py
├── generic.py # Generic pass-through tools (all 1536 endpoints)
├── system.py # System config + monitoring
├── firewall.py # Firewall policies, addresses, VIPs, sessions
├── vpn.py # IPsec + SSL VPN config and monitoring
├── router.py # Static routes, OSPF, BGP, SD-WAN
├── user.py # Local users, groups, RADIUS, LDAP, sessions
├── monitor.py # Network monitoring, FortiView, endpoint control
├── log.py # Log retrieval and configuration
├── security.py # IPS, AV, webfilter, DLP, WAF, ZTNA profiles
└── wireless.py # WiFi APs, SSIDs, clients, rogue APs
Notas de Seguridad
- El token de API otorga el mismo nivel de acceso que su perfil de administrador asociado. Siga el principio de mínimo privilegio: cree un perfil restringido si solo necesita acceso de lectura.
- Establezca
FORTIOS_VERIFY_SSL=trueen producción y asegúrese de que su FortiGate tenga un certificado TLS válido. - El servidor se ejecuta localmente mediante stdio de forma predeterminada; no se expone a la red a menos que el modo HTTP esté habilitado.
- Nunca confirme su archivo
.envni exponga su token de API en registros, issues o código. - Rote su token de API con regularidad y revóquelo inmediatamente si se ve comprometido.
Contribuciones
¡Las contribuciones son bienvenidas! Lea CONTRIBUTING.md antes de enviar una solicitud de extracción (pull request).
- Informes de errores y solicitudes de funciones → abra un issue
- Vulnerabilidades de seguridad → consulte SECURITY.md
- Código de conducta → CODE_OF_CONDUCT.md
Licencia
Este proyecto está licenciado bajo la Licencia MIT: consulte LICENSE para más detalles.
Aviso legal: Este proyecto no está afiliado ni respaldado por Fortinet, Inc. FortiOS y FortiGate son marcas comerciales de Fortinet, Inc.