pfSense MCP Server
by chenle8820
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind address for HTTP mode. Default is 127.0.0.1. | 127.0.0.1 |
| MCP_PORT | No | Port for HTTP mode. Default is 3000. | 3000 |
| LOG_LEVEL | No | Log level: DEBUG, INFO, WARNING, or ERROR. Default is INFO. | INFO |
| VERIFY_SSL | No | Set to 'false' to disable certificate checking entirely — prefer PFSENSE_CA_FILE. | true |
| API_TIMEOUT | No | Request timeout in seconds. Default is 30. | 30 |
| AUTH_METHOD | No | Authentication method: 'api_key', 'basic', or 'jwt'. Default is 'api_key'. | api_key |
| MCP_API_KEY | No | Bearer token for the HTTP transport. Required (and must not be empty, a placeholder, or short) when running the streamable-http transport. | |
| PFSENSE_URL | Yes | pfSense URL (e.g., https://192.168.1.1). Required. | |
| MCP_AUDIT_LOG | No | Path to the audit log file (JSON lines). | |
| MCP_BIND_ADDR | No | Docker Compose only: host address the published port binds to. Set to 0.0.0.0 to expose it, but only behind TLS. Default is 127.0.0.1. | 127.0.0.1 |
| MCP_READ_ONLY | No | Set to 'true' to expose only the read-only tools (search, get, diagnose). Default is false. | false |
| MCP_TRANSPORT | No | Transport mode: 'stdio' or 'streamable-http'. Default is 'stdio'. | stdio |
| ENABLE_HATEOAS | No | Set to 'true' to enable HATEOAS links in API responses. Default is false. | false |
| PFSENSE_API_KEY | No | REST API key from System > REST API > Keys. Required when AUTH_METHOD=api_key. | |
| PFSENSE_CA_FILE | No | PEM file for pfSense's private/self-signed CA, so certificate verification stays on. | |
| PFSENSE_VERSION | No | pfSense version. Current: CE_2_8_1, CE_2_9_0, PLUS_25_11_1, PLUS_26_03, PLUS_26_03_1, PLUS_26_07. Legacy (still accepted): CE_2_8_0, PLUS_24_11, PLUS_25_11, CE_26_03. Default is CE_2_8_1. | CE_2_8_1 |
| RESPONSE_FORMAT | No | Set to 'gcf' to re-encode eligible tool results as Graph Compact Format for fewer tokens (requires the gcf extra). Default is 'json'. | json |
| PFSENSE_PASSWORD | No | pfSense password. Required when AUTH_METHOD=basic or AUTH_METHOD=jwt. | |
| PFSENSE_USERNAME | No | pfSense username. Required when AUTH_METHOD=basic or AUTH_METHOD=jwt. | |
| MCP_ALLOWED_TOOLS | No | Comma-separated allowlist of write tools (e.g., create_firewall_rule_advanced,delete_firewall_rule). Read tools are always available; get_log_file is controlled by MCP_ENABLE_LOG_FILES. Default is all. | |
| MCP_ALLOWED_ORIGINS | No | Comma-separated list of allowed origins. Default is localhost. | localhost |
| MCP_ROLLBACK_BUFFER | No | Number of rollback entries kept in memory. Default is 50. | 50 |
| MCP_ENABLE_LOG_FILES | No | Set to 'false' to remove the get_log_file tool (raw /var/log/* reads via command sink). Default is true. | true |
| MCP_RATE_LIMIT_CREATE | No | Max creates per 60 seconds. Default is 20. | 20 |
| MCP_RATE_LIMIT_DELETE | No | Max deletes per 60 seconds. Default is 10. | 10 |
| MCP_RATE_LIMIT_UPDATE | No | Max settings changes (update_*, apply_*, enable_*/disable_*) per 60 seconds. Default is 30. | 30 |
| MCP_RATE_LIMIT_CRITICAL | No | Max critical operations per 300 seconds. Default is 2. | 2 |
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
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
No tools | |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues