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

FortiOS version MCP Python License Stars

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

  • 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# HerramientasDescripción
Genérico5cmdb_list/get/create/update/delete, monitor_get/action, log_get, service_call — cubren TODOS los endpoints
Sistema27Interfaces, DNS, NTP, administradores, DHCP, SNMP, certificados, VDOMs, syslog
Firewall32Políticas (IPv4/IPv6), direcciones, grupos de direcciones, servicios, VIPs, IP pools, programaciones, sesiones
VPN22IPsec Fase 1/2, portales/ajustes SSL VPN, túneles activos/inactivos, certificados VPN
Router17Rutas estáticas, OSPF, BGP, RIP, listas de prefijos, route maps, estado SD-WAN
Usuario18Usuarios locales, grupos, RADIUS, LDAP, TACACS+, SAML, sesiones autenticadas
Monitor18ARP, principales emisores de FortiView, control de endpoints, estadísticas IPS, controlador de switches, copia de seguridad de configuración
Log18Tráfico, eventos, VPN, usuario, virus, filtro web, IPS, control de aplicaciones, registros DNS + configuración de logs
Seguridad29IPS, AV, filtro web, control de aplicaciones, DLP, filtro de correo, filtro DNS, WAF, ICAP, filtro SSH, ZTNA
Inalámbrico18Perfiles AP, WTPs, SSIDs (VAPs), Hotspot 2.0, clientes conectados, APs no autorizados

Total: más de 204 herramientas


Requisitos

RequisitoVersión
Python3.11+
Gestor de paquetesuv (recomendado) o pip
FortiGateFortiOS 7.6.x
AutenticaciónCuenta de administrador de API REST con Bearer token

Inicio Rápido

1. Crear Token de API en FortiGate

  1. Inicie sesión en la interfaz web de su FortiGate
  2. Vaya a System > Administrators
  3. Haga clic en Create New > REST API Admin
  4. Asigne un perfil de administrador (super_admin para acceso completo, o un perfil restringido siguiendo el principio de mínimo privilegio)
  5. 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.json se 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=true en 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 .env ni 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).


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.