mcp-opnsense
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPNSENSE_URL | Yes | OPNsense base URL (e.g. https://192.168.1.1) | |
| OPNSENSE_API_KEY | Yes | API key for authentication | |
| OPNSENSE_TIMEOUT | No | Request timeout in milliseconds | 30000 |
| OPNSENSE_API_SECRET | Yes | API secret for authentication | |
| OPNSENSE_VERIFY_SSL | No | Set to false for self-signed certificates | true |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| opnsense_dns_list_overridesA | List all DNS host overrides (A/AAAA/CNAME records) configured in Unbound |
| opnsense_dns_add_overrideA | Add a DNS host override (A/AAAA/CNAME record) to Unbound. Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_delete_overrideA | Delete a DNS host override by UUID. Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_list_forwardsA | List all DNS-over-TLS forwarding servers configured in Unbound |
| opnsense_dns_add_forwardA | Add a DNS forwarding server (DNS-over-TLS). Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_delete_forwardA | Delete a DNS forwarding entry by UUID. Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_list_blocklistA | List all domain overrides (used for domain blocking) in Unbound |
| opnsense_dns_block_domainA | Block a domain by adding a domain override with an empty server. Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_unblock_domainA | Unblock a domain by deleting its domain override. Run opnsense_dns_apply afterwards to activate. |
| opnsense_dns_flush_cacheB | Flush the Unbound DNS resolver cache |
| opnsense_dns_diagnosticsB | Dump the current Unbound DNS cache for diagnostic purposes |
| opnsense_dns_applyA | Apply pending DNS/Unbound configuration changes (reconfigure service) |
| opnsense_dns_flush_zoneA | Flush all cached DNS entries for a specific domain/zone. Use this to clear stale SERVFAIL or outdated records for a domain. Restarts Unbound to ensure complete cache clearing. |
| opnsense_dns_cache_searchA | Search the Unbound DNS cache for entries matching a domain. Useful for diagnosing cached SERVFAIL, stale records, or verifying cache state. |
| opnsense_dns_statsA | Get Unbound DNS resolver statistics: query counts, cache hits/misses, uptime, and memory usage |
| opnsense_dns_infraA | Dump the Unbound infrastructure cache showing upstream server RTT, EDNS support, and lame delegation status. Useful for diagnosing upstream DNS connectivity issues. |
| opnsense_dns_blocklist_getA | Get the Unbound DNSBL (DNS blocklist) configuration: enabled flag, selected built-in source IDs, custom URLs, NX-domain mode, allowlist. Read-only. |
| opnsense_dns_blocklist_sources_listA | List all available built-in DNSBL block-list sources (curated feeds like AdGuard, EasyList, hagezi, Steven Black, etc.) with their internal IDs and selected state. Read-only. |
| opnsense_dns_blocklist_setA | Update the Unbound DNSBL configuration: enable/disable, select multiple built-in source IDs, set custom blocklist URLs, configure NX-domain mode. After this, call opnsense_dns_apply to activate. DESTRUCTIVE: requires explicit confirmation. |
| opnsense_fw_list_rulesA | List all firewall filter rules |
| opnsense_fw_add_ruleA | Add a new firewall filter rule. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_update_ruleA | Update an existing firewall filter rule by UUID. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_delete_ruleA | Delete a firewall filter rule by UUID. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_toggle_ruleA | Enable or disable a firewall rule by UUID. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_list_aliasesA | List all firewall aliases (host groups, networks, ports, URLs) |
| opnsense_fw_manage_aliasA | Create, update, or delete a firewall alias. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_applyA | Apply pending firewall configuration changes |
| opnsense_fw_reorder_rulesA | Change the sequence (ordering) of a firewall filter rule by UUID. Rules with lower sequence values are evaluated first. Use this to enforce whitelist-before-deny ordering. Run opnsense_fw_apply afterwards to activate. |
| opnsense_fw_drift_checkA | Audit firewall filter rules for description hygiene. Returns rules whose description does not match the given regex (default: '^#\d+:' — issue-reference prefix) and rules with empty descriptions. Read-only. |
| opnsense_diag_arp_tableA | Show the ARP table (IP-to-MAC mappings). Optionally filter by IP, MAC, or interface. |
| opnsense_diag_routesA | Show the routing table |
| opnsense_diag_pingB | Ping a host from the OPNsense firewall |
| opnsense_diag_tracerouteB | Run a traceroute from the OPNsense firewall to a destination |
| opnsense_diag_dns_lookupB | Perform a DNS lookup from the OPNsense firewall |
| opnsense_diag_reverse_dnsA | Perform a reverse DNS lookup (IP to hostname) from the OPNsense firewall |
| opnsense_diag_fw_statesA | List active firewall connection tracking states |
| opnsense_diag_fw_logsB | Retrieve recent firewall log entries |
| opnsense_diag_system_infoA | Get system status information (CPU, memory, uptime, disk, versions) |
| opnsense_diag_log_systemA | Retrieve recent OPNsense system log entries (kernel, generic system events). |
| opnsense_diag_log_gatewaysA | Retrieve recent OPNsense gateway monitoring (dpinger) log entries — useful for WAN/gateway health debugging. |
| opnsense_diag_log_routingB | Retrieve recent OPNsense routing daemon log entries. |
| opnsense_diag_log_resolverB | Retrieve recent Unbound DNS resolver log entries. |
| opnsense_if_listA | List all network interface names and their device mappings |
| opnsense_if_getA | Get detailed configuration for a specific network interface (IP addresses, status, MTU, etc.) |
| opnsense_if_statsA | Get traffic statistics for all interfaces (bytes, packets, errors, collisions) |
| opnsense_if_assignA | Assign an existing VLAN or NIC device to a free optN slot via SSH. Requires OPNSENSE_SSH_ENABLED=true and the opnsense-helpers/if_assign.php script installed on the target host. Fills the gap where the OPNsense REST API has no 'Interfaces → Assignments' endpoint. |
| opnsense_if_configureA | Configure IPv4/IPv6 on an already-assigned optN slot via SSH. Supports static, dhcp, dhcp6, track6, and 'none'. Requires OPNSENSE_SSH_ENABLED=true and the opnsense-helpers/if_configure.php script installed on the target host. |
| opnsense_dhcp_list_leasesA | List all current DHCPv4 leases. Supports both Kea DHCP (default on modern OPNsense) and ISC DHCP (legacy) backends — auto-detects which is active. |
| opnsense_dhcp_find_leaseA | Search DHCPv4 leases by IP address, MAC address, or hostname. Supports both Kea DHCP and ISC DHCP (legacy) backends — auto-detects which is active. |
| opnsense_dhcp_list_staticA | List all static DHCP mappings (MAC-to-IP reservations). Supports both Kea DHCP and ISC DHCP (legacy) backends — auto-detected. |
| opnsense_dhcp_add_staticA | Add a static DHCP mapping (MAC-to-IP reservation). Supports both Kea DHCP and ISC DHCP (legacy) backends — auto-detected. Requires DHCP service restart to take effect. |
| opnsense_dhcp_delete_staticA | Delete a static DHCP mapping by UUID. Supports both Kea DHCP and ISC DHCP (legacy) backends — auto-detected. |
| opnsense_kea_subnet_listA | List all Kea DHCPv4 subnets with their pools, options, and reservation counts. |
| opnsense_kea_subnet_getA | Get detailed configuration of a specific Kea DHCPv4 subnet by UUID. |
| opnsense_kea_subnet_createA | Create a new Kea DHCPv4 subnet. Run opnsense_kea_apply afterwards to activate. |
| opnsense_kea_subnet_updateA | Update an existing Kea DHCPv4 subnet. Run opnsense_kea_apply afterwards to activate. |
| opnsense_kea_subnet_deleteA | Delete a Kea DHCPv4 subnet by UUID. Run opnsense_kea_apply afterwards to activate. |
| opnsense_kea_applyA | Apply pending Kea DHCP configuration changes (reconfigure service). Run after subnet or reservation changes. |
| opnsense_sys_infoA | Get system status information (hostname, versions, CPU, memory, uptime, disk usage) |
| opnsense_sys_backup_listA | List all configuration backups stored on the OPNsense filesystem with timestamps, descriptions, and file sizes |
| opnsense_sys_backup_downloadA | Download an OPNsense configuration backup as XML. Downloads the current running config if no backup_id is specified. |
| opnsense_sys_backup_revertA | Revert OPNsense configuration to a previous backup. DESTRUCTIVE: replaces the running config with the specified backup. |
| opnsense_sys_list_certsA | List all certificates in the OPNsense trust store with their refids, descriptions, and validity dates |
| opnsense_svc_listA | List all services and their running status |
| opnsense_svc_controlB | Start, stop, or restart a service by name |
| opnsense_acme_list_accountsA | List all ACME accounts (Let's Encrypt, ZeroSSL, etc.) configured in the os-acme-client plugin |
| opnsense_acme_add_accountB | Register a new ACME account with a certificate authority (Let's Encrypt, ZeroSSL, etc.). Run opnsense_acme_apply afterwards. |
| opnsense_acme_delete_accountA | Delete an ACME account by UUID. Run opnsense_acme_apply afterwards. |
| opnsense_acme_register_accountA | Trigger registration of an ACME account with its certificate authority. Use after adding an account to verify it registers successfully. |
| opnsense_acme_list_challengesA | List all configured ACME challenge/validation methods (DNS-01, HTTP-01, etc.) |
| opnsense_acme_add_challengeA | Add a DNS-01 challenge configuration for automated certificate validation. For Cloudflare, use the dedicated dns_cf_* fields instead of dns_environment. Run opnsense_acme_apply afterwards. |
| opnsense_acme_update_challengeA | Update an existing ACME challenge/validation by UUID. Use to change credentials or settings. Run opnsense_acme_apply afterwards. |
| opnsense_acme_delete_challengeA | Delete an ACME challenge/validation method by UUID. Run opnsense_acme_apply afterwards. |
| opnsense_acme_list_certsA | List all ACME certificates and their status (issued, pending, expired) |
| opnsense_acme_create_certA | Create a new ACME certificate request. Requires an account and challenge to be configured first. Run opnsense_acme_apply afterwards. |
| opnsense_acme_delete_certA | Delete an ACME certificate by UUID. Run opnsense_acme_apply afterwards. |
| opnsense_acme_renew_certA | Trigger immediate renewal/signing of an ACME certificate by UUID |
| opnsense_acme_settingsA | Get or update ACME service settings (enable/disable, environment, auto-renewal, log level). When called with no parameters, returns current settings. Run opnsense_acme_apply afterwards when updating. |
| opnsense_acme_applyA | Apply pending ACME configuration changes (reconfigure service) |
| opnsense_firmware_infoA | Get firmware version, architecture, and update status of the OPNsense system |
| opnsense_firmware_statusA | Check for available firmware upgrades and their status (running, pending, done). Reads the cached state — call 'opnsense_firmware_check' first if the cache may be stale. |
| opnsense_firmware_checkA | Trigger a background firmware repository check to refresh the cached upgrade status. After calling this, wait briefly and then call 'opnsense_firmware_status' to see fresh upgrade info. |
| opnsense_firmware_list_pluginsA | List all available and installed OPNsense plugins with their versions and status |
| opnsense_firmware_installA | Install an OPNsense plugin package by name (e.g. 'os-acme-client'). May require a service restart. |
| opnsense_firmware_removeA | Remove an installed OPNsense plugin package. DESTRUCTIVE: requires explicit confirmation. |
| opnsense_firmware_upgradeA | Trigger an OPNsense system upgrade based on what 'opnsense_firmware_status' reports (minor packages, or a major-series jump such as 24.7 → 25.1). Long-running: poll progress with 'opnsense_firmware_upgrade_status'. A reboot is typically required afterwards. DESTRUCTIVE: requires explicit confirmation. |
| opnsense_firmware_upgrade_statusA | Get the progress/log of a currently running or last completed firmware upgrade (long-running operation status). |
| opnsense_firmware_rebootA | Reboot the OPNsense system. Causes a network outage on the firewall and any services it provides (DNS, DHCP, VPN). DESTRUCTIVE: requires explicit confirmation. |
| opnsense_route_listA | List all configured static routes |
| opnsense_route_addA | Add a static route. The gateway parameter must be a gateway name from opnsense_route_gateway_list. Run opnsense_route_apply afterwards to activate. |
| opnsense_route_updateB | Update an existing static route. Run opnsense_route_apply afterwards to activate. |
| opnsense_route_deleteA | Delete a static route. Run opnsense_route_apply afterwards to activate. |
| opnsense_route_applyA | Apply static route configuration changes (reconfigure routing) |
| opnsense_route_gateway_listA | List all available gateways (used as targets for static routes) |
| opnsense_route_gateway_statusA | Get live gateway monitor status: per-gateway online/offline state, RTT (delay), packet loss, stddev, monitor IP, and monitor_disable flag. Read-only — complements opnsense_route_gateway_list (which only returns config). |
| opnsense_route_gateway_updateA | Update an existing gateway's settings (toggle monitoring, set monitor IP, change weight/priority, enable/disable). Round-trips current config and only overrides explicitly provided fields. After updating, call opnsense_route_gateway_apply to activate the change. DESTRUCTIVE: requires explicit confirmation. |
| opnsense_route_gateway_applyA | Apply pending gateway configuration changes (calls /api/routing/settings/reconfigure). Required after opnsense_route_gateway_update for changes to take effect. May briefly affect WAN connectivity. DESTRUCTIVE: requires explicit confirmation. |
| opnsense_vlan_listA | List all configured 802.1Q VLAN interfaces (parent interface, VLAN tag, description, priority) |
| opnsense_vlan_createA | Create a new 802.1Q VLAN interface on a parent interface. After create, run opnsense_if_assign to bind the VLAN to a logical interface (opt1, opt2, ...) and opnsense_if_configure to assign an IP. |
| opnsense_vlan_updateA | Update an existing VLAN interface by UUID. Only provided fields are changed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/itunified-io/mcp-opnsense'
If you have feedback or need assistance with the MCP directory API, please join our Discord server