Unofficial FortiMonitor MCP Server

Integración no oficial de la API de FortiMonitor v2 que expone 241 herramientas en 33 módulos. Cubre gestión de servidores, monitoreo de interrupciones, ventanas de mantenimiento, métricas, notificaciones, SNMP, monitoreo en la nube, paneles y más. Python, licencia MIT, implementación con Docker.

Documentación

Servidor MCP no oficial de FortiMonitor

Aviso legal: Este es un proyecto comunitario no oficial. No está afiliado, respaldado ni soportado por Fortinet, Inc. ni por el equipo de FortiMonitor/Panopta. "FortiMonitor" y "Fortinet" son marcas comerciales de Fortinet, Inc. Úselo bajo su propio riesgo.

Servidor de Protocolo de Contexto de Modelo (MCP) para la integración de la API v2 de FortiMonitor/Panopta con Claude AI.

241 herramientas en 33 módulos que brindan una cobertura casi completa de la API v2 de FortiMonitor.

Características

  • Gestión de servidores — CRUD, etiquetado, atributos, vaciado de DNS, monitoreo de rutas, registros
  • Monitoreo de interrupciones — Consulta, reconocimiento, escalamiento, transmisión, retraso, incidentes históricos
  • Métricas y recursos — Recursos de agentes, recursos SNMP, umbrales, gráficos de métricas
  • Ventanas de mantenimiento — Crear, extender, pausar, reanudar, finalizar programaciones
  • Grupos de servidores — CRUD de grupos, membresía, servicios compuestos, subgrupos, políticas de monitoreo
  • Plantillas — Crear, aplicar, reaplicar plantillas de monitoreo a servidores y grupos
  • Notificaciones — Programaciones, contactos, grupos de contactos, contactos rotativos de guardia
  • Monitoreo en la nube — Proveedores, credenciales, descubrimiento, regiones, servicios
  • DEM — Aplicaciones, instancias, ubicaciones de monitoreo de experiencia digital
  • Servicios compuestos — CRUD de servicios agregados, umbrales, disponibilidad, tiempo de respuesta
  • Paneles y páginas de estado — CRUD para paneles de monitoreo y páginas de estado públicas
  • Informes — Resumen de salud del sistema, estadísticas de interrupciones, informes de disponibilidad, exportaciones CSV
  • SNMP — Credenciales, descubrimiento, CRUD de recursos, métricas
  • OnSight — Instancias y grupos de monitoreo locales
  • Conexiones Fabric — Gestión de integraciones
  • Contramedidas — Remediación automatizada en servicios de red y umbrales
  • Gestión de usuarios — CRUD de usuarios, roles, complementos
  • Datos de referencia — Tipos de contacto, zonas horarias, roles, historial de cuentas, tipos de atributos de servidor
  • Soporte Docker — Implementación sencilla mediante contenedores Docker
  • Soporte Windows — Implementación nativa en Windows para Claude Desktop y Claude Code

Inicio rápido

Opción 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 obtener instrucciones detalladas sobre Docker.

Opción B: Instalación local

1. Instalar dependencias

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

2. Configurar el entorno

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

3. Probar la conectividad

python test_connectivity.py

4. Ejecutar el servidor

python -m src.server

Opción C: Windows (Claude Desktop / Claude Code)

Consulte docs/WINDOWS_DEPLOYMENT.md para obtener instrucciones paso a paso para Windows.

Configuración

Edite .env:

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

Herramientas disponibles (241)

El servidor expone 241 herramientas MCP organizadas en las siguientes categorías. Para obtener detalles completos de los parámetros, consulte la Guía del usuario final.

CategoríaMódulo(s)HerramientasDescripción
Servidoresservers, server_enhanced21Listar, detallar, CRUD, atributos, registros, DNS, monitoreo de rutas
Interrupcionesoutages, outage_management, outage_enhanced22Consulta, verificación de salud, reconocimiento, escalamiento, transmisión, retraso, histórico
Métricasmetrics, agent_resources6Métricas de servidor, tipos de recursos de agente, detalles de recursos
Mantenimientoserver_management, maintenance_enhanced12Gestión de estado, CRUD de ventanas de mantenimiento, extender, pausar, reanudar
Operaciones masivasbulk_operations6Reconocimiento masivo, etiquetas masivas, búsqueda avanzada, interrupciones activas
Grupos de servidoresserver_groups, server_groups_enhanced12CRUD de grupos, membresía, políticas, servicios compuestos, subgrupos
Plantillastemplates, templates_enhanced8CRUD de plantillas, aplicar a servidor/grupo, reaplicar
Notificacionesnotifications, notifications_enhanced14Programaciones, contactos, grupos, CRUD de programaciones, consultas de subrecursos
Contactoscontacts_enhanced, rotating_contacts18CRUD de contactos, información de contacto, grupos de contacto, rotaciones de guardia
Nubecloud15Proveedores, credenciales, descubrimiento, regiones, servicios
DEMdem10Aplicaciones, instancias, ubicaciones, monitoreo de rutas
Servicios compuestoscompound_services11CRUD de servicios, umbrales, disponibilidad, servicios de red, tiempo de respuesta
Panelesdashboards5CRUD de paneles
Páginas de estadostatus_pages5CRUD de páginas de estado públicas
Servicios de rednetwork_services5CRUD de servicios de red de servidor, tiempo de respuesta
Nodos de monitoreomonitoring_nodes2Listar y detallar nodos de monitoreo
Tipos de servicios de rednetwork_service_types2Listar y detallar tipos de servicios
Informesreporting10Resumen de salud, estadísticas, alertas principales, exportaciones, informes de disponibilidad
Usuariosusers6CRUD de usuarios, complementos
Datos de referenciareference_data13Historial de cuentas, tipos de contacto, roles, zonas horarias, tipos de atributos
SNMPsnmp12CRUD de credenciales, descubrimiento, CRUD de recursos, métricas
OnSightonsight12CRUD de OnSight, grupos, contramedidas, servidores
Fabricfabric4CRUD de conexiones Fabric
Contramedidascountermeasures20Contramedidas de servicios de red y umbrales, metadatos de interrupciones, umbrales

Integración con Claude Desktop

Agregue a la configuración de Claude Desktop (claude_desktop_config.json):

Opción A: Usando Docker (Recomendado)

Primero, asegúrese de que el contenedor esté en ejecución:

docker-compose up -d

Luego agregue a su configuración de Claude Desktop:

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

Opción 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: Claude Desktop no establece cwd de manera confiable, así que use la ruta completa al script de punto de entrada instalado y establezca PYTHONPATH explícitamente. Establezca ENABLE_SCHEMA_CACHE=false para evitar errores de [Errno 30] Read-only file system cuando el servidor no pueda escribir en el directorio predeterminado cache/. Alternativamente, establezca SCHEMA_CACHE_DIR a una ruta absoluta escribible para mantener el almacenamiento en caché habilitado.

Documentación de la API

El servidor descubre y almacena automáticamente en caché los esquemas de la API de FortiMonitor para validación y documentación. Los esquemas se almacenan en cache/schemas/ de forma predeterminada.

Puntos finales de esquema

  • /schema/resources - Lista todos los recursos de API disponibles
  • /schema/resources/{resource_name} - Obtiene el esquema de un recurso específico

Desarrollo

Ejecutar pruebas

pytest tests/ -v

Ejecutar pruebas con cobertura

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

Formatear código

black src/ tests/

Verificación de tipos

mypy src/

Lint

flake8 src/ tests/

Estructura del proyecto

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

Solución de problemas

Errores de autenticación

  • Verifique la clave de API en .env
  • Compruebe que la URL base sea correcta (https://api2.panopta.com/v2)
  • Pruebe la clave de API con curl:
    curl "https://api2.panopta.com/v2/server?api_key=YOUR_KEY&limit=1"
    

Fallos en el descubrimiento de esquemas

  • Compruebe la conectividad de red
  • Verifique que el directorio cache/schemas/ exista y sea escribible
  • Limpie la caché y reintente: rm -rf cache/schemas/*

El servidor MCP no aparece en Claude

  • Compruebe la sintaxis de configuración de Claude Desktop
  • Verifique que las rutas de archivo sean absolutas
  • Reinicie Claude Desktop por completo
  • Compruebe los registros del servidor para detectar errores de inicio

Acerca del desarrollador

Creado por Gregori Jenkins — originario de Chicago, un humilde estudiante de Ciencias de la Computación y un orgulloso padre de gatos.

Conectar en LinkedIn

Licencia

Licencia MIT — consulte LICENSE para obtener más detalles.