pfSense MCP Server
by Pavel539
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind address for HTTP mode. | 127.0.0.1 |
| MCP_PORT | No | Port for HTTP mode. | 3000 |
| LOG_LEVEL | No | Logging level: DEBUG, INFO, WARNING, ERROR. | INFO |
| VERIFY_SSL | No | Set false to disable certificate checking entirely — prefer PFSENSE_CA_FILE. Accepts true/false, 1/0, yes/no, on/off. | true |
| API_TIMEOUT | No | Request timeout in seconds. | 30 |
| AUTH_METHOD | No | Authentication method: api_key, basic, or jwt. | api_key |
| MCP_API_KEY | No | Bearer token for the HTTP transport. Required for HTTP mode; the server refuses to start with an empty, placeholder or short token. | |
| 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 0.0.0.0 to expose it, but only behind TLS. | 127.0.0.1 |
| MCP_READ_ONLY | No | Set true to expose only the read-only tools (search, get, diagnose). | false |
| MCP_TRANSPORT | No | Transport mode: stdio or streamable-http. | stdio |
| ENABLE_HATEOAS | No | Enable HATEOAS links in API responses. | false |
| PFSENSE_API_KEY | No | REST API key, from System > REST API > Keys (used when AUTH_METHOD=api_key). | |
| PFSENSE_CA_FILE | No | PEM file for pfSense's private/self-signed CA, so TLS verification stays on (e.g., /path/to/pfsense-ca.pem). A missing or unparseable file is a startup error. | |
| PFSENSE_VERSION | No | pfSense version. Current values: CE_2_8_1, CE_2_9_0, PLUS_25_11_1, PLUS_26_03, PLUS_26_03_1, PLUS_26_07. Legacy values still accepted: CE_2_8_0, PLUS_24_11, PLUS_25_11, CE_26_03. | CE_2_8_1 |
| RESPONSE_FORMAT | No | Set gcf to re-encode eligible tool results as Graph Compact Format for fewer tokens (requires the gcf extra); default json keeps JSON responses. | json |
| PFSENSE_PASSWORD | No | pfSense password (used when AUTH_METHOD=basic or AUTH_METHOD=jwt). | |
| PFSENSE_USERNAME | No | pfSense username (used 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. | all |
| MCP_ALLOWED_ORIGINS | No | Comma-separated allowed origins. | localhost |
| MCP_ROLLBACK_BUFFER | No | Number of rollback entries kept in memory. | 50 |
| MCP_ENABLE_LOG_FILES | No | Set false to remove the get_log_file tool (raw /var/log/* reads via command sink). | true |
| MCP_RATE_LIMIT_CREATE | No | Max creates per 60 seconds. | 20 |
| MCP_RATE_LIMIT_DELETE | No | Max deletes per 60 seconds. | 10 |
| MCP_RATE_LIMIT_UPDATE | No | Max settings changes (update_*, apply_*, enable_*/disable_*) per 60 seconds. | 30 |
| MCP_RATE_LIMIT_CRITICAL | No | Max critical operations per 300 seconds. | 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