OPNsense MCP Server
OPNsense MCP Server
Ein sicherer Model Context Protocol-Server (MCP) zur Verwaltung von OPNsense-Firewalls über KI-Assistenten wie Claude Code, Cursor und andere MCP-kompatible Tools.
81 Tools in 10 Bereichen: System, Firewall, Netzwerk, DNS, DHCP, VPN, HAProxy, Dienste, Diagnose und Sicherheit.
Voraussetzungen
Python 3.11+
OPNsense 24.7 oder neuer – der MCP-Server nutzt die MVC-basierten API-Endpunkte, die in OPNsense 24.7 eingeführt wurden. Ältere Versionen verwenden eine andere API-Struktur, die nicht kompatibel ist. Der Server erkennt die OPNsense-Version beim ersten Verbindungsaufbau automatisch und wählt die korrekte Endpunkt-Benennung (camelCase für vor 25.7, snake_case für 25.7+). OPNsense 26.x wird vollständig unterstützt, einschließlich des geänderten Firmware-Status-Antwortformats.
Related MCP server: OPNsense MCP Server
Sicherheitsmodell
Dieser MCP-Server wurde mit Sicherheit als oberste Priorität entwickelt:
Standardmäßig schreibgeschützt – Schreiboperationen erfordern eine explizite Freigabe über
OPNSENSE_ALLOW_WRITES=trueSavepoint/Rollback (nur OPNsense < 26.7) – wo OPNsense weiterhin die Savepoint-API anbietet, nutzen Firewall-Änderungen den integrierten 60-Sekunden-Automatik-Rollback; Änderungen müssen explizit bestätigt werden, andernfalls werden sie automatisch zurückgesetzt. OPNsense 26.7 hat diese API upstream entfernt – der Server erkennt den fehlenden Endpunkt zur Laufzeit und wendet Firewall-Änderungen ohne automatischen Rollback sofort an.
Endpunkt-Blockliste – gefährliche Endpunkte (
halt,reboot,poweroff,firmware update/upgrade) sind auf Client-Ebene der API hart blockiert und können niemals aufgerufen werden.Nur API – kein SSH-Zugriff, keine Befehlsausführung, keine direkte Manipulation von Konfigurationsdateien.
Lokaler Transport – nur STDIO, keine netzwerkexponierten HTTP/SSE-Endpunkte.
Keine Offenlegung von Zugangsdaten – API-Schlüssel werden niemals in Tool-Ausgaben, Protokollen oder Fehlermeldungen angezeigt.
Eingabevalidierung – Hostname-Parameter werden gegen Shell-Metazeichen-Injection validiert.
Entfernung sensibler Daten – Konfigurationssicherungen entfernen standardmäßig Passwörter und Schlüssel.
Schnellstart
1. OPNsense-API-Schlüssel erstellen
Melden Sie sich in der Weboberfläche Ihrer OPNsense an.
Gehen Sie zu System > Zugriff > Benutzer.
Bearbeiten Sie entweder einen vorhandenen Benutzer oder erstellen Sie einen dedizierten API-Benutzer:
Für den Produktiveinsatz erstellen Sie einen dedizierten Benutzer (z. B.
mcp-api) mit nur den benötigten Berechtigungen.Für reinen Lesezugriff weisen Sie den Benutzer einer Gruppe mit Lesezugriff auf die API zu.
Scrollen Sie zum Abschnitt API-Schlüssel und klicken Sie auf die Schaltfläche +.
Ein Schlüssel/Geheimnis-Paar wird generiert und eine Datei (
apikey.txt) wird heruntergeladen.Die Datei enthält zwei Zeilen –
key=ihr-api-schluessel-hierundsecret=ihr-geheimnis-hier.Bewahren Sie diese Zugangsdaten sicher auf – das Geheimnis kann später nicht erneut von OPNsense abgerufen werden.
Tipp: Für einen reinen Leseaufbau (empfohlen für den Einstieg) müssen Sie keine Berechtigungen ändern – der Standard-API-Zugriff ist für alle Lesetools ausreichend.
2. Installation
# Using pip
pip install opnsense-mcp-server
# Using uv (recommended for isolated environments)
uv pip install opnsense-mcp-server
# Using Docker
docker pull uhlenheide/opnsense-mcp-server
# From source
git clone https://github.com/lucamarien/opnsense-mcp-server
cd opnsense-mcp-server
pip install -e .Docker-Image: Das offizielle Image ist
uhlenheide/opnsense-mcp-server, veröffentlicht aus diesem Repository durch.github/workflows/publish-docker.ymlbei jedemv*-Tag. Es gibt keinlucamarien/opnsense-mcp-server-Image – frühere README-Versionen nannten es fälschlicherweise so.
3. Ihren KI-Assistenten konfigurieren
Claude Code
Fügen Sie zur .mcp.json Ihres Projekts hinzu:
{
"mcpServers": {
"opnsense": {
"command": "opnsense-mcp",
"env": {
"OPNSENSE_URL": "https://192.168.1.1/api",
"OPNSENSE_API_KEY": "your-api-key-here",
"OPNSENSE_API_SECRET": "your-api-secret-here",
"OPNSENSE_VERIFY_SSL": "false",
"OPNSENSE_ALLOW_WRITES": "false"
}
}
}
}Alternative: Verwenden Sie
"command": "python", "args": ["-m", "opnsense_mcp"], falls dieopnsense-mcp-CLI nicht in Ihrem PATH ist.
Oder fügen Sie es global zur ~/.claude/claude_code_config.json hinzu.
Claude Code (Docker)
{
"mcpServers": {
"opnsense": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OPNSENSE_URL=https://192.168.1.1/api",
"-e", "OPNSENSE_API_KEY=your-api-key-here",
"-e", "OPNSENSE_API_SECRET=your-api-secret-here",
"-e", "OPNSENSE_VERIFY_SSL=false",
"-e", "OPNSENSE_ALLOW_WRITES=false",
"uhlenheide/opnsense-mcp-server"
]
}
}
}Cursor
Fügen Sie es zu Ihren Cursor-MCP-Einstellungen hinzu (Einstellungen > MCP):
{
"mcpServers": {
"opnsense": {
"command": "opnsense-mcp",
"env": {
"OPNSENSE_URL": "https://192.168.1.1/api",
"OPNSENSE_API_KEY": "your-api-key-here",
"OPNSENSE_API_SECRET": "your-api-secret-here",
"OPNSENSE_VERIFY_SSL": "false"
}
}
}
}Konfiguration
Umgebungsvariable | Standardwert | Beschreibung |
| (erforderlich) | OPNsense-API-Basis-URL (muss mit |
| (erforderlich) | API-Schlüssel aus den OPNsense-Benutzereinstellungen |
| (erforderlich) | API-Geheimnis aus den OPNsense-Benutzereinstellungen |
|
| SSL-Zertifikat verifizieren ( |
|
| Schreiboperationen aktivieren (Firewall-Regeln, Dienststeuerung) |
Benutzerdefinierte Ports: Wenn die OPNsense-Weboberfläche auf einem nicht standardmäßigen Port läuft (z. B. 10443), geben Sie ihn in der URL an: https://192.168.1.1:10443/api
Verfügbare Tools (81)
System (7 Tools)
Tool | Beschreibung |
| Systeminformationen einschließlich Firmware-Version, Produktname und Architektur |
| Alle Dienste und deren Ausführungsstatus auflisten. Parameter: |
| Gateway-Verfügbarkeit, Latenz und dpinger-Integritätsprüfungen |
|
|
| Gesamte Konfiguration scannen, in Abschnitte aufteilen und Laufzeitinventar sammeln (Firmware, Plugins, DHCP, DNS, Schnittstellen, Dienste). Ergebnisse werden pro Sitzung zwischengespeichert. Parameter: |
| Bestimmten Konfigurationsabschnitt als strukturiertes JSON abrufen. Parameter: |
| MCP-Serverversion, Schreibmodus-Status, erkannte OPNsense-Version, API-Stil und ob Firewall-Schreibvorgänge weiterhin Savepoint/Rollback-Schutz erhalten |
Netzwerk (5 Tools)
Tool | Beschreibung |
| Verkehrsstatistiken pro Schnittstelle (Bytes rein/raus, Pakete, Fehler) |
| ARP-Tabelle mit IP-zu-MAC-Adresszuordnungen |
| NDP-Tabelle (Neighbor Discovery Protocol) mit IPv6-zu-MAC-Adresszuordnungen |
| IPv6-Konfiguration und Adressstatus für alle Schnittstellen (Methode, Live-Adressen, Zusammenfassung) |
| Konfigurierte statische Routen. Parameter: |
Firewall (21 Tools)
| Werkzeug | Beschreibung schreiben/td> (Writes "Writes "Writes" Writes | No" | No ( (; ( ( ( ( ( (; ( ( ( Translate the entire table rows.
We'll produce the entire output with translated descriptions.
We'll keep the table structure exactly (same number of "| and das: "Writes "Writes ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (1. We'll output the entire translated text.
We'll write the entire Markdown.
We'll output the entire translated content, translated descriptions only, and headings and headings and notes, everything else verbatim except descriptions and headings and notes.| Tool | Beschreibung | Schreibend |
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
| opn_list_firewall_rules | MVC-Firewall-Filterregeln auflisten. Parameter: search, Zeitlimit | Nein |
| opn_list_firewall_aliases | Aliasdefinitionen auflisten (IP-Listen, Portgruppen, GeoIP, URLs). Parameter: search, limit | Nein | | opn_list_nat_rules | NAT-Portweiterleitungsregeln (DNAT) auflisten. Parameter: search, limit | Nein |
| opn_list_firewall_categories | Firewall-Regelkategorien und deren UUIDs auflisten. Parameter: Rollen, search, limit | Nein |
| opn_firewall_log | Aktuelle Firewall-Protokolleinträge mit clientseitiger Filterung. Parameter: source_ip, destination_ip, action, interface, limit | Nein |
| opn_confirm_changes | Ausstehende Änderungen bestätigen und damit das 60-Sekunden-Auto-Rollback abbrechen (OPNsense < 26.7; ein No-Op, das auf 26.7+ not_applicable zurückgibt). Parameter: revision | Ja |
| opn_toggle_firewall_rule | Aktiviert/Deaktiviert den Zustand einer Regel mit Savepoint (OPNsense < 26.7). Parameter: uuid | Ja |
| opn_add_firewall_rule | Neue Filterregel mit Savepoint erstellen (OPNsense < 26.7). Parameter: action, direction, interface, ip_protocol, protocol, source_net, destination_net, destination_port, description | Ja |
| opn_delete_firewall_rule | Filterregel per UUID mit Savepoint löschen (OPNsense < 26.7). Parameter: uuid | Ja |
| opn_add_alias | Neuen Alias erstellen. Parameter: name, alias_type, content, description | Ja |
| opn_add_nat_rule | NAT-Portweiterleitungsregel mit Savepoint erstellen (OPNsense < 26.7). Parameter: destination_port, target_ip, interface, protocol, target_port, description | Ja |
| opn_add_firewall_category | Neue Firewall-Regelkategorie erstellen. Parameter: name, color | Ja |
| opn_add_icmpv6_rules | Erstellen Sie eine neue Firewall-Regelkategorie. Parameter: name, color | Ja |
| opn_add_alias | Neuen Alias erstellen. Parameter: name, alias_type, content, description | Ja | | opn_add_nat_rule | NAT-Portweiterleitungsregel mit Savepoint (OPNsense < 26.7). Parameter: destination_port, target_ip, interface, protocol, target_port, description ########## 相似三角形ABC中,点,则的周长是(2019-看,求阴影部分的面积是(.NET 4.0. 0.0f; return 0; } }
Tool | Beschreibung | Schreibzugriff |
| Aktive DHCPv4-Leases vom ISC-DHCP-Server | Nein |
| DHCPv4-Leases vom Kea-DHCP-Server. Parameter: | Nein |
| DHCPv4- und DHCPv6-Leases vom dnsmasq-DNS-/DHCP-Server. Parameter: | Nein |
| Konfigurierte DHCP-Adressbereiche (sowohl DHCPv4 als auch DHCPv6 mit RA-Konfiguration). Parameter: | Nein |
| Neuen DHCP-Bereich erstellen (IPv4 oder IPv6 mit Router-Advertisement-Konfiguration). Parameter: | Ja |
| Ausstehende dnsmasq-DNS-/DHCP-Konfigurationsänderungen anwenden | Ja |
| DHCP-Bereich aktualisieren (Adressen, Lease-Zeit, RA-Konfiguration) und anwenden. Parameter: | Ja |
| DHCP-Bereich per UUID löschen und anwenden. Parameter: | Ja |
VPN (3 Tools)
Tool | Beschreibung |
| WireGuard-Tunnel- und Peer-Status (erfordert das os-wireguard-Plugin) |
| IPsec-VPN-Tunnelstatus — IKE (Phase 1) und ESP/AH (Phase 2) Sitzungen |
| OpenVPN-Verbindungsstatus — Instanzen, Sitzungen und Routen |
HAProxy (8 Tools)
Vollständige Konfigurationsverwaltung für den HAProxy-Lastverteiler (erfordert das os-haproxy-Plugin).
Tool | Beschreibung | Schreibzugriff |
| HAProxy-Dienststatus und Backend-Health | Nein |
| HAProxy-Ressourcen nach Typ durchsuchen. Parameter: | Nein |
| Detaillierte Konfiguration für eine bestimmte Ressource abrufen. Parameter: | Nein |
| HAProxy-Konfigurationssyntax vor dem Anwenden validieren | Nein |
| Neue HAProxy-Ressource erstellen. Parameter: | Ja |
| Vorhandene HAProxy-Ressource aktualisieren (teilweise Aktualisierungen). Parameter: | Ja |
| HAProxy-Ressource per UUID löschen. Parameter: | Ja |
| Ausstehende HAProxy-Konfigurationsänderungen anwenden | Ja |
Hinweis: HAProxy-Änderungen verwenden keinen Savepoint-Schutz — sie werden sofort beim Neukonfigurieren angewendet. Rufen Sie vor
opn_reconfigure_haproxyimmeropn_haproxy_configtestauf.
Dienste (11 Tools)
Tool | Beschreibung | Schreibzugriff |
| ACME-/Let's-Encrypt-Zertifikate und deren Status. Parameter: | Nein |
| Geplante Cron-Jobs. Parameter: | Nein |
| CrowdSec-Sicherheitsengine-Status und aktive Entscheidungen | Nein |
| CrowdSec-Sicherheitswarnungen (erkannte Bedrohungen). Parameter: | Nein |
| Dynamische DNS-Konten und deren Aktualisierungsstatus. Parameter: | Nein |
| Neues dynamisches DNS-Konto erstellen. Parameter: | Ja |
| Ausstehende Konfigurationsänderungen für dynamisches DNS anwenden | Ja |
| Dynamisches DNS-Konto aktualisieren (Passwort ist schreibgeschützt). Parameter: | Ja |
| Dynamisches DNS-Konto per UUID löschen. Parameter: | Ja |
| mDNS-Repeater-Status und -Konfiguration (aktiviert, Schnittstellen, Blocklist). Erfordert das | Nein |
| mDNS-Repeater für geräteübergreifende Erkennung über VLANs hinweg konfigurieren (HomeKit, Chromecast, AirPlay). Parameter: | Ja |
Diagnose (4 Tools)
Tool | Beschreibung |
| Host von der Firewall aus anpingen, um die Konnektivität zu testen. Parameter: |
| Netzwerkpfad zu einem Ziel verfolgen. Parameter: |
| DNS-Auflösung von der Firewall aus durchführen. Parameter: |
| Aktive PF-Status-Tabelle abfragen. Parameter: |
Sicherheit (1 Tool)
Tool | Beschreibung |
| Umfassender Sicherheitsaudit in 11 Bereichen: Firmware, Firewall-Regeln (MVC + Legacy, Portgruppierung, unsichere Protokolle), NAT-Weiterleitung, DNS-Sicherheit (DNSSEC, DoT), Systemhärtung (SSH, HTTPS, Syslog), Dienste, Zertifikate (ACME + System + CAs), VPN (WireGuard-Konfiguration, IPsec, OpenVPN), HAProxy (Header, Health-Checks), Gateways. Ergebnisse mit PCI-DSS-v4.0-, BSI-IT-Grundschutz-, NIST-800-41- und CIS-Konformitätsreferenzen gekennzeichnet. |
Schreiboperationen und Savepoints
Schreiboperationen erfordern OPNSENSE_ALLOW_WRITES=true. Auf OPNsense < 26.7 laufen Firewall-Änderungen zusätzlich über den Savepoint-Mechanismus von OPNsense:
Vor jeder Firewall-Änderung wird automatisch ein Savepoint erstellt
Die Änderung wird angewendet (Regel umschalten, hinzufügen oder löschen)
Ein 60-Sekunden-Countdown startet — wenn nicht bestätigt wird, macht OPNsense die Änderung automatisch rückgängig
Verwenden Sie
opn_confirm_changesmit der zurückgegebenenrevision, um Änderungen dauerhaft zu machen
Auf diesen Versionen wird eine fehlerhafte Firewall-Änderung durch eine KI-Assistenten, die Sie aussperrt, automatisch innerhalb von 60 Sekunden zurückgesetzt.
OPNsense 26.7 hat die Savepoint-/Rollback-API upstream entfernt, daher gibt es auf 26.7+ kein automatisches Zurücksetzen. Der Server kodiert keine Versionsgrenze fest: Er testet den Savepoint-Endpunkt beim ersten Firewall-Schreibvorgang und, wenn OPNsense antwortet, dass der Endpunkt nicht existiert, wechselt er für den Rest der Sitzung zur direkten Anwendung. Prüfen Sie opn_mcp_info — das Feld savepoint_support meldet true, false oder null, wenn noch kein Schreibvorgang getestet wurde. Schreib-Tools geben dann eine leere revision zurück, opn_confirm_changes antwortet mit status: "not_applicable", und jede Firewall-Änderung ist sofort und dauerhaft.
Warnung: Erstellen Sie auf OPNsense 26.7+ ein Konfigurations-Backup (
opn_download_configoder System > Konfiguration > Backups), bevor Sie Schreibzugriff aktivieren, und behalten Sie Out-of-Band-Zugriff auf das Gerät — eine Regel, die Sie aussperrt, wird sich nicht von selbst zurücksetzen.
Hinweis:
opn_reconfigure_unbound,opn_reconfigure_haproxy,opn_reconfigure_ddclient,opn_reconfigure_dnsmasqundopn_configure_mdns_repeatererfordern Schreibzugriff, verwenden aber keine Savepoints — sie wenden Dienstkonfigurationsänderungen an und sind nicht automatisch rückgängig zu machen.
IPv6-Unterstützung
Vollständig automatisiert über MCP
IPv6-Firewall-Regeln — Regeln mit
ip_protocol="inet6"erstellen (auf OPNsense < 26.7 Savepoint-geschützt)HAProxy-IPv6-Bindings — Frontends mit
[::]:443- oder[2001:db8::1]:443-Bind-AdressenHAProxy-IPv6-Backends — Server mit IPv6-Adressen,
resolvePrefer: ipv6auf BackendsDynamisches DNS mit IPv6 — DDNS-Konten mit IPv6-fähigen CheckIP-Methoden
DHCPv6-Bereiche (dnsmasq) — IPv6-DHCP-Bereiche mit Router-Advertisement-Konfiguration
DNS-AAAA-Einträge — Unbound-Host-Overrides mit IPv6-Adressen
IPv6-Diagnose — Traceroute mit
ip_version="6", Ping über Hostname
Erfordert manuelle GUI-Konfiguration
Diese Einstellungen haben keine MVC-API-Unterstützung in OPNsense und müssen über die Web-GUI konfiguriert werden:
WAN-IPv6-Einrichtung — PPPoE mit DHCPv6-Präfix-Delegation, statisches IPv6, SLAAC
LAN-IPv6-Adressierung — Track-Interface-Modus, statische /64-Zuweisung, Präfix-ID
Interface-Zuweisung — Zuweisung physischer Ports zu WAN/LAN/OPT-Rollen
6to4/6rd-Tunnel — Übergangs-Tunnelmechanismen
Bekannte Einschränkungen
ISC DHCP / Kea DHCPv6: Nicht implementiert. Nur dnsmasq (die moderne Standardoption) wird für DHCPv6-Bereiche und Router Advertisements unterstützt. ISC DHCP ist veraltet; die Kea-DHCPv6-Lease-Sichtbarkeit ist in der API eingeschränkt.
radvd: Nicht als separates Tool-Set implementiert. Dnsmasq übernimmt Router Advertisements nativ über die Bereichskonfiguration. Pro Interface sollte nur ein RA-Daemon laufen.
Dual-Stack-Firewall-Regeln:
inet46(Dual-Stack) funktioniert korrekt in MVC-API-Regeln (opn_add_firewall_rule). Allerdings erzeugtinet46in Legacy-XML-Filterregeln (GUI) stillschweigend keine PF-Ausgabe — dies ist ein bekannter OPNsense-Bug, der nur Legacy-Regeln betrifft.Legacy-GUI-Regeln: Über die traditionelle OPNsense-GUI erstellte Firewall-Regeln sind über die MVC-API nicht zugänglich. Verwenden Sie
opn_get_config_section("filter")für den Nur-Lese-Zugriff.
Empfohlener IPv6-Migrations-Workflow
Manuell (GUI): WAN-IPv6 konfigurieren (DHCPv6-PD vom ISP oder statisch)
Manuell (GUI): LAN-Interfaces konfigurieren (Track-Interface-Modus für Präfix-Delegation)
MCP: Router Advertisements über
opn_add_dnsmasq_rangemit RA-Flags konfigurierenMCP: IPv6-Firewall-Regeln erstellen (ICMPv6 muss für NDP/RA/PMTUD erlaubt sein)
MCP: IPv6-DNS-Einträge über
opn_add_dns_overridehinzufügenMCP: Dynamisches DNS mit IPv6-CheckIP-Methode konfigurieren
MCP: IPv6-Bind-Adressen zu HAProxy-Frontends hinzufügen
MCP: Mit
opn_ping,opn_traceroute(ip_version="6"),opn_gateway_statusverifizieren
Versionskompatibilität
OPNsense-Version | Status |
24.7 (Thriving Tiger) | Unterstützt |
25.1 (Ultimate Unicorn) | Unterstützt |
25.7 (Visionary Viper) | Unterstützt (erkennt snake_case-API automatisch) |
26.1+ | Unterstützt |
Der Server erkennt die OPNsense-Version bei der ersten Verbindung automatisch und wählt die korrekte API-Endpunkt-Namenskonvention (camelCase für vor 25.7, snake_case für 25.7+).
Hinweis zu Firewall-Regeln: opn_list_firewall_rules zeigt Regeln, die über die MVC-/Automatisierungs-API verwaltet werden. Über die OPNsense-GUI konfigurierte Regeln verwenden ein Legacy-Format, das über diese API nicht zugänglich ist. Dies ist eine bekannte OPNsense-Einschränkung.
Fehlerbehebung
Verbindungsprobleme
„Verbindung abgelehnt" oder Timeout-Fehler
Stellen Sie sicher, dass
OPNSENSE_URLmit/apiendet (z. B.https://192.168.1.1/api)Wenn ein nicht standardmäßiger Port verwendet wird, fügen Sie ihn hinzu:
https://192.168.1.1:10443/apiStellen Sie sicher, dass die OPNsense-Web-GUI von dem Rechner aus erreichbar ist, auf dem der MCP-Server läuft
SSL-Zertifikatsfehler
Für selbstsignierte Zertifikate (Standard-OPNsense-Einrichtung) setzen Sie
OPNSENSE_VERIFY_SSL=falseFür die Produktion installieren Sie ein ordnungsgemäßes Zertifikat auf OPNsense und behalten Sie
OPNSENSE_VERIFY_SSL=truebei
Authentifizierungsprobleme
401 Nicht autorisiert
Überprüfen Sie, ob
OPNSENSE_API_KEYundOPNSENSE_API_SECRETkorrekt sindAPI-Schlüssel sind case-sensitiv — kopieren Sie sie exakt aus der heruntergeladenen
apikey.txtÜberprüfen Sie, ob der API-Benutzer in OPNsense nicht deaktiviert ist
Überprüfen Sie, ob der API-Benutzer ausreichende Berechtigungen für die gewünschten Operationen hat
403 Verboten
Dem API-Benutzer fehlen möglicherweise Berechtigungen für den angeforderten Endpunkt
Für Schreiboperationen stellen Sie sicher, dass
OPNSENSE_ALLOW_WRITES=truegesetzt ist
Toolspezifische Probleme
opn_list_firewall_rules liefert leere Ergebnisse
Dieses Tool zeigt nur MVC-/Automatisierungsregeln, keine Legacy-GUI-Regeln
Erstellen Sie Regeln über die Automatisierungs-API oder
opn_add_firewall_rule, um sie zu sehen
opn_ping läuft in einen Timeout
Die Firewall hat möglicherweise keine Route zum Zielhost
Überprüfen Sie den Gateway-Status mit
opn_gateway_statusStandard-Timeout beträgt 30 Sekunden (30 Abfragezyklen)
opn_download_config zeigt [REDACTED]-Werte
Dies ist das Standardverhalten aus Sicherheitsgründen. Übergeben Sie
include_sensitive=true, um Passwörter und Schlüssel einzuschließen (in KI-Konversationen mit Vorsicht verwenden)
Schreiboperationen schlagen mit „writes not enabled" fehl
Setzen Sie
OPNSENSE_ALLOW_WRITES=truein Ihrer MCP-Server-KonfigurationDies ist aus Sicherheitsgründen standardmäßig absichtlich deaktiviert
Savepoint-Bestätigung schlägt fehl
Der Parameter
revisionmuss exakt mit dem übereinstimmen, was von der Schreiboperation zurückgegeben wurdeBestätigungen müssen innerhalb von 60 Sekunden erfolgen, sonst wird die Änderung automatisch zurückgesetzt
Auf OPNsense 26.7+ gibt es keine Savepoint-API: Schreib-Tools geben eine leere
revisionzurück undopn_confirm_changesgibtstatus: "not_applicable"zurück. Das ist erwartet, kein Fehler — die Änderung wurde bereits dauerhaft angewendet
Diagnosebefehle
Wenn Sie den MCP-Server debuggen müssen:
# Test API connectivity directly
curl -k -u "your-key:your-secret" https://your-opnsense-ip/api/core/firmware/status
# Run the server directly
python -m opnsense_mcp
# Run tests to verify installation
pytest -vEntwicklung
# Clone and install dev dependencies
git clone https://github.com/lucamarien/opnsense-mcp-server
cd opnsense-mcp-server
pip install -e ".[dev]"
# Run all tests (no real OPNsense needed — all tests use mocked API)
pytest -v
# Full CI pipeline (lint, format, type check, security scan, tests)
make validate
# Individual checks
ruff check src/ tests/ # Lint (includes bandit security checks)
ruff format src/ tests/ # Format
mypy src/ --strict # Type checkingBest Practices
Domänenspezifische Anleitungen für häufige Firewall-Konfigurationsaufgaben:
WhatsApp-Anruf-Firewall-Regeln — WhatsApp-Sprach-/Videoanrufe durch eine Default-Deny-Firewall mithilfe von URL-Tabellen-Aliassen und eingegrenzten Regeln erlauben
Diese Anleitungen zeigen reale MCP-Tool-Nutzungsmuster und erläutern die Sicherheitsüberlegungen hinter jedem Ansatz.
Mitwirken
Siehe CONTRIBUTING.md für detaillierte Richtlinien. Kernpunkte:
Alle Tests müssen gemockte API-Antworten verwenden — niemals eine echte OPNsense-Instanz verbinden
Keine überlappenden Tools — jedes Tool muss einen eindeutigen Zweck haben
Klare Docstrings schreiben — sie sind die einzige Orientierung der KI für die Tool-Auswahl
Strukturierte Daten (Dictionaries) zurückgeben, keine formatierten Strings
Vor dem Einreichen
make validateausführen
Lizenz
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA modular MCP server that provides access to over 2,000 OPNsense firewall management methods through 88 specialized tools. It enables AI assistants to securely manage firewall rules, network interfaces, and system diagnostics using a type-safe TypeScript interface.37073MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to manage OPNsense firewall, interfaces, DHCP, DNS, routes, and services via natural language through 42 MCP tools.MIT
- AlicenseAqualityCmaintenanceEnables interaction with OPNsense firewalls through MCP tools for managing firewall rules, interfaces, DHCP leases, and system monitoring.26MIT
- AlicenseNot gradedqualityAmaintenanceThis 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.29AGPL 3.0
Related MCP Connectors
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/lucamarien/opnsense-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server