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.
| Categoria | Módulo(s) | Ferramentas | Descrição |
|---|---|---|---|
| Servidores | servers, server_enhanced | 21 | Listar, detalhar, CRUD, atributos, logs, DNS, monitoramento de caminho |
| Indisponibilidades | outages, outage_management, outage_enhanced | 22 | Consulta, verificação de saúde, reconhecimento, escalonamento, transmissão, atraso, histórico |
| Métricas | metrics, agent_resources | 6 | Métricas de servidor, tipos de recursos de agente, detalhes de recursos |
| Manutenção | server_management, maintenance_enhanced | 12 | Gerenciamento de status, CRUD de janelas de manutenção, estender, pausar, retomar |
| Operações em Massa | bulk_operations | 6 | Reconhecimento em massa, tags em massa, pesquisa avançada, indisponibilidades ativas |
| Grupos de Servidores | server_groups, server_groups_enhanced | 12 | CRUD de grupos, associação, políticas, serviços compostos, subgrupos |
| Modelos | templates, templates_enhanced | 8 | CRUD de modelos, aplicar a servidor/grupo, reaplicar |
| Notificações | notifications, notifications_enhanced | 14 | Agendamentos, contatos, grupos, CRUD de agendamentos, consultas de sub-recursos |
| Contatos | contacts_enhanced, rotating_contacts | 18 | CRUD de contatos, informações de contato, grupos de contatos, rotações de plantão |
| Nuvem | cloud | 15 | Provedores, credenciais, descoberta, regiões, serviços |
| DEM | dem | 10 | Aplicações, instâncias, locais, monitoramento de caminho |
| Serviços Compostos | compound_services | 11 | CRUD de serviços, limites, disponibilidade, serviços de rede, tempo de resposta |
| Painéis | dashboards | 5 | CRUD de painéis |
| Páginas de Status | status_pages | 5 | CRUD de páginas de status públicas |
| Serviços de Rede | network_services | 5 | CRUD de serviços de rede do servidor, tempo de resposta |
| Nós de Monitoramento | monitoring_nodes | 2 | Listar e detalhar nós de monitoramento |
| Tipos de Serviço de Rede | network_service_types | 2 | Listar e detalhar tipos de serviço |
| Relatórios | reporting | 10 | Resumo de saúde, estatísticas, principais alertas, exportações, relatórios de disponibilidade |
| Usuários | users | 6 | CRUD de usuários, complementos |
| Dados de Referência | reference_data | 13 | Histórico da conta, tipos de contato, funções, fusos horários, tipos de atributos |
| SNMP | snmp | 12 | CRUD de credenciais, descoberta, CRUD de recursos, métricas |
| OnSight | onsight | 12 | CRUD de OnSight, grupos, contramedidas, servidores |
| Fabric | fabric | 4 | CRUD de conexão Fabric |
| Contramedidas | countermeasures | 20 | Contramedidas 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 definaPYTHONPATHexplicitamente. DefinaENABLE_SCHEMA_CACHE=falsepara evitar erros de[Errno 30] Read-only file systemquando o servidor não puder gravar no diretório padrãocache/. Alternativamente, definaSCHEMA_CACHE_DIRpara 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.
Licença
Licença MIT — consulte LICENSE para detalhes.