MCP server for FortiGate / FortiOS — question-shaped tools for firewall, network, and live-client diagnostics.
11 tools with consistent naming (verb_noun pattern: list_, get_, search_, find_) and clear descriptions (50-150 chars, well above 20-char floor). All tools are READ_ONLY, reducing security risk. Input schemas present for all tools with target/vdom parameters properly typed as strings with descriptions. However, output schemas are NOT documented in the source code, critical gap for LLM planning. Parameter descriptions are adequate but lack format constraints (e.g., no regex for IP/MAC in find_device, no enum for vdom). Error handling and recovery guidance absent from visible code. Tool composition is sound (each does one thing), but no pagination support visible despite tools returning potentially large lists (policies, interfaces, address objects).
Find a device on the network by IP address, MAC address, or hostname using DHCP leases, ARP, and WiFi client data.
Find all policies, groups, and other objects that reference a given object, and report whether it is safe to delete.
Read the live routing table, showing what routes are currently active on the appliance.
Read the appliance's model, serial number, firmware version, and uptime.
List all address objects configured on the appliance.
List all interfaces on the appliance with their configuration and current status.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., does list_policies return policy_id, policy_name, both?). Critical for multi-step agent reasoning.
No pagination support visible for list_* tools. Large result sets (e.g., 500+ policies) will blow context window. Missing limit, offset/cursor, and total_count in schema.
find_device query parameter lacks format constraints. No guidance on valid IP (v4/v6), MAC (colon/dash/no-separator), or hostname formats. LLMs will pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2025-06-18+ | v2 |
List all firewall policies in evaluation order with their source, destination, service, and action.
List all custom service objects configured on the appliance.
Enumerate configured FortiGate appliances and their reachability.
List all VLANs and the interfaces they are configured on.
Search across all address objects, services, interfaces, routes, and policies for a term.
No error handling or recovery guidance visible in tool definitions. If a target is unreachable or vdom invalid, what does the LLM see? No actionable error messages documented.
vdom parameter description says 'optional, uses target default if not specified' but does not document what the default is or how to discover available vdoms. Agents cannot reason about vdom selection.