OPNsense
STDIOOPNsense防火墙管理MCP服务器
OPNsense防火墙管理MCP服务器
A modular Model Context Protocol (MCP) server that provides 88 module-based tools giving access to over 2000 OPNsense firewall management methods through a type-safe TypeScript interface.
The MCP server acts as a bridge between AI assistants (like Claude Desktop) and your OPNsense firewall, providing secure API access through a modular tool interface.
Usage in Claude Desktop
Usage in Claude Code
This package is designed to be used as an MCP (Model Context Protocol) server with AI assistants like Claude Desktop, Cursor, or other MCP-compatible clients.
npm install -g @richard-stovall/opnsense-mcp-server
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "opnsense": { "command": "npx", "args": ["-y", "@richard-stovall/opnsense-mcp-server"], "env": { "OPNSENSE_URL": "https://192.168.1.1", "OPNSENSE_API_KEY": "your-api-key", "OPNSENSE_API_SECRET": "your-api-secret", "OPNSENSE_VERIFY_SSL": "false" } } } }
Using Command Line Arguments:
{ "mcpServers": { "opnsense": { "command": "node", "args": [ "/path/to/opnsense-mcp-server/index.js", "--url", "https://YOUR-OPNSENSE-IP", "--api-key", "YOUR-API-KEY", "--api-secret", "YOUR-API-SECRET", "--no-verify-ssl" ] } } }
Enable Plugin Tools:
To include all 64 plugin module tools, add "--plugins" to the args or set "INCLUDE_PLUGINS": "true" in env.
Once configured, you can test the connection by asking Claude:
Connection Issues:
--no-verify-ssl or set "OPNSENSE_VERIFY_SSL": "false"View Server Logs: Check Claude Desktop logs for any error messages from the MCP server.
Test Manually: You can test the server manually before using with Claude Desktop:
node /path/to/opnsense-mcp-server/index.js \ --url https://YOUR-OPNSENSE-IP \ --api-key YOUR-API-KEY \ --api-secret YOUR-API-SECRET \ --no-verify-ssl
This should output:
OPNsense MCP server v0.6.0 (modular) started
Core tools: 24 modules
Plugin tools: 64 modules (disabled)
Total available: 24 modules
Add to your Cursor settings (.cursor/mcp.json in your project or ~/.cursor/mcp.json globally):
{ "mcpServers": { "opnsense": { "command": "npx", "args": ["-y", "@richard-stovall/opnsense-mcp-server"], "env": { "OPNSENSE_URL": "https://192.168.1.1", "OPNSENSE_API_KEY": "your-api-key", "OPNSENSE_API_SECRET": "your-api-secret", "OPNSENSE_VERIFY_SSL": "false" } } } }
The server accepts configuration through environment variables:
OPNSENSE_URL - OPNsense host URL (required)OPNSENSE_API_KEY - API key for authentication (required)OPNSENSE_API_SECRET - API secret for authentication (required)INCLUDE_PLUGINS - Set to "true" to enable 64 plugin module tools (optional)OPNSENSE_VERIFY_SSL - Set to "false" to disable SSL verification (development only)The modular MCP server provides your AI assistant with 88 module-based tools. Each tool represents an OPNsense module and accepts a method parameter to specify the operation.
Tool Usage Pattern:
{ "tool": "firewall_manage", "arguments": { "method": "aliasSearchItem", "params": { "searchPhrase": "web" } } }
Example prompts:
The modular approach makes it easy to discover related functionality - all firewall operations are in firewall_manage, all VPN operations in their respective modules (openvpn_manage, ipsec_manage, wireguard_manage).
Each tool provides access to all methods within that module:
| Tool Name | Description | Example Methods | 
|---|---|---|
core_manage | Core system functions | backupBackups, systemReboot, firmwareInfo | 
firewall_manage | Firewall rules & aliases | aliasSearchItem, filterAddRule, natSearchRule | 
interfaces_manage | Network interfaces | getInterfaces, vlanAddItem, setInterface | 
diagnostics_manage | System diagnostics | interfaceGetArp, systemActivityGetActivity | 
auth_manage | Authentication | userSearchUser, groupSearchGroup | 
firmware_manage | Firmware updates | check, update, upgrade, changelog | 
openvpn_manage | OpenVPN | instancesSearch, instancesAdd, serviceReconfigure | 
ipsec_manage | IPsec VPN | tunnelSearchPhase1, connectionStatus | 
wireguard_manage | WireGuard VPN | serverSearchServer, clientSearchClient | 
unbound_manage | DNS resolver | hostOverrideSearchItem, serviceReconfigure | 
dhcpv4_manage | DHCP server | searchLease, addReservation | 
Popular plugin modules:
| Tool Name | Description | Example Methods | 
|---|---|---|
plugin_nginx_manage | Nginx web server | generalGet, upstreamSearchUpstream | 
plugin_haproxy_manage | HAProxy load balancer | serverSearchServer, statsGet | 
plugin_caddy_manage | Caddy web server | reverseProxySearchDomain, serviceStatus | 
plugin_bind_manage | BIND DNS | domainSearchDomain, recordSearchRecord | 
plugin_acmeclient_manage | Let's Encrypt | certificatesSearch, certificatesIssue | 
If you want to contribute or customize the server:
# Clone the repository git clone https://github.com/richard-stovall/opnsense-mcp-server.git cd opnsense-mcp-server # Install dependencies with Yarn 4.9.2 yarn install # Build the project yarn build # Run locally yarn start
yarn generate-tools # Generate tool definitions yarn build # Build the server yarn build:all # Generate tools and build yarn dev # Run with hot reload yarn type-check # Type check without emitting yarn start # Start the server
The server uses the @richard-stovall/opnsense-typescript-client package which provides:
const response = await client.system.getStatus(); return { content: [ { type: 'text', text: JSON.stringify(response.data, null, 2), }, ], };
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)This project is licensed under the MIT License - see the LICENSE file for details.
Made with love for the OPNsense community