Unofficial FortiMonitor MCP Server

Integração não oficial da API FortiMonitor v2, expondo 241 ferramentas em 33 módulos. Abrange gerenciamento de servidores, monitoramento de falhas, janelas de manutenção, métricas, notificações, SNMP, monitoramento em nuvem, painéis e muito mais. Python, licença MIT, implantação via Docker.

Documentação

Unofficial FortiMonitor MCP Server

Aviso: Este é um projeto comunitário não oficial. Não é afiliado, endossado ou suportado pela Fortinet, Inc. ou pela equipe FortiMonitor/Panopta. "FortiMonitor" e "Fortinet" são marcas registradas da Fortinet, Inc. Use por sua conta e risco.

Servidor Model Context Protocol (MCP) para integração com a API v2 do FortiMonitor/Panopta com Claude AI.

241 ferramentas em 33 módulos, fornecendo cobertura quase completa da API v2 do FortiMonitor.

Recursos

  • Gerenciamento de Servidores — CRUD, marcação, atributos, limpeza de DNS, monitoramento de caminho, logs
  • Monitoramento de Indisponibilidades — Consulta, reconhecimento, escalonamento, transmissão, atraso, incidentes históricos
  • Métricas e Recursos — Recursos de agente, recursos SNMP, limites, gráficos de métricas
  • Janelas de Manutenção — Criar, estender, pausar, retomar, encerrar agendamentos
  • Grupos de Servidores — CRUD de grupos, associação, serviços compostos, subgrupos, políticas de monitoramento
  • Modelos — Criar, aplicar, reaplicar modelos de monitoramento a servidores e grupos
  • Notificações — Agendamentos, contatos, grupos de contatos, contatos de plantão rotativos
  • Monitoramento em Nuvem — Provedores, credenciais, descoberta, regiões, serviços
  • DEM — Aplicações de Monitoramento de Experiência Digital, instâncias, locais
  • Serviços Compostos — CRUD de serviços agregados, limites, disponibilidade, tempo de resposta
  • Painéis e Páginas de Status — CRUD para painéis de monitoramento e páginas de status públicas
  • Relatórios — Resumo de saúde do sistema, estatísticas de indisponibilidade, relatórios de disponibilidade, exportações CSV
  • SNMP — Credenciais, descoberta, CRUD de recursos, métricas
  • OnSight — Instâncias e grupos de monitoramento locais
  • Conexões Fabric — Gerenciamento de integração
  • Contramedidas — Remediação automatizada em serviços de rede e limites
  • Gerenciamento de Usuários — CRUD de usuários, funções, complementos
  • Dados de Referência — Tipos de contato, fusos horários, funções, histórico da conta, tipos de atributos de servidor
  • Suporte a Docker — Implantação fácil via contêineres Docker
  • Suporte a Windows — Implantação nativa no Windows para Claude Desktop e Claude Code

Início Rápido

Opção A: Docker (Recomendado)

# Run with Docker
docker run -d \
  --name unofficial-fortimonitor-mcp \
  -e FORTIMONITOR_API_KEY=your-api-key-here \
  gjenkins20/unofficial-fortimonitor-mcp:latest

# Or use Docker Compose
cp .env.example .env
# Edit .env and set your API key
docker-compose up -d

Consulte DOCKER_DEPLOYMENT.md para instruções detalhadas sobre Docker.

Opção B: Instalação Local

1. Instalar dependências

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

2. Configurar ambiente

cp .env.example .env
# Edit .env with your FortiMonitor API key

3. Testar conectividade

python test_connectivity.py

4. Executar o servidor

python -m src.server

Opção C: Windows (Claude Desktop / Claude Code)

Consulte docs/WINDOWS_DEPLOYMENT.md para instruções passo a passo para Windows.

Configuração

Edite .env:

FORTIMONITOR_BASE_URL=https://api2.panopta.com/v2
FORTIMONITOR_API_KEY=your_api_key_here
LOG_LEVEL=INFO

Ferramentas Disponíveis (241)

O servidor expõe 241 ferramentas MCP organizadas nas seguintes categorias. Para detalhes completos dos parâmetros, consulte o Guia do Usuário Final.

CategoriaMódulo(s)FerramentasDescrição
Servidoresservers, server_enhanced21Listar, detalhar, CRUD, atributos, logs, DNS, monitoramento de caminho
Indisponibilidadesoutages, outage_management, outage_enhanced22Consulta, verificação de saúde, reconhecimento, escalonamento, transmissão, atraso, histórico
Métricasmetrics, agent_resources6Métricas de servidor, tipos de recursos de agente, detalhes de recursos
Manutençãoserver_management, maintenance_enhanced12Gerenciamento de status, CRUD de janelas de manutenção, estender, pausar, retomar
Operações em Massabulk_operations6Reconhecimento em massa, tags em massa, pesquisa avançada, indisponibilidades ativas
Grupos de Servidoresserver_groups, server_groups_enhanced12CRUD de grupos, associação, políticas, serviços compostos, subgrupos
Modelostemplates, templates_enhanced8CRUD de modelos, aplicar a servidor/grupo, reaplicar
Notificaçõesnotifications, notifications_enhanced14Agendamentos, contatos, grupos, CRUD de agendamentos, consultas de sub-recursos
Contatoscontacts_enhanced, rotating_contacts18CRUD de contatos, informações de contato, grupos de contatos, rotações de plantão
Nuvemcloud15Provedores, credenciais, descoberta, regiões, serviços
DEMdem10Aplicações, instâncias, locais, monitoramento de caminho
Serviços Compostoscompound_services11CRUD de serviços, limites, disponibilidade, serviços de rede, tempo de resposta
Painéisdashboards5CRUD de painéis
Páginas de Statusstatus_pages5CRUD de páginas de status públicas
Serviços de Redenetwork_services5CRUD de serviços de rede do servidor, tempo de resposta
Nós de Monitoramentomonitoring_nodes2Listar e detalhar nós de monitoramento
Tipos de Serviço de Redenetwork_service_types2Listar e detalhar tipos de serviço
Relatóriosreporting10Resumo de saúde, estatísticas, principais alertas, exportações, relatórios de disponibilidade
Usuáriosusers6CRUD de usuários, complementos
Dados de Referênciareference_data13Histórico da conta, tipos de contato, funções, fusos horários, tipos de atributos
SNMPsnmp12CRUD de credenciais, descoberta, CRUD de recursos, métricas
OnSightonsight12CRUD de OnSight, grupos, contramedidas, servidores
Fabricfabric4CRUD de conexão Fabric
Contramedidascountermeasures20Contramedidas de serviços de rede e limites, metadados de indisponibilidade, limites

Integração com Claude Desktop

Adicione à configuração do Claude Desktop (claude_desktop_config.json):

Opção A: Usando Docker (Recomendado)

Primeiro, garanta que o contêiner esteja em execução:

docker-compose up -d

Em seguida, adicione à sua configuração do Claude Desktop:

{
  "mcpServers": {
    "fortimonitor": {
      "command": "docker",
      "args": ["exec", "-i", "unofficial-fortimonitor-mcp", "python", "-m", "src.server"]
    }
  }
}

Opção B: Usando Python Local

{
  "mcpServers": {
    "fortimonitor": {
      "command": "/path/to/unofficial-fortimonitor-mcp-server/.venv/bin/unofficial-fortimonitor-mcp",
      "args": [],
      "env": {
        "FORTIMONITOR_API_KEY": "your_key",
        "FORTIMONITOR_BASE_URL": "https://api2.panopta.com/v2",
        "PYTHONPATH": "/path/to/unofficial-fortimonitor-mcp-server",
        "ENABLE_SCHEMA_CACHE": "false"
      }
    }
  }
}

Nota: O Claude Desktop não define de forma confiável cwd, então use o caminho completo para o script de ponto de entrada instalado e defina PYTHONPATH explicitamente. Defina ENABLE_SCHEMA_CACHE=false para evitar erros de [Errno 30] Read-only file system quando o servidor não puder gravar no diretório padrão cache/. Alternativamente, defina SCHEMA_CACHE_DIR para um caminho absoluto gravável para manter o cache ativado.

Documentação da API

O servidor descobre e armazena em cache automaticamente os esquemas da API do FortiMonitor para validação e documentação. Os esquemas são armazenados em cache em cache/schemas/ por padrão.

Endpoints de Esquema

  • /schema/resources - Lista todos os recursos de API disponíveis
  • /schema/resources/{resource_name} - Obtém o esquema para um recurso específico

Desenvolvimento

Executar testes

pytest tests/ -v

Executar testes com cobertura

pytest tests/ --cov=src --cov-report=html

Formatar código

black src/ tests/

Verificação de tipos

mypy src/

Lint

flake8 src/ tests/

Estrutura do Projeto

unofficial-fortimonitor-mcp-server/
├── README.md
├── FORTIMONITOR_API_DOCS.md        # FortiMonitor API documentation
├── Dockerfile                      # Container definition
├── docker-compose.yml              # Docker Compose config
├── requirements.txt
├── pyproject.toml
├── .env.example
├── .gitignore
├── .dockerignore
├── test_connectivity.py
├── scripts/                        # Build and deployment scripts
│   ├── build.sh / build.bat
│   ├── test-container.sh / test-container.bat
│   ├── push.sh
│   └── release.sh
├── .github/
│   └── workflows/
│       └── docker-build.yml        # CI/CD pipeline
├── src/
│   ├── __init__.py
│   ├── __main__.py
│   ├── server.py                   # MCP server entrypoint, dispatch registry
│   ├── config.py                   # Pydantic settings from env vars / .env
│   ├── fortimonitor/
│   │   ├── client.py               # Synchronous HTTP client (requests lib)
│   │   ├── schema.py               # Schema discovery & caching
│   │   ├── models.py               # Pydantic data models (~50 models)
│   │   └── exceptions.py           # Custom exceptions
│   └── tools/                      # 33 tool module files (241 tools)
│       ├── servers.py              # Server list/detail
│       ├── server_enhanced.py      # Server CRUD, attributes, logs, path monitoring
│       ├── outages.py              # Outage queries, health check
│       ├── outage_management.py    # Acknowledge, notes, details
│       ├── outage_enhanced.py      # Broadcast, escalate, delay, historical
│       ├── metrics.py              # Server metrics
│       ├── agent_resources.py      # Agent resource types & details
│       ├── server_management.py    # Status management, maintenance
│       ├── maintenance_enhanced.py # Maintenance CRUD, extend, pause
│       ├── bulk_operations.py      # Bulk ops, advanced search
│       ├── server_groups.py        # Server group CRUD
│       ├── server_groups_enhanced.py # Group members, policies, children
│       ├── templates.py            # Template list/detail/apply
│       ├── templates_enhanced.py   # Template CRUD, reapply
│       ├── notifications.py        # Notification schedules/contacts/groups
│       ├── notifications_enhanced.py # Schedule CRUD, sub-resources
│       ├── contacts_enhanced.py    # Contact CRUD, info, groups
│       ├── rotating_contacts.py    # On-call rotation management
│       ├── network_services.py     # Network service CRUD, response time
│       ├── network_service_types.py # Service type list/detail
│       ├── monitoring_nodes.py     # Monitoring node list/detail
│       ├── cloud.py                # Cloud providers, credentials, discovery
│       ├── dem.py                  # DEM applications, instances, locations
│       ├── compound_services.py    # Compound service CRUD, thresholds
│       ├── dashboards.py           # Dashboard CRUD
│       ├── status_pages.py         # Status page CRUD
│       ├── reporting.py            # Health, stats, exports, availability
│       ├── users.py                # User CRUD, addons
│       ├── reference_data.py       # Account history, types, roles, timezones
│       ├── snmp.py                 # SNMP credentials, discovery, resources
│       ├── onsight.py              # OnSight CRUD, groups
│       ├── fabric.py               # Fabric connection CRUD
│       └── countermeasures.py      # Countermeasures, thresholds, metadata
├── tests/
│   ├── conftest.py                 # Test fixtures
│   ├── test_client.py              # API client tests
│   ├── test_tools.py               # Original tool tests
│   ├── test_tool_definitions.py    # Tool definition validation
│   ├── test_dict_tool_handlers.py  # Dict-pattern handler tests
│   ├── test_registry.py            # Registry build tests
│   └── test_server.py              # Server integration tests
├── cache/
│   └── schemas/                    # Cached API schemas
└── docs/
    ├── USER_GUIDE.md               # End-user guide
    ├── DEVELOPER_GUIDE.md          # Developer/contributor guide
    └── WINDOWS_DEPLOYMENT.md       # Windows setup for Claude Desktop/Code

Solução de Problemas

Erros de Autenticação

  • Verifique a chave de API em .env
  • Verifique se a URL base está correta (https://api2.panopta.com/v2)
  • Teste a chave de API com curl:
    curl "https://api2.panopta.com/v2/server?api_key=YOUR_KEY&limit=1"
    

Falhas na Descoberta de Esquemas

  • Verifique a conectividade de rede
  • Verifique se o diretório cache/schemas/ existe e é gravável
  • Limpe o cache e tente novamente: rm -rf cache/schemas/*

Servidor MCP Não Aparece no Claude

  • Verifique a sintaxe da configuração do Claude Desktop
  • Verifique se os caminhos de arquivo são absolutos
  • Reinicie o Claude Desktop completamente
  • Verifique os logs do servidor para erros de inicialização

Sobre o Desenvolvedor

Construído por Gregori Jenkins — originalmente de Chicago, um humilde estudante de Ciência da Computação e um orgulhoso pai de gatos.

Conecte-se no LinkedIn

Licença

Licença MIT — consulte LICENSE para detalhes.