Sponsored by Deepsite.site

Unofficial Fortimonitor Mcp Server

Created By
gjenkins2016 days ago
MCP server for the FortiMonitor v2 monitoring API. 241 tools across 33 modules covering server management, outage monitoring, maintenance windows, metrics, notifications, cloud monitoring, SNMP, dashboards, reporting, and more. Unofficial community project, not affiliated with Fortinet. Python, MIT license, Docker and local deployment supported.
Overview

Unofficial FortiMonitor MCP Server

Disclaimer: This is an unofficial community project. It is not affiliated with, endorsed by, or supported by Fortinet, Inc. or the FortiMonitor/Panopta team. "FortiMonitor" and "Fortinet" are trademarks of Fortinet, Inc. Use at your own risk.

Model Context Protocol (MCP) server for FortiMonitor/Panopta v2 API integration with Claude AI.

241 tools across 33 modules providing near-complete coverage of the FortiMonitor v2 API.

Features

  • Server Management — CRUD, tagging, attributes, DNS flush, path monitoring, logs
  • Outage Monitoring — Query, acknowledge, escalate, broadcast, delay, historical incidents
  • Metrics & Resources — Agent resources, SNMP resources, thresholds, metric graphs
  • Maintenance Windows — Create, extend, pause, resume, terminate schedules
  • Server Groups — Group CRUD, membership, compound services, child groups, monitoring policies
  • Templates — Create, apply, reapply monitoring templates to servers and groups
  • Notifications — Schedules, contacts, contact groups, rotating on-call contacts
  • Cloud Monitoring — Providers, credentials, discovery, regions, services
  • DEM — Digital Experience Monitoring applications, instances, locations
  • Compound Services — Aggregated service CRUD, thresholds, availability, response time
  • Dashboards & Status Pages — CRUD for monitoring dashboards and public status pages
  • Reporting — System health summary, outage statistics, availability reports, CSV exports
  • SNMP — Credentials, discovery, resource CRUD, metrics
  • OnSight — On-premises monitoring instances and groups
  • Fabric Connections — Integration management
  • Countermeasures — Automated remediation on network services and thresholds
  • User Management — User CRUD, roles, addons
  • Reference Data — Contact types, timezones, roles, account history, server attribute types
  • Docker Support — Easy deployment via Docker containers
  • Windows Support — Native deployment on Windows for Claude Desktop and Claude Code

Quick Start

# 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

See DOCKER_DEPLOYMENT.md for detailed Docker instructions.

Option B: Local Installation

1. Install dependencies

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

2. Configure environment

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

3. Test connectivity

python test_connectivity.py

4. Run the server

python -m src.server

Option C: Windows (Claude Desktop / Claude Code)

See docs/WINDOWS_DEPLOYMENT.md for step-by-step Windows instructions.

Configuration

Edit .env:

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

Available Tools (241)

The server exposes 241 MCP tools organized into the following categories. For full parameter details, see the End-User Guide.

CategoryModule(s)ToolsDescription
Serversservers, server_enhanced21List, detail, CRUD, attributes, logs, DNS, path monitoring
Outagesoutages, outage_management, outage_enhanced22Query, health check, acknowledge, escalate, broadcast, delay, historical
Metricsmetrics, agent_resources6Server metrics, agent resource types, resource details
Maintenanceserver_management, maintenance_enhanced12Status management, maintenance window CRUD, extend, pause, resume
Bulk Operationsbulk_operations6Bulk acknowledge, bulk tags, advanced search, active outages
Server Groupsserver_groups, server_groups_enhanced12Group CRUD, membership, policies, compound services, child groups
Templatestemplates, templates_enhanced8Template CRUD, apply to server/group, reapply
Notificationsnotifications, notifications_enhanced14Schedules, contacts, groups, schedule CRUD, sub-resource queries
Contactscontacts_enhanced, rotating_contacts18Contact CRUD, contact info, contact groups, on-call rotations
Cloudcloud15Providers, credentials, discovery, regions, services
DEMdem10Applications, instances, locations, path monitoring
Compound Servicescompound_services11Service CRUD, thresholds, availability, network services, response time
Dashboardsdashboards5Dashboard CRUD
Status Pagesstatus_pages5Public status page CRUD
Network Servicesnetwork_services5Server network service CRUD, response time
Monitoring Nodesmonitoring_nodes2List and detail monitoring nodes
Network Service Typesnetwork_service_types2List and detail service types
Reportingreporting10Health summary, statistics, top alerting, exports, availability reports
Usersusers6User CRUD, addons
Reference Datareference_data13Account history, contact types, roles, timezones, attribute types
SNMPsnmp12Credentials CRUD, discovery, resource CRUD, metrics
OnSightonsight12OnSight CRUD, groups, countermeasures, servers
Fabricfabric4Fabric connection CRUD
Countermeasurescountermeasures20Network service & threshold countermeasures, outage metadata, thresholds

Integration with Claude Desktop

Add to Claude Desktop config (claude_desktop_config.json):

First, ensure the container is running:

docker-compose up -d

Then add to your Claude Desktop config:

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

Option B: Using Local Python

{
  "mcpServers": {
    "fortimonitor": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/unofficial-fortimonitor-mcp-server",
      "env": {
        "FORTIMONITOR_BASE_URL": "https://api2.panopta.com/v2",
        "FORTIMONITOR_API_KEY": "your_key"
      }
    }
  }
}

API Documentation

The server automatically discovers and caches FortiMonitor API schemas for validation and documentation. Schemas are cached in cache/schemas/ by default.

Schema Endpoints

  • /schema/resources - Lists all available API resources
  • /schema/resources/{resource_name} - Get schema for specific resource

Development

Run tests

pytest tests/ -v

Run tests with coverage

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

Format code

black src/ tests/

Type checking

mypy src/

Lint

flake8 src/ tests/

Project Structure

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

Troubleshooting

Authentication Errors

  • Verify API key in .env
  • Check base URL is correct (https://api2.panopta.com/v2)
  • Test API key with curl:
    curl "https://api2.panopta.com/v2/server?api_key=YOUR_KEY&limit=1"
    

Schema Discovery Failures

  • Check network connectivity
  • Verify cache/schemas/ directory exists and is writable
  • Clear cache and retry: rm -rf cache/schemas/*

MCP Server Not Appearing in Claude

  • Check Claude Desktop config syntax
  • Verify file paths are absolute
  • Restart Claude Desktop completely
  • Check server logs for startup errors

About the Developer

Built by Gregori Jenkins — originally from Chicago, a humble student of Computer Science, and a proud cat dad.

Connect on LinkedIn

License

MIT License — see LICENSE for details.

Server Config

{
  "mcpServers": {
    "fortimonitor": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "unofficial-fortimonitor-mcp",
        "python",
        "-m",
        "src.server"
      ]
    }
  }
}
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
CursorThe AI Code Editor
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
DeepChatYour AI Partner on Desktop
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.
Serper MCP ServerA Serper MCP Server
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
WindsurfThe new purpose-built IDE to harness magic
Tavily Mcp
ChatWiseThe second fastest AI chatbot™
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
Playwright McpPlaywright MCP server
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
Amap Maps高德地图官方 MCP Server