Unofficial FortiMonitor MCP Server
About
Unofficial FortiMonitor v2 API integration exposing 241 tools across 33 modules. Covers server management, outage monitoring, maintenance windows, metrics, notifications, SNMP, cloud monitoring, dashboards, and more. Python, MIT license, Docker deployment.
Details
- Author
- gjenkins20
- Categories
- Cloud Service, Infrastructure
Jump to
Setup
Install Unofficial FortiMonitor MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/gjenkins20/unofficial-fortimonitor-mcp-server
Follow the installation instructions in the repository README, then restart your MCP client.
Unofficial FortiMonitor v2 API integration exposing 241 tools across 33 modules. Covers server management, outage monitoring, maintenance windows, metrics, notifications, SNMP, cloud monitoring, dashboards, and more. Python, MIT license, Docker deployment.
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 toolsacross 33 modules providing near-complete coverage of the FortiMonitor v2 API.
- 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
# 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
SeeDOCKER_DEPLOYMENT.mdfor detailed Docker instructions.
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
cp .env.example .env # Edit .env with your FortiMonitor API key
Option C: Windows (Claude Desktop / Claude Code)
Seedocs/WINDOWS_DEPLOYMENT.mdfor step-by-step Windows instructions.
FORTIMONITOR_BASE_URL=https://api2.panopta.com/v2 FORTIMONITOR_API_KEY=your_api_key_here LOG_LEVEL=INFO
The server exposes 241 MCP tools organized into the following categories. For full parameter details, see theEnd-User Guide.
Add to Claude Desktop config (claude_desktop_config.json):
{ "mcpServers": { "fortimonitor": { "command": "docker", "args": ["exec", "-i", "unofficial-fortimonitor-mcp", "python", "-m", "src.server"] } } }
{ "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" } } } }
Note:Claude Desktop does not reliably setcwd, so use the full path to the installed entrypoint script and setPYTHONPATHexplicitly. SetENABLE_SCHEMA_CACHE=falseto avoid[Errno 30] Read-only file systemerrors when the server cannot write to the defaultcache/directory. Alternatively, setSCHEMA_CACHE_DIRto an absolute writable path to keep caching enabled.
The server automatically discovers and caches FortiMonitor API schemas for validation and documentation. Schemas are cached incache/schemas/by default.
- /schema/resources- Lists all available API resources
- /schema/resources/{resource_name}- Get schema for specific resource
pytest tests/ --cov=src --cov-report=html
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
- 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"
- Check network connectivity
- Verifycache/schemas/directory exists and is writable
- Clear cache and retry:rm -rf cache/schemas/*
- Check Claude Desktop config syntax
- Verify file paths are absolute
- Restart Claude Desktop completely
- Check server logs for startup errors
Built byGregori Jenkins— originally from Chicago, a humble student of Computer Science, and a proud cat dad.
Navigate your Aiven projects and interact with the PostgreSQL®, Apache Kafka®, ClickHouse® and OpenSearch® services
Yunxiao MCP Server provides AI assistants with the ability to interact with the Yunxiao platform.
Get prescriptive CDK advice, explain CDK Nag rules, check suppressions, generate Bedrock Agent schemas, and discover AWS Solutions Constructs patterns.
This AWS Labs Model Context Protocol (MCP) server for CloudTrail enables your AI agents to query AWS account activity for security investigations, compliance auditing, and operational troubleshooting.
Core AWS MCP server providing prompt understanding and server management capabilities.
Analyze CDK projects to identify AWS services used and get pricing information from AWS pricing webpages and API.
Query and analyze your Axiom logs, traces, and all other event data in natural language
Manage and interact with Microsoft Azure services.
Bastion: External Attack Surface Monitoring
Ask your AI assistant about your attack surface: run scans, catch expiring certificates and domains, triage findings, and generate reports.
Agent-ready global image CDN that AI agents can install and operate through MCP.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.

