Skip to main content
Glama

OPNSense MCP Server

CLI-IMPLEMENTATION-SUMMARY.md5.71 kB
# CLI Execution Implementation Summary ## Overview Successfully implemented CLI execution capability for the OPNsense MCP Server to handle advanced configuration tasks not exposed through the standard API. ## Problem Solved OPNsense's API doesn't expose certain critical settings that can block inter-VLAN routing: - Interface-level "Block private networks" (`blockpriv`) - Interface-level "Block bogon networks" (`blockbogons`) - Direct configuration file modifications - Advanced routing table manipulations These settings are only accessible through the web UI or CLI, making automation impossible without CLI access. ## Implementation Details ### 1. Core Components #### CLI Executor Resource (`src/resources/cli/executor.ts`) - Main class handling all CLI operations - Security-focused with command whitelisting - Multiple execution strategies - Structured output parsing #### Key Methods: - `execute()` - Execute any whitelisted command - `disableInterfaceBlocking()` - Fix interface blocking settings - `reloadFirewall()` - Reload firewall via CLI - `getRoutingTable()` - Get and parse routing table - `runComprehensiveDMZFix()` - Complete DMZ routing fix - `checkNFSConnectivity()` - Test NFS access ### 2. Execution Strategy The CLI executor tries multiple approaches in order: 1. **API Endpoints** (first attempt): - `/diagnostics/command/execute` - `/diagnostics/shell/exec` - `/core/system/exec` - `/system/console/exec` 2. **Configctl Wrapper** (fallback): - Uses OPNsense's `configctl` tool - Can modify settings and reload services 3. **Direct Config Modification** (last resort): - Modifies `/conf/config.xml` directly - Uses `sed` to update XML settings - Reloads configuration after changes ### 3. Security Measures #### Command Whitelist Only these commands are allowed: - `configctl` - Configuration control - `pfctl` - Packet filter control - `pluginctl` - Plugin control - `netstat` - Network statistics - `ifconfig` - Interface configuration - `route` - Routing management - `arp` - ARP table - `ping` - Connectivity test - `traceroute` - Path discovery - `showmount` - NFS discovery - Text tools: `grep`, `sed`, `awk` #### Input Sanitization - All arguments validated - Command injection prevented - Structured output prevents data leakage ### 4. MCP Integration #### New Tools Added: - `cli_execute` - Execute CLI command - `cli_fix_interface_blocking` - Fix interface blocking - `cli_reload_firewall` - Reload firewall - `cli_show_routing` - Show routing table - `cli_fix_dmz_routing` - Comprehensive DMZ fix - `cli_check_nfs` - Check NFS connectivity - `cli_apply_changes` - Apply all changes #### Integration Points: - Import in `src/index.ts` - Initialization with API client - Tool definitions in tool list - Tool handlers implemented - Error handling with McpError ### 5. DMZ Routing Fix The comprehensive DMZ fix (`cli_fix_dmz_routing`) performs: 1. **Disable Interface Blocking**: ```bash configctl interface set blockpriv opt8 0 configctl interface set blockbogons opt8 0 ``` 2. **Reconfigure Interface**: ```bash configctl interface reconfigure opt8 ``` 3. **Add Static Routes** (if needed): ```bash route add -net 10.0.0.0/24 10.0.6.1 ``` 4. **Reload Firewall**: ```bash configctl filter reload configctl filter sync ``` 5. **Verify Connectivity**: ```bash showmount -e 10.0.0.14 ``` ## Files Created/Modified ### New Files: 1. `src/resources/cli/executor.ts` - CLI executor implementation 2. `test-cli-executor.ts` - Test script 3. `docs/guides/cli-execution.md` - User documentation 4. `CHANGELOG-0.8.0.md` - Release notes 5. `CLI-IMPLEMENTATION-SUMMARY.md` - This file ### Modified Files: 1. `src/index.ts` - Added CLI executor integration 2. `package.json` - Version bump to 0.8.0, added test script 3. `README.md` - Added CLI features and examples ## Testing ### Test Script Usage: ```bash # Read-only tests npm run test:cli # Apply fixes (modifies configuration) npm run test:cli -- --fix ``` ### Test Coverage: 1. Routing table retrieval 2. Interface configuration check 3. NFS connectivity test 4. Comprehensive DMZ fix (with --fix flag) ## Success Metrics ✅ **Achieved**: - CLI commands can be executed via MCP - Interface blocking can be disabled - Firewall can be reloaded via CLI - Routing table accessible - NFS connectivity testable - Comprehensive DMZ fix available - Security maintained with whitelisting - Multiple fallback strategies - Full error handling - Complete documentation ## Future Enhancements 1. **SSH Integration**: Direct SSH execution when API unavailable 2. **Custom Plugin**: OPNsense plugin exposing CLI via secure API 3. **Batch Operations**: Execute multiple commands in transaction 4. **Output Streaming**: Real-time output for long-running commands 5. **Audit Logging**: Complete audit trail of CLI operations 6. **Extended Whitelist**: Add more safe commands as needed ## Conclusion The CLI execution capability successfully bridges the gap between OPNsense's API limitations and full configurability. It enables complete automation of firewall management through the MCP protocol, solving real-world routing issues that were previously only fixable through manual web UI interaction. The implementation is: - **Secure**: Whitelisted commands only - **Reliable**: Multiple execution strategies - **Documented**: Comprehensive guides and examples - **Tested**: Working test suite included - **Integrated**: Seamless MCP tool integration This feature makes the OPNsense MCP Server capable of ANY configuration task that can be done in the web UI, fulfilling the mission-critical requirement for complete automation.

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/vespo92/OPNSenseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server