Skip to main content
Glama
lucamarien

OPNsense MCP Server

by lucamarien

OPNsense MCP Server

Un servidor seguro del Model Context Protocol (MCP) para gestionar cortafuegos OPNsense mediante asistentes de IA como Claude Code, Cursor y otras herramientas compatibles con MCP.

81 herramientas en 10 dominios: sistema, cortafuegos, red, DNS, DHCP, VPN, HAProxy, servicios, diagnósticos y seguridad.

Requisitos

  • Python 3.11+

  • OPNsense 24.7 o superior — el servidor MCP se basa en los endpoints de API basados en MVC introducidos en OPNsense 24.7. Las versiones anteriores usan una estructura de API diferente que no es compatible. El servidor detecta automáticamente la versión de OPNsense en la primera conexión y selecciona la nomenclatura de endpoints correcta (camelCase para versiones anteriores a 25.7, snake_case para 25.7+). OPNsense 26.x es totalmente compatible, incluido su formato de respuesta de estado de firmware modificado.

Related MCP server: OPNsense MCP Server

Modelo de Seguridad

Este servidor MCP está diseñado con la seguridad como principal preocupación:

  • Solo lectura por defecto — las operaciones de escritura requieren una aceptación explícita mediante OPNSENSE_ALLOW_WRITES=true

  • Savepoint/rollback (solo OPNsense < 26.7) — donde OPNsense aún ofrece la API de savepoint, las modificaciones del cortafuegos usan su reversión automática integrada de 60 segundos; los cambios deben confirmarse explícitamente o se revierten automáticamente. OPNsense 26.7 eliminó esa API en el proyecto original — el servidor detecta el endpoint faltante en tiempo de ejecución y aplica los cambios del cortafuegos de inmediato, sin reversión automática

  • Lista de bloqueo de endpoints — los endpoints peligrosos (halt, reboot, poweroff, firmware update/upgrade) están bloqueados de forma permanente a nivel del cliente de API y nunca pueden invocarse

  • Solo API — no hay acceso SSH, no hay ejecución de comandos, no hay manipulación directa de archivos de configuración

  • Transporte local — solo STDIO, sin endpoints HTTP/SSE expuestos a la red

  • Sin exposición de credenciales — las claves de API nunca se incluyen en la salida de las herramientas, los registros ni los mensajes de error

  • Validación de entrada — los parámetros de nombre de host se validan contra la inyección de metacaracteres de shell

  • Eliminación de datos sensibles — la copia de seguridad de configuración elimina contraseñas y claves por defecto

Inicio Rápido

1. Crea una clave de API de OPNsense

  1. Inicia sesión en la interfaz web de OPNsense

  2. Ve a System > Access > Users

  3. Edita un usuario existente o crea un usuario de API dedicado:

    • Para uso en producción, crea un usuario dedicado (p. ej., mcp-api) con solo los privilegios necesarios

    • Para acceso de solo lectura, asigna el usuario a un grupo con acceso de API de solo lectura

  4. Desplázate hasta la sección API keys y haz clic en el botón +

  5. Se generará un par clave/secreto y se descargará un archivo (apikey.txt)

  6. El archivo contiene dos líneas — key=your-api-key-here y secret=your-api-secret-here

  7. Guarda estas credenciales de forma segura — el secreto no se puede recuperar de nuevo desde OPNsense

Consejo: Para una configuración de solo lectura (recomendada para empezar), no necesitas cambiar ningún permiso — el acceso de API por defecto es suficiente para todas las herramientas de solo lectura.

2. Instalación

# 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 .

Imagen de Docker: la imagen oficial es uhlenheide/opnsense-mcp-server, publicada desde este repositorio por .github/workflows/publish-docker.yml en cada etiqueta v*. No existe ninguna imagen lucamarien/opnsense-mcp-server — versiones anteriores del README la mencionaban por error.

3. Configura tu asistente de IA

Claude Code

Añádelo a .mcp.json de tu proyecto:

{
  "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"
      }
    }
  }
}

Alternativa: Usa "command": "python", "args": ["-m", "opnsense_mcp"] si el CLI opnsense-mcp no está en tu PATH.

O añádelo globalmente a ~/.claude/claude_code_config.json.

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

Añádelo a la configuración de MCP de Cursor (Settings > 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"
      }
    }
  }
}

Configuración

Variable de Entorno

Valor por Defecto

Descripción

OPNSENSE_URL

(obligatorio)

URL base de la API de OPNsense (debe terminar en /api)

OPNSENSE_API_KEY

(obligatorio)

Clave de API de la configuración de usuario de OPNsense

OPNSENSE_API_SECRET

(obligatorio)

Secreto de API de la configuración de usuario de OPNsense

OPNSENSE_VERIFY_SSL

true

Verificar certificado SSL (false para certificados autofirmados)

OPNSENSE_ALLOW_WRITES

false

Habilitar operaciones de escritura (reglas de cortafuegos, control de servicios)

Puertos personalizados: Si la interfaz web de OPNsense se ejecuta en un puerto no estándar (p. ej., 10443), inclúyelo en la URL: https://192.168.1.1:10443/api

Herramientas disponibles (81)

Sistema (7 herramientas)

Herramienta

Descripción

opn_system_status

Información del sistema, incluidos la versión de firmware, el nombre del producto y la arquitectura

opn_list_services

Lista todos los servicios y su estado de ejecución. Parámetros: search, limit

opn_gateway_status

Disponibilidad de la puerta de enlace, latencia y comprobaciones de salud de dpinger

opn_download_config

Descarga la copia de seguridad de config.xml con eliminación opcional de datos sensibles. Parámetros: include_sensitive (por defecto: false — las contraseñas y claves se redactan)

opn_scan_config

Escanea la configuración completa, la analiza en secciones y recopila el inventario en tiempo de ejecución (firmware, plugins, DHCP, DNS, interfaces, servicios). Los resultados se almacenan en caché por sesión. Parámetros: force

opn_get_config_section

Obtiene una sección de configuración específica como JSON estructurado. Parámetros: section, include_sensitive

opn_mcp_info

Versión del servidor MCP, estado del modo de escritura, versión de OPNsense detectada, estilo de API y si las escrituras del cortafuegos siguen teniendo protección de savepoint/rollback

Red (5 herramientas)

Herramienta

Descripción

opn_interface_stats

Estadísticas de tráfico por interfaz (bytes de entrada/salida, paquetes, errores)

opn_arp_table

Tabla ARP que muestra las asignaciones de direcciones IP a MAC

opn_ndp_table

Tabla NDP (Neighbor Discovery Protocol) que muestra las asignaciones de direcciones IPv6 a MAC

opn_ipv6_status

Configuración de IPv6 y estado de direcciones para todas las interfaces (método, direcciones en vivo, resumen)

opn_list_static_routes

Rutas estáticas configuradas. Parámetros: search, limit

Cortafuegos (21 herramientas)

Herramienta

Descripción

Escribe

opn_list_firewall_rules

Listar reglas de filtro. Params: search, limit

No

opn_list_firewall_aliases

Listar definiciones de alias (listas IP, grupos de puertos, GeoIP, URLs). Params: search, limit

No

opn_list_nat_rules

Listar reglas de NAT (reenvío de puertos). Params: search, limit

No

opn_list_firewall_categories

Listar categorías de reglas de firewall y sus UUID. Params: search, limit

No

opn_firewall_log

Entradas recientes del registro de firewall con filtrado en el cliente. Params: source_ip, destination_ip, action, interface, limit

No

opn_confirm_changes

Confirmar cambios pendientes, cancelando la reversión automática de 60 segundos (OPNsense < 26.7; una operación sin efecto que devuelve not_applicable en 26.7+). Params: revision

opn_toggle_firewall_rule

Alternar el estado habilitado/deshabilitado de una regla con punto de restauración (OPNsense < 26.7). Params: uuid

opn_add_firewall_rule

Crear una nueva regla de filtro con punto de restauración (OPNsense < 26.7). Params: action, direction, interface, ip_protocol, protocol, source_net, destination_net, destination_port, description

opn_delete_firewall_rule

Eliminar una regla de filtro por UUID con punto de restauración (OPNsense < 26.7). Params: uuid

opn_add_alias

Crear un nuevo alias. Params: name, alias_type, content, description

opn_add_nat_rule

Crear una regla de reenvío de puertos NAT con punto de restauración (OPNsense < 26.7). Params: destination_port, target_ip, interface, protocol, target_port, description

opn_add_firewall_category

Crear una nueva categoría de regla de firewall. Params: name, color

opn_delete_firewall_category

Eliminar una categoría de regla de firewall por UUID con punto de restauración (OPNsense < 26.7). Params: uuid

opn_set_rule_categories

Asignar categorías a una regla de firewall con punto de restauración (OPNsense < 26.7). Params: uuid, categories

opn_add_icmpv6_rules

Crear reglas ICMPv6 esenciales requeridas para el funcionamiento de IPv6 (NDP, RA, ping6) según RFC 4890. Params: interface

opn_update_alias

Actualizar un alias existente (nombre, contenido, tipo). Lectura-modificación-escritura. Params: uuid, name, content, description, alias_type, enabled

opn_delete_alias

Eliminar un alias por UUID. Verificar referencias primero. Params: uuid

opn_toggle_alias

Alternar el estado habilitado/deshabilitado de un alias. Params: uuid

opn_update_firewall_rule

Actualizar los campos de una regla de filtro con punto de restauración (OPNsense < 26.7). Params: uuid, action, direction, interface, ip_protocol, protocol, source_net, source_not, source_port, destination_net, destination_not, destination_port, gateway, log, quick, sequence, categories, description, enabled

opn_update_nat_rule

Actualizar una regla de reenvío de puertos NAT con punto de restauración (OPNsense < 26.7). Params: uuid, interface, protocol, destination_port, target_ip, target_port, description, enabled

opn_delete_nat_rule

Eliminar una regla de reenvío de puertos NAT por UUID con punto de restauración (OPNsense < 26.7). Params: uuid

Nota: La protección de punto de restauración solo existe en OPNsense < 26.7. En 26.7+ estas herramientas aplican cambios inmediatamente y de forma permanente — ver Operaciones de escritura y puntos de restauración.

DNS (13 herramientas)

Herramienta

Descripción

Escribe

opn_list_dns_overrides

Anulaciones de host de Unbound (registros DNS locales). Params: search, limit

No

opn_list_dns_forwards

Zonas de reenvío DNS (servidores específicos de dominio). Params: search, limit

No

opn_dns_stats

Estadísticas del resolvedor de Unbound (consultas, aciertos de caché, tiempo de actividad). Params: search, limit

No

opn_reconfigure_unbound

Aplicar cambios pendientes en la configuración del resolvedor DNS. Params: search, limit

opn_add_dns_override

Añadir una anulación de host de Unbound (registro A/AAAA) y aplicar inmediatamente. Params: hostname, domain, server, description

opn_list_dnsbl

Listar configuraciones de listas de bloqueo DNSBL con proveedores y estado. Params: search, limit

No

opn_get_dnsbl

Obtener la configuración completa de DNSBL por UUID (proveedores, listas permitidas, ajustes). Params: uuid

No

opn_set_dnsbl

Actualizar ajustes de DNSBL (lectura-modificación-escritura). Params: uuid, enabled, providers, allowlists, blocklists, wildcards, etc.

opn_add_dnsbl_allowlist

Añadir dominios a la lista permitida de DNSBL sin sobrescribir. Params: uuid, domains

opn_remove_dnsbl_allowlist

Eliminar dominios de la lista permitida de DNSBL. Params: uuid, domains

opn_update_dnsbl

Recargar los archivos de bloqueo de DNSBL y reiniciar Unbound (sin cambio de configuración, herramienta de recuperación). Params: uuid

opn_update_dns_override

Actualizar una anulación de host de Unbound y aplicar inmediatamente. Params: uuid, hostname, domain, server, description, enabled

opn_delete_dns_override

Eliminar una anulación de host de Unbound y aplicar inmediatamente. Params: uuid

DHCP (8 herramientas)

Herramienta

Descripción

Escritura

opn_list_dhcp_leases

Concesiones DHCPv4 activas del servidor DHCP ISC

No

opn_list_kea_leases

Concesiones DHCPv4 del servidor DHCP Kea. Parámetros: search, limit

No

opn_list_dnsmasq_leases

Concesiones DHCPv4 y DHCPv6 del servidor DNS/DHCP dnsmasq. Parámetros: search, limit

No

opn_list_dnsmasq_ranges

Rangos de direcciones DHCP configurados (tanto DHCPv4 como DHCPv6 con configuración RA). Parámetros: search, limit

No

opn_add_dnsmasq_range

Crear un nuevo rango DHCP (IPv4 o IPv6 con configuración de Router Advertisement). Parámetros: interface, start_addr, end_addr, prefix_len, ra_mode, lease_time, description

opn_reconfigure_dnsmasq

Aplicar los cambios de configuración DNS/DHCP de dnsmasq pendientes

opn_update_dnsmasq_range

Actualizar un rango DHCP (direcciones, tiempo de concesión, configuración RA) y aplicar. Parámetros: uuid, interface, start_addr, end_addr, prefix_len, ra_mode, lease_time, description, enabled

opn_delete_dnsmasq_range

Eliminar un rango DHCP por UUID y aplicar. Parámetros: uuid

VPN (3 herramientas)

Herramienta

Descripción

opn_wireguard_status

Estado del túnel y de los pares WireGuard (requiere el plugin os-wireguard)

opn_ipsec_status

Estado de los túneles VPN IPsec: sesiones IKE (Fase 1) y ESP/AH (Fase 2)

opn_openvpn_status

Estado de las conexiones OpenVPN: instancias, sesiones y rutas

HAProxy (8 herramientas)

Gestión completa de la configuración del balanceador de carga HAProxy (requiere el plugin os-haproxy).

Herramienta

Descripción

Escritura

opn_haproxy_status

Estado del servicio HAProxy y salud de los backends

No

opn_haproxy_search

Buscar recursos HAProxy por tipo. Parámetros: resource_type (frontends/backends/servers/actions/acls/healthchecks/errorfiles/resolvers/mailers), search, limit

No

opn_haproxy_get

Obtener la configuración detallada de un recurso específico. Parámetros: resource_type, uuid

No

opn_haproxy_configtest

Validar la sintaxis de la configuración de HAProxy antes de aplicarla

No

opn_haproxy_add

Crear un nuevo recurso HAProxy. Parámetros: resource_type, config (diccionario de valores de campo)

opn_haproxy_update

Actualizar un recurso HAProxy existente (actualizaciones parciales). Parámetros: resource_type, uuid, config

opn_haproxy_delete

Eliminar un recurso HAProxy por UUID. Parámetros: resource_type, uuid

opn_reconfigure_haproxy

Aplicar los cambios de configuración de HAProxy pendientes

Nota: Los cambios de HAProxy NO utilizan protección de savepoint: se aplican inmediatamente al reconfigurar. Llame siempre a opn_haproxy_configtest antes de opn_reconfigure_haproxy.

Servicios (11 herramientas)

Herramienta

Descripción

Escritura

opn_list_acme_certs

Certificados ACME/Let's Encrypt y su estado. Parámetros: search, limit

No

opn_list_cron_jobs

Trabajos cron programados. Parámetros: search, limit

No

opn_crowdsec_status

Estado del motor de seguridad CrowdSec y decisiones activas

No

opn_crowdsec_alerts

Alertas de seguridad de CrowdSec (amenazas detectadas). Parámetros: search, limit

No

opn_list_ddns_accounts

Cuentas de DNS dinámico y su estado de actualización. Parámetros: search, limit

No

opn_add_ddns_account

Crear una nueva cuenta de DNS dinámico. Parámetros: service, hostname, username, password, checkip, interface, description

opn_reconfigure_ddclient

Aplicar los cambios de configuración de DNS dinámico pendientes

opn_update_ddns_account

Actualizar una cuenta de DNS dinámico (la contraseña es de solo escritura). Parámetros: uuid, service, hostname, username, password, checkip, interface, description, enabled

opn_delete_ddns_account

Eliminar una cuenta de DNS dinámico por UUID. Parámetros: uuid

opn_mdns_repeater_status

Estado y configuración del repetidor mDNS (habilitado, interfaces, lista de bloqueo). Requiere el plugin os-mdns-repeater

No

opn_configure_mdns_repeater

Configurar el repetidor mDNS para el descubrimiento de dispositivos entre VLAN (HomeKit, Chromecast, AirPlay). Parámetros: enabled, interfaces

Diagnóstico (4 herramientas)

Herramienta

Descripción

opn_ping

Hacer ping a un host desde el firewall para probar la conectividad. Parámetros: host, count (1-10, por defecto 3)

opn_traceroute

Trazar la ruta de red hasta un destino. Parámetros: host, protocol (ICMP/UDP/TCP), ip_version (4/6)

opn_dns_lookup

Consulta DNS desde el firewall. Parámetros: hostname, server (servidor DNS personalizado opcional)

opn_pf_states

Consultar la tabla de estados PF activa. Parámetros: search, limit (máx. 1000)

Seguridad (1 herramienta)

Herramienta

Descripción

opn_security_audit

Auditoría de seguridad integral en 11 áreas: firmware, reglas de firewall (MVC + heredadas, agrupación de puertos, protocolos inseguros), reenvío NAT, seguridad DNS (DNSSEC, DoT), endurecimiento del sistema (SSH, HTTPS, syslog), servicios, certificados (ACME + sistema + CA), VPN (configuración WireGuard, IPsec, OpenVPN), HAProxy (cabeceras, comprobaciones de salud), pasarelas. Los hallazgos se etiquetan con referencias de cumplimiento PCI DSS v4.0, BSI IT-Grundschutz, NIST 800-41 y CIS.

Operaciones de escritura y savepoints

Las operaciones de escritura requieren OPNSENSE_ALLOW_WRITES=true. En OPNsense < 26.7, los cambios de firewall pasan además por el mecanismo de savepoint de OPNsense:

  1. Antes de cualquier cambio de firewall, se crea un savepoint automáticamente

  2. Se aplica el cambio (activar/desactivar regla, añadir o eliminar)

  3. Comienza una cuenta atrás de 60 segundos: si no se confirma, OPNsense revierte el cambio automáticamente

  4. Use opn_confirm_changes con la revision devuelta para hacer los cambios permanentes

En esas versiones, si un asistente de IA realiza un cambio de firewall incorrecto que le bloquea el acceso, el cambio se revierte automáticamente en 60 segundos.

OPNsense 26.7 eliminó la API de savepoint/rollback en upstream, por lo que no hay reversión automática en 26.7+. El servidor no fija un límite de versión codificado: sondea el endpoint de savepoint en la primera escritura de firewall y, si OPNsense responde que el endpoint no existe, degrada a aplicación directa durante el resto de la sesión. Consulte opn_mcp_info: su campo savepoint_support informa true, false o null si aún no se ha probado ninguna escritura. Las herramientas de escritura devuelven entonces una revision vacía, opn_confirm_changes responde con status: "not_applicable", y cada cambio de firewall es inmediato y permanente.

Advertencia: En OPNsense 26.7+ haga una copia de seguridad de la configuración (opn_download_config, o Sistema > Configuración > Copias de seguridad) antes de habilitar las escrituras, y mantenga acceso fuera de banda al equipo: una regla que le bloquee el acceso no se revertirá por sí sola.

Nota: opn_reconfigure_unbound, opn_reconfigure_haproxy, opn_reconfigure_ddclient, opn_reconfigure_dnsmasq y opn_configure_mdns_repeater requieren escrituras pero no usan savepoints: aplican cambios de configuración de servicios y no son revertibles automáticamente.

Soporte IPv6

Totalmente automatizado mediante MCP

  • Reglas de firewall IPv6 — Cree reglas con ip_protocol="inet6" (protegidas por savepoint en OPNsense < 26.7)

  • Bindings de HAProxy IPv6 — Frontends con direcciones de bind [::]:443 o [2001:db8::1]:443

  • Backends de HAProxy IPv6 — Servidores con direcciones IPv6, resolvePrefer: ipv6 en backends

  • Dynamic DNS con IPv6 — Cuentas DDNS con métodos checkip compatibles con IPv6

  • Rangos DHCPv6 (dnsmasq) — Rangos DHCP IPv6 con configuración de Router Advertisement

  • Registros DNS AAAA — Host overrides de Unbound con direcciones IPv6

  • Diagnósticos IPv6 — Traceroute con ip_version="6", ping mediante nombre de host

Requiere configuración manual mediante GUI

Estos ajustes carecen de soporte de API MVC en OPNsense y deben configurarse a través de la GUI web:

  • Configuración de WAN IPv6 — PPPoE con delegación de prefijo DHCPv6, IPv6 estático, SLAAC

  • Direccionamiento IPv6 de LAN — Modo Track Interface, asignación estática /64, ID de prefijo

  • Asignación de interfaces — Asignación de puertos físicos a roles WAN/LAN/OPT

  • Túneles 6to4/6rd — Mecanismos de túnel de transición

Limitaciones conocidas

  • ISC DHCP / Kea DHCPv6: No implementado. Solo dnsmasq (el predeterminado moderno) es compatible con rangos DHCPv6 y Router Advertisements. ISC DHCP está obsoleto; la visibilidad de concesiones de Kea DHCPv6 es limitada en la API.

  • radvd: No implementado como un conjunto de herramientas independiente. Dnsmasq maneja Router Advertisements de forma nativa mediante la configuración de rangos. Solo debe ejecutarse un demonio RA por interfaz.

  • Reglas de firewall de doble pila: inet46 (doble pila) funciona correctamente en reglas de API MVC (opn_add_firewall_rule). Sin embargo, inet46 en reglas de filtro XML heredadas (GUI) no genera ninguna salida PF de forma silenciosa; este es un bug conocido de OPNsense que solo afecta a las reglas heredadas.

  • Reglas de GUI heredadas: Las reglas de firewall creadas mediante la GUI tradicional de OPNsense no son accesibles a través de la API MVC. Use opn_get_config_section("filter") para acceso de solo lectura.

Flujo de trabajo recomendado para la migración a IPv6

  1. Manual (GUI): Configurar WAN IPv6 (DHCPv6-PD del ISP o estático)

  2. Manual (GUI): Configurar interfaces LAN (modo Track Interface para delegación de prefijos)

  3. MCP: Configurar Router Advertisements mediante opn_add_dnsmasq_range con flags de RA

  4. MCP: Crear reglas de firewall IPv6 (se debe permitir ICMPv6 para NDP/RA/PMTUD)

  5. MCP: Añadir registros DNS IPv6 mediante opn_add_dns_override

  6. MCP: Configurar Dynamic DNS con el método checkip IPv6

  7. MCP: Añadir direcciones de bind IPv6 a los frontends de HAProxy

  8. MCP: Verificar con opn_ping, opn_traceroute (ip_version="6"), opn_gateway_status

Compatibilidad de versiones

Versión de OPNsense

Estado

24.7 (Thriving Tiger)

Compatible

25.1 (Ultimate Unicorn)

Compatible

25.7 (Visionary Viper)

Compatible (detecta automáticamente la API snake_case)

26.1+

Compatible

El servidor detecta automáticamente la versión de OPNsense en la primera conexión y selecciona la convención de nomenclatura correcta de los endpoints de la API (camelCase para versiones anteriores a 25.7, snake_case para 25.7+).

Nota sobre reglas de firewall: opn_list_firewall_rules muestra las reglas gestionadas mediante la API MVC/automatización. Las reglas configuradas a través de la GUI de OPNsense usan un formato heredado no accesible mediante esta API. Esta es una limitación conocida de OPNsense.

Solución de problemas

Problemas de conexión

Errores de «Connection refused» o de tiempo de espera agotado

  • Verifique que OPNSENSE_URL termine en /api (p. ej., https://192.168.1.1/api)

  • Si usa un puerto no estándar, inclúyalo: https://192.168.1.1:10443/api

  • Asegúrese de que la GUI web de OPNsense sea accesible desde la máquina que ejecuta el servidor MCP

Errores de certificado SSL

  • Para certificados autofirmados (configuración predeterminada de OPNsense), establezca OPNSENSE_VERIFY_SSL=false

  • Para producción, instale un certificado adecuado en OPNsense y mantenga OPNSENSE_VERIFY_SSL=true

Problemas de autenticación

401 No autorizado

  • Verifique que OPNSENSE_API_KEY y OPNSENSE_API_SECRET sean correctos

  • Las claves de API distinguen entre mayúsculas y minúsculas: cópielas exactamente del archivo apikey.txt descargado

  • Compruebe que el usuario de la API no esté deshabilitado en OPNsense

  • Verifique que el usuario de la API tenga privilegios suficientes para las operaciones que está intentando realizar

403 Prohibido

  • El usuario de la API puede carecer de permisos para el endpoint solicitado

  • Para operaciones de escritura, asegúrese de que OPNSENSE_ALLOW_WRITES=true esté configurado

Problemas específicos de herramientas

opn_list_firewall_rules devuelve resultados vacíos

  • Esta herramienta solo muestra reglas de MVC/automatización, no reglas de GUI heredadas

  • Cree reglas mediante la API de automatización o opn_add_firewall_rule para verlas

opn_ping agota el tiempo de espera

  • Es posible que el firewall no tenga una ruta al host de destino

  • Compruebe el estado de la puerta de enlace con opn_gateway_status

  • El tiempo de espera predeterminado es de 30 segundos (30 ciclos de sondeo)

opn_download_config muestra valores [REDACTED]

  • Este es el comportamiento predeterminado por motivos de seguridad. Pase include_sensitive=true para incluir contraseñas y claves (úselo con precaución en conversaciones con IA)

Las operaciones de escritura fallan con «writes not enabled»

  • Establezca OPNSENSE_ALLOW_WRITES=true en la configuración de su servidor MCP

  • Por seguridad, está deshabilitado intencionalmente de forma predeterminada

La confirmación de savepoint falla

  • El parámetro revision debe coincidir exactamente con lo que devolvió la operación de escritura

  • Las confirmaciones deben realizarse dentro de 60 segundos o el cambio se revierte automáticamente

  • En OPNsense 26.7+ no hay API de savepoint: las herramientas de escritura devuelven una revision vacía y opn_confirm_changes devuelve status: "not_applicable". Esto es lo esperado, no un fallo — el cambio ya se ha aplicado de forma permanente

Comandos de diagnóstico

Si necesita depurar el servidor MCP:

# 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 -v

Desarrollo

# 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 checking

Buenas prácticas

Guías específicas de dominio para tareas comunes de configuración de firewall:

Estas guías muestran patrones de uso reales de las herramientas MCP y explican las consideraciones de seguridad detrás de cada enfoque.

Contribuciones

Consulte CONTRIBUTING.md para obtener pautas detalladas. Puntos clave:

  1. Todas las pruebas deben usar respuestas de API simuladas — nunca se conecte a un OPNsense real

  2. Sin herramientas superpuestas — cada herramienta debe tener un propósito distinto

  3. Escriba docstrings claros — son la única guía de la IA para la selección de herramientas

  4. Devuelva datos estructurados (diccionarios), no cadenas formateadas

  5. Ejecute make validate antes de enviar

Licencia

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
5wRelease cycle
5Releases (12mo)
Commit activity
Issues opened vs closed

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

  • A
    license
    Not graded
    quality
    F
    maintenance
    A 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.
    370
    73
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    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.
    29
    AGPL 3.0

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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