Fortinet MCP Server

Um servidor completo do Model Context Protocol (MCP) para Fortinet FortiOS 7.6.6

Documentação

FortiOS 7.6.x MCP Server

FortiOS version MCP Python License Stars

Um servidor Model Context Protocol (MCP) completo para Fortinet FortiOS 7.6.x — expondo toda a API REST (1536 endpoints) como ferramentas MCP tipadas utilizáveis no Claude Desktop, no Cursor ou em qualquer cliente compatível com MCP.


Sumário


Recursos

  • 204+ ferramentas MCP tipadas organizadas por área funcional (sistema, firewall, VPN, roteador, usuário, monitor, log, segurança, sem fio)
  • 5 ferramentas genéricas de passagem que cobrem todos os 1.536 endpoints da API FortiOS
  • Cliente HTTP assíncrono com autenticação via Bearer token usando httpx
  • Suporte completo para as seções da API CMDB, Monitor, Log e Service
  • Verificação SSL configurável (certificados autoassinados suportados)
  • Compatível com ambientes multi-VDOM
  • Executa como servidor stdio (Claude Desktop) ou HTTP (uso remoto/na nuvem)

Categorias de Ferramentas

Módulo# FerramentasDescrição
Genérico5cmdb_list/get/create/update/delete, monitor_get/action, log_get, service_call — cobrem TODOS os endpoints
Sistema27Interfaces, DNS, NTP, administradores, DHCP, SNMP, certificados, VDOMs, syslog
Firewall32Políticas (IPv4/IPv6), endereços, grupos de endereços, serviços, VIPs, pools de IP, agendamentos, sessões
VPN22IPsec Fase 1/2, portais/configurações SSL VPN, ativação/desativação de túneis, certificados VPN
Roteador17Rotas estáticas, OSPF, BGP, RIP, listas de prefixos, mapas de rotas, saúde SD-WAN
Usuário18Usuários locais, grupos, RADIUS, LDAP, TACACS+, SAML, sessões autenticadas
Monitor18ARP, principais conversadores do FortiView, controle de endpoints, estatísticas de IPS, controlador de switches, backup de configuração
Log18Tráfego, eventos, VPN, usuário, vírus, webfilter, IPS, app-ctrl, logs DNS + configuração de log
Segurança29IPS, AV, webfilter, controle de aplicativos, DLP, filtro de e-mail, filtro DNS, WAF, ICAP, ssh-filter, ZTNA
Sem fio18Perfis de AP, WTPs, SSIDs (VAPs), Hotspot 2.0, clientes conectados, APs rogue

Total: 204+ ferramentas


Requisitos

RequisitoVersão
Python3.11+
Gerenciador de pacotesuv (recomendado) ou pip
FortiGateFortiOS 7.6.x
AutenticaçãoConta de administrador da API REST com Bearer token

Início Rápido

1. Criar Token de API no FortiGate

  1. Acesse a interface web do seu FortiGate
  2. Navegue até System > Administrators
  3. Clique em Create New > REST API Admin
  4. Atribua um perfil de administrador (super_admin para acesso total, ou um perfil restrito seguindo o princípio do menor privilégio)
  5. Copie o token de API gerado — ele é exibido apenas uma vez

2. Instalar dependências

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 ambiente

cp .env.example .env

Edite o .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. Executar com o MCP Inspector

uv run mcp dev server.py

5. Instalar no Claude Desktop

uv run mcp install server.py --name "FortiOS"

Ou adicione manualmente ao 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"
      }
    }
  }
}

No macOS, o claude_desktop_config.json está em ~/Library/Application Support/Claude/claude_desktop_config.json.
No Windows, ele está em %APPDATA%\Claude\claude_desktop_config.json.


Modo HTTP

Para executar como servidor HTTP remoto em vez de stdio:

MCP_TRANSPORT=streamable-http MCP_PORT=8000 uv run server.py

Conecte-se via http://localhost:8000/mcp.

Esse modo é útil para equipes compartilhadas ou implantações hospedadas na nuvem.


Exemplos de Uso

Via Claude Desktop

Depois de instalado, você pode fazer perguntas em linguagem natural ao Claude, como:

  • "Mostre-me todas as políticas de firewall que bloqueiam tráfego"
  • "Quais túneis IPsec estão atualmente inativos?"
  • "Liste todas as interfaces com seus endereços IP"
  • "Qual rota seria usada para alcançar 8.8.8.8?"
  • "Mostre as 20 principais fontes de tráfego no FortiView"
  • "Há alguma tentativa de login de administrador falha nos logs?"

Invocações Diretas de Ferramentas

# 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")

Estrutura do Projeto

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 Segurança

  • O token de API concede o mesmo nível de acesso que seu perfil de administrador associado. Siga o princípio do menor privilégio — crie um perfil restrito se você precisar apenas de acesso de leitura.
  • Defina FORTIOS_VERIFY_SSL=true em produção e garanta que seu FortiGate tenha um certificado TLS válido.
  • O servidor executa localmente via stdio por padrão — ele não é exposto na rede, a menos que o modo HTTP esteja habilitado.
  • Nunca faça commit do seu arquivo .env nem exponha seu token de API em logs, issues ou código.
  • Roteie seu token de API regularmente e revogue-o imediatamente se for comprometido.

Contribuição

Contribuições são bem-vindas! Leia o CONTRIBUTING.md antes de enviar um pull request.


Licença

Este projeto está licenciado sob a Licença MIT — consulte LICENSE para detalhes.

Aviso: Este projeto não é afiliado nem endossado pela Fortinet, Inc. FortiOS e FortiGate são marcas registradas da Fortinet, Inc.