pfSense MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_MODE | No | The mode for MCP communication | stdio |
| PFSENSE_URL | Yes | The URL of your pfSense instance | |
| PFSENSE_API_KEY | Yes | Your pfSense API key |
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
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_aliasesB | Search aliases with advanced filtering options |
| manage_alias_addressesA | Add or remove addresses from an existing alias |
| create_aliasC | Create a new firewall alias |
| update_aliasC | Update an existing alias by ID |
| delete_aliasA | Delete an alias by ID. WARNING: This is irreversible. |
| search_certificatesB | Search certificates configured on pfSense with optional filtering |
| create_certificateA | Create or import a certificate on pfSense Import and internal generation use different API endpoints with different
required fields, so this routes on |
| update_certificateA | Update an existing certificate by ID (idempotent) |
| delete_certificateA | Delete a certificate by ID. WARNING: This is irreversible. |
| generate_certificateA | Generate a new certificate signed by an existing CA on pfSense |
| renew_certificateA | Renew an existing certificate by ID |
| export_certificate_pkcs12B | Export a certificate in PKCS#12 format |
| search_certificate_authoritiesA | Search Certificate Authorities (CAs) configured on pfSense |
| create_certificate_authorityA | Create or import a Certificate Authority on pfSense Import and internal generation use different API endpoints; this routes on
|
| update_certificate_authorityA | Update an existing Certificate Authority by ID (idempotent) |
| delete_certificate_authorityA | Delete a Certificate Authority by ID. WARNING: This is irreversible. |
| search_crlsA | Search Certificate Revocation Lists (CRLs) configured on pfSense |
| create_crlB | Create a Certificate Revocation List (CRL) on pfSense |
| update_crlB | Update a Certificate Revocation List (CRL) by ID |
| delete_crlA | Delete a Certificate Revocation List (CRL) by ID. WARNING: This is irreversible. |
| search_dhcp_leasesA | Search DHCP leases with advanced filtering |
| search_dhcp_static_mappingsA | Search DHCP static mappings (reservations) with filtering |
| create_dhcp_static_mappingB | Create a DHCP static mapping (reservation) |
| update_dhcp_static_mappingA | Update an existing DHCP static mapping by ID |
| delete_dhcp_static_mappingA | Delete a DHCP static mapping by ID. WARNING: This is irreversible. |
| get_dhcp_server_configA | Get DHCP server configuration including pool ranges, lease times, etc. |
| update_dhcp_server_configC | Update DHCP server configuration (pool range, lease times, etc.) |
| search_dhcp_address_poolsA | Search DHCP server address pools with filtering and pagination |
| create_dhcp_address_poolB | Create a DHCP address pool for an interface |
| update_dhcp_address_poolA | Update an existing DHCP address pool by ID |
| delete_dhcp_address_poolA | Delete a DHCP address pool by ID. WARNING: This is irreversible. |
| search_dhcp_custom_optionsA | Search DHCP server custom options with filtering and pagination |
| create_dhcp_custom_optionB | Create a DHCP custom option |
| update_dhcp_custom_optionB | Update an existing DHCP custom option by ID |
| delete_dhcp_custom_optionA | Delete a DHCP custom option by ID. WARNING: This is irreversible. |
| apply_dhcp_changesA | Apply pending DHCP server changes Use this after making changes with apply_immediately=False to batch-apply them. |
| update_dhcp_backendA | Update the DHCP server backend (ISC DHCP vs Kea) |
| run_ping_diagnosticA | Run a ping diagnostic from the pfSense firewall |
| reboot_systemA | Reboot the pfSense system. WARNING: This will cause a service interruption. |
| halt_systemA | Halt (shut down) the pfSense system. WARNING: This will power off the system. |
| get_config_historyB | Get configuration history revisions with pagination |
| get_config_revisionA | Get a specific configuration history revision by ID |
| delete_config_revisionA | Delete a configuration history revision by ID. WARNING: This is irreversible. |
| search_pf_tablesB | Search pf firewall tables with filtering and pagination |
| get_pf_tableA | Get the contents of a specific pf firewall table |
| restore_config_backupA | Restore pfSense configuration to a previous revision. WARNING: This replaces the running config. Every destructive operation automatically captures the pre-change config revision ID. Use get_config_history to find the revision to restore. |
| compare_config_revisionsA | Compare two configuration revisions to see what changed. If revision_id_after is not provided, compares against the current running config. |
| get_dns_forwarder_settingsA | Get the DNS Forwarder (dnsmasq) service settings |
| search_dns_forwarder_host_overridesB | Search DNS Forwarder host overrides with filtering and pagination |
| create_dns_forwarder_host_overrideB | Create a DNS Forwarder host override entry |
| update_dns_forwarder_host_overrideB | Update an existing DNS Forwarder host override by ID |
| delete_dns_forwarder_host_overrideA | Delete a DNS Forwarder host override by ID. WARNING: This is irreversible. |
| search_dns_forwarder_host_override_aliasesA | Search aliases for a DNS Forwarder host override |
| manage_dns_forwarder_host_override_aliasB | Add or remove an alias for a DNS Forwarder host override |
| apply_dns_forwarder_changesA | Apply pending DNS Forwarder changes Use this after making changes with apply_immediately=False to batch-apply them. |
| get_dns_resolver_settingsA | Get the current DNS Resolver (Unbound) settings Returns the full Unbound configuration including enable state, DNSSEC, forwarding mode, DHCP registration, and custom options. |
| update_dns_resolver_settingsC | Update DNS Resolver (Unbound) settings |
| search_dns_host_overridesB | Search DNS host overrides with filtering and pagination |
| create_dns_host_overrideB | Create a DNS host override entry |
| update_dns_host_overrideB | Update an existing DNS host override by ID |
| delete_dns_host_overrideA | Delete a DNS host override by ID. WARNING: This is irreversible. |
| search_dns_host_override_aliasesA | Search aliases for a specific DNS host override |
| search_dns_domain_overridesA | Search DNS domain overrides with filtering and pagination |
| create_dns_domain_overrideC | Create a DNS domain override entry |
| update_dns_domain_overrideA | Update an existing DNS domain override by ID |
| delete_dns_domain_overrideA | Delete a DNS domain override by ID. WARNING: This is irreversible. |
| search_dns_access_listsA | Search DNS Resolver access lists with pagination |
| create_dns_access_listA | Create a DNS Resolver access list entry |
| apply_dns_resolver_changesA | Apply pending DNS Resolver configuration changes Sends a POST to the DNS Resolver apply endpoint to activate any pending host override, domain override, access list, or settings changes. |
| update_dns_access_listB | Update an existing DNS Resolver access list |
| delete_dns_access_listA | Delete a DNS Resolver access list. WARNING: This is irreversible. |
| search_firewall_rulesB | Search firewall rules with advanced filtering and pagination. |
| find_blocked_rulesA | Find all firewall rules that block or reject traffic |
| create_firewall_rule_advancedA | Create a firewall rule on the live pfSense appliance. WARNING: This modifies the running firewall configuration. |
| move_firewall_ruleA | Move a firewall rule to a new position in the rule order |
| update_firewall_ruleA | Update an existing firewall rule by ID |
| delete_firewall_ruleA | Delete a firewall rule from the live pfSense appliance. WARNING: This is irreversible. |
| bulk_block_ipsA | Block multiple IP addresses on the live pfSense firewall. WARNING: Creates block rules. |
| apply_firewall_changesA | Force apply pending firewall changes and recompile the pf ruleset. Use this after any firewall config change to ensure the compiled ruleset (/tmp/rules.debug) matches the configuration. The apply_immediately parameter on other tools doesn't always trigger full recompilation. |
| get_pf_rulesA | Read the compiled pf ruleset (/tmp/rules.debug) to verify what pf is actually enforcing vs what's in config.xml. Returns the raw compiled rules that the packet filter is using. |
| search_firewall_schedulesB | Search firewall schedules with filtering and pagination |
| create_firewall_scheduleA | Create a firewall schedule with an initial time range. The pfSense API requires at least one time range at creation. Use create_schedule_time_range to add further ranges afterwards. |
| update_firewall_scheduleB | Update an existing firewall schedule by ID |
| delete_firewall_scheduleA | Delete a firewall schedule by ID. WARNING: This is irreversible. |
| search_schedule_time_rangesA | Search time ranges within a firewall schedule |
| create_schedule_time_rangeA | Create a time range within a firewall schedule |
| update_schedule_time_rangeA | Update an existing time range within a firewall schedule by ID |
| delete_schedule_time_rangeA | Delete a time range from a firewall schedule by ID. WARNING: This is irreversible. |
| search_firewall_statesA | Search firewall states (active connections) with filtering and pagination |
| delete_firewall_stateA | Delete a specific firewall state (active connection) by ID. WARNING: This is irreversible. Terminating a state will immediately drop the associated connection. |
| get_firewall_state_sizeA | Get the current firewall state table size and limits Returns the current number of active states and the configured maximum. |
| get_firewall_advanced_settingsA | Get firewall advanced settings Returns advanced firewall configuration including optimization mode, state timeout values, and other tuning parameters. |
| search_interface_configsB | Search interface configurations with filtering and pagination |
| create_interfaceC | Create (assign) a network interface |
| update_interfaceC | Update an existing interface by ID |
| delete_interfaceA | Delete (unassign) an interface by ID. WARNING: This is irreversible. |
| apply_interface_changesA | Apply pending interface changes Use this after making changes with apply_immediately=False to batch-apply them. |
| search_vlansA | Search VLANs with filtering and pagination |
| create_vlanC | Create a VLAN |
| update_vlanA | Update an existing VLAN by ID |
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/gensecaihq/pfsense-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server