mcfortigate
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FORTIGATE_HOST | No | Hostname or IP address of the FortiGate appliance. | |
| FORTIGATE_NAME | No | Optional name for the appliance. | |
| FORTIGATE_PORT | No | Optional: HTTPS port for the FortiGate API. | |
| FORTIGATE_VDOM | No | Optional VDOM to use. | |
| FORTIGATE_TOKEN | No | REST API token for authenticating with the FortiGate. | |
| FORTIGATE_TARGETS | No | JSON object defining multiple FortiGate appliances. The keys become the 'target' argument on every tool. Each value should include 'host' and either 'token' or 'username'/'password'. | |
| FORTIGATE_TIMEOUT | No | Optional: request timeout in seconds. | |
| FORTIGATE_PASSWORD | No | Password for authentication as a fallback on older firmware. | |
| FORTIGATE_USERNAME | No | Username for authentication as a fallback on older firmware. | |
| FORTIGATE_VERIFY_SSL | No | Optional: whether to verify SSL certificates (e.g., 'true' or 'false'). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_targetsA | List the FortiGate appliances this server can reach. Call this first when several appliances may be configured, since every other tool takes an optional target argument naming one of these. When exactly one is configured, that argument can be omitted entirely. Credentials are never included in the response. |
| get_system_statusA | Report appliance identity and health: model, serial, firmware, load. The serial and firmware version come from the response envelope rather than the body. FortiOS puts them as siblings of the results object on every cmdb call, and helpers that unwrap straight to results discard them, which is why they appear missing from the API until you read the raw response. Fields that a given firmware does not report are omitted rather than returned as null, so an absent key means the appliance did not offer the value. FortiOS 7.0.14, for instance, reports no uptime anywhere in the monitor tree. |
| search_configA | Search the whole configuration for a term, across every object type. Looks through address objects and groups, services, interfaces, static routes, and optionally policies, matching names, values, comments, and member lists. This is the tool for an open question such as "where does 203.0.113.0/24 appear" or "what mentions guest", when you do not yet know which kind of object holds the answer. Check |
| list_address_objectsA | List firewall address objects, optionally filtered. Address objects are the named source and destination values that policies reference. Each is reported with its type and a single readable value, so a subnet object shows CIDR, an FQDN object shows the hostname, and a MAC object shows the MAC addresses. Compare |
| list_address_groupsA | List firewall address groups and their members. Compare |
| list_servicesA | List firewall service objects with their protocols and ports. Compare |
| list_policiesA | List firewall policies in evaluation order, optionally filtered. Policies come back in the order FortiOS evaluates them, and each carries
an explicit Three counts appear and they mean different things. The filters match names exactly and do not expand indirection. A policy
referencing a group that contains your address will not match |
| list_vipsA | List virtual IPs, which are the destination NAT rules. A VIP maps an external address, and optionally an external port, to an internal one. FortiOS stores those addresses inline on the VIP rather than as references to address objects. Compare |
| find_referencesA | Find what references an address, service, or interface, before changing it. This answers the question that precedes every firewall change, which is whether something is safe to touch. The authority is the appliance itself. FortiOS exposes the same
reference lookup its web UI uses, which knows every table that can hold
a reference, seventy-four of them for a firewall address on 7.0.14. This
tool asks that endpoint and reports what it says in Read
The two lists count different things, and will disagree without being
in conflict. Containers are walked through, and the results are kept separate.
|
| list_interfacesA | List interfaces with their addresses, VLAN tags, and link state. FortiOS creates bookkeeping interfaces alongside real ones, such as the
quarantine interface that accompanies every wireless VAP. Those are
hidden by default and named in Which ones count as bookkeeping is decided by the appliance rather than
by the name. FortiOS reports whether each interface is offered as a
policy endpoint, and anything it offers is shown regardless of what it
is called, so this tool cannot hide an interface a policy could name.
Filters narrow the list silently unless you read An interface that holds no address reports |
| list_vlansA | List VLAN sub-interfaces with their tags and parent interfaces. A focused view of the VLAN subset of the interface table, since what
VLANs exist and what they attach to is asked far more often than the full
interface list. FortiOS quarantine VLANs are excluded, and |
| list_static_routesA | List configured static routes. These are the routes an operator configured, which is not the same as the routes in use. A DHCP-assigned default route never appears here because it was never configured. Use get_routing_table for what the appliance is actually forwarding on. A route whose destination is a named address object is resolved to the underlying CIDR where possible, with the object name kept alongside it. |
| get_routing_tableA | Show the active IPv4 routing table as the appliance is forwarding it. This is live state rather than configuration, so it includes connected routes, dynamically learned routes, and routes handed over by DHCP, none of which appear in the static route configuration. |
| list_wifi_clientsA | List wireless clients currently associated, enriched with DHCP and ARP. Each client is joined against the DHCP lease and ARP tables by MAC, which is what turns an anonymous MAC into a recognizable device. The hostname comes from the DHCP lease, falling back to the vendor class identifier when the client sent no name. MAC addresses are reported in one canonical lowercase colon-separated form whatever spelling the source used, since that is what makes the join work at all.
|
| list_dhcp_leasesA | List current DHCP leases issued by the appliance. Read |
| get_arp_tableA | Show the ARP table, which is the IP-to-MAC bindings the appliance sees. ARP catches devices DHCP does not, meaning anything with a static address, so it is the fallback when a device is present but holds no lease. MAC addresses are reported in one canonical form. |
| find_deviceA | Identify a device on the network by MAC, IP, or hostname fragment. Searches the wireless client list, the DHCP lease table, and the ARP table together, then merges everything known about each matching device into one record. A device seen in several places produces one result rather than three partial ones. This is the tool for questions like "what is 198.51.100.47", "is that laptop on the network", or "which SSID is this MAC on". A MAC query matches whatever punctuation the appliance used, so
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Each tool targets a clearly distinct FortiGate resource or action. Overlaps such as list_interfaces vs list_vlans, find_device vs the individual client/lease/ARP lists, and find_references vs search_config are explicitly distinguished in the descriptions.
All tools follow a consistent snake_case verb_noun pattern: list_*, get_*, find_*, search_*. The verb choice accurately reflects the operation, with no mixing of conventions.
17 tools is slightly above the typical 3-15 range, but each covers a distinct inspection surface for FortiGate appliances. A few could be consolidated (e.g. list_vlans as a filtered list_interfaces), but the count is reasonable for the domain breadth.
The set provides broad read-only coverage of firewall policies, addresses, services, interfaces, routes, references, and client/lease/ARP data. Some useful read surfaces are missing (logs, security profiles, zones/schedules, single-object detail beyond list filters), and mutation operations appear intentionally out of scope.