58
/ 100
17 days ago
glama

OPNsense MCP Server

This MCP server enables AI agents to inspect and modify an OPNsense firewall via natural language, using a compact set of generic tools and a resource registry to cover 96 CRUD operations.

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.

Install from

M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.

// key findings
⚠️
Known vulnerabilities in dependencies: 3 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 6 credentials: OPNSENSE_API_KEY, OPNSENSE_API_SECRET, OPNSENSE_SSH_PASSWORD, POSTGRES_PASSWORD, REDIS_PASSWORD, STATE_ENCRYPTION_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// known CVEs in dependencies3 high

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

high@modelcontextprotocol/sdk@1.24.3GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

high@modelcontextprotocol/sdk@1.24.3GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

highdrizzle-orm@0.45.0GHSA-gpj5-g38j-94v9

Drizzle ORM has SQL injection via improperly escaped SQL identifiers

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// required environment variables
This server reads these from process.env. You'll be asked to provide them before it can run.
configALLOWED_RESOURCES=firewall_alias,unbound_host_override
configAUDIT_LOG=/var/log/opnsense-mcp/audit.jsonl
configAUDIT_LOG_STRICTfalse When true, an fsynced intent record is written before each mutation and the mutation is refused if that write fails
configAUTO_BACKUPtrue # snapshot before classified firewall mutations
configAUTO_BACKUP_KEEP50 # prune to N most recent
configAUTO_BACKUP_STRICTtrue # refuse a mutation when its pre-change backup fails
configBACKUP_ENABLED
configBACKUP_PATH/var/lib/opnsense-mcp/backups
configCACHE_TTL
configDMZ_INTERFACE
configENABLE_CACHE
configENABLE_CONFIGURE_TOOLtrue). The server
configENABLE_RAW_API_TOOL(=true) can call an endpoint supplied by the client. This is broad
configENABLE_RESTORE_TOOLSfalse Additionally required for restore_backup_ssh (with ENABLE_SSH_FEATURES)
configENABLE_SHELL_TOOLSShell tools (cli_ / ssh_) are hidden unless =true. See
configENABLE_SSH_FEATURESENABLE_RESTORE_TOOLS false Additionally required for restore_backup_ssh (with )
configIAC_ENABLEDfalse Expose the experimental iac_ tools (previously on by default)
configINIT_MAX_ATTEMPTS
configLOG_FILE
configLOG_LEVELINFO # ERROR WARN INFO DEBUG; known secret keys/patterns are redacted
configLOG_MAX_FILES
configLOG_MAX_SIZE
configMACRO_STORAGE_PATH
configMCP_ALLOWED_HOSTSloopback names Host-header allow-list (DNS-rebinding defense); defaults to localhost/127.0.0.1/[::1]
configMCP_ALLOWED_ORIGINS=https://approved-client.example # exact origins; wildcard is fatal
configMCP_CORS_ORIGINunset Deprecated alias for a single allowed origin; is a fatal startup error
configMCP_DEBUG
configMCP_SSE_HOSTMCP_SSE_PORT=3000 =127.0.0.1
configMCP_SSE_PORT=3000 MCP_SSE_HOST=127.0.0.1
configMCP_TRANSPORTstdio # recommended default; no listening socket
🔐 secretOPNSENSE_API_KEYyour-api-key
🔐 secretOPNSENSE_API_SECRETyour-api-secret
configOPNSENSE_API_URL
configOPNSENSE_HOST/ OPNSENSE_API_KEY / OPNSENSE_API_SECRET are set. (Runtime credential setup via
configOPNSENSE_INTERFACE_MAPPINGS
configOPNSENSE_SSH_HOSTyour-opnsense
configOPNSENSE_SSH_KEEPALIVE
configOPNSENSE_SSH_KEY_PATH/absolute/path/to/a/private/key
configOPNSENSE_SSH_PASSPHRASE
🔐 secretOPNSENSE_SSH_PASSWORD
configOPNSENSE_SSH_PORT
configOPNSENSE_SSH_READY_TIMEOUT
configOPNSENSE_SSH_TIMEOUT
configOPNSENSE_SSH_USERNAMEroot # privileged boundary; use only when the REST gap justifies it
configOPNSENSE_VERIFY_SSLtrue # verification is ON unless set to false
configPOSTGRES_DB
configPOSTGRES_HOST
🔐 secretPOSTGRES_PASSWORD
configPOSTGRES_PORT
configPOSTGRES_SCHEMA
configPOSTGRES_USER
configREAD_ONLYfalse When true, hide and refuse every mutation, including local ones (backups, configure)
configREDIS_DB
configREDIS_HOST
configREDIS_KEY_PREFIX
🔐 secretREDIS_PASSWORD
configREDIS_PORT
🔐 secretSTATE_ENCRYPTION_KEY
// full audit trail
The full breakdown of what we checked, the deductions that landed, the network hosts, the dependency advisories, and concrete fix guidance is available to verified publishers.
// improvement guidance — verified publishers only
We have 3 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/gabrielion-opnsensemcp-1yx5k9)](https://m8ven.ai/mcp/gabrielion-opnsensemcp-1yx5k9)
commit: e9cf6f8012717ba517bcb90783f2c3c26cc695fc
code hash: c74a034724f0f552b7f27f1d26f3dcd6764ad1957d916b4abedc12dc06e9d169
verified: 7/14/2026, 8:25:07 AM
view raw JSON →