pfSense MCP Server
Servidor MCP de pfSense
Administra tu firewall pfSense con lenguaje natural. 327 herramientas. 9 capas de seguridad. Un comando para empezar.
You: "Block all traffic from 203.0.113.5 on WAN"
Claude: Creates block rule → applies changes → confirms with rollback instructionsEl servidor MCP de pfSense conecta Claude Desktop, Claude Code y otros clientes de IA compatibles con MCP a tu firewall pfSense. Haz preguntas, diagnostica problemas y administra tu firewall, todo a través de una conversación.
Por qué existe esto
Administrar un firewall pfSense significa hacer clic a través de pestañas de la interfaz web, recordar nombres de campos y esperar no cometer un error al escribir una regla que te bloquee el acceso. Con este servidor MCP, describes lo que quieres en inglés sencillo y la IA maneja las llamadas a la API REST, valida las entradas y te advierte antes de que ocurra algo destructivo.
Lo que lo hace diferente:
Cada operación destructiva requiere confirmación explícita y te muestra exactamente qué sucederá
Copia de seguridad automática de la configuración antes de cada eliminación/reinicio, con un comando de reversión de una sola línea
La limitación de tasa (rate limiting) evita que los bucles de IA descontrolados inunden tu firewall con reglas
La sanitización de entradas bloquea la inyección de comandos, el recorrido de rutas y XSS en cada parámetro
Related MCP server: Firewalla MCP Server
Inicio rápido
Requisitos previos: Python 3.10+, pfSense con el paquete REST API v2 instalado
git clone https://github.com/gensecaihq/pfsense-mcp-server.git
cd pfsense-mcp-server
pip install -r requirements.txt
cp .env.example .env
# Edit .env: set PFSENSE_URL, AUTH_METHOD, and credentialsConectar a Claude Desktop — añade a ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"pfsense": {
"command": "python3",
"args": ["-m", "src.main"],
"cwd": "/path/to/pfsense-mcp-server",
"env": {
"PFSENSE_URL": "https://192.168.1.1",
"AUTH_METHOD": "basic",
"PFSENSE_USERNAME": "admin",
"PFSENSE_PASSWORD": "your-password",
"PFSENSE_VERSION": "CE_2_8_0",
"VERIFY_SSL": "false"
}
}
}
}Empieza a hablar con tu firewall. Abre Claude Desktop y pregunta:
"Muéstrame todo el tráfico bloqueado en la última hora"
"¿Qué servicios están ejecutándose?"
"Crea un reenvío de puerto para el puerto 443 al 192.168.1.50"
"Ejecuta una comprobación completa del estado del sistema"
Qué puedes hacer
327 herramientas en todos los subsistemas principales de pfSense:
Dominio | Herramientas | Qué puedes hacer |
Reglas de Firewall | 9 | Crear, actualizar, eliminar, reordenar reglas. Bloquear IPs masivamente. Ver conjunto de reglas pf compilado. |
Alias | 5 | Administrar alias de host/red/puerto/URL. Añadir y eliminar direcciones. |
NAT | 16 | Reenvío de puertos, NAT saliente, NAT 1:1 — gestión completa del ciclo de vida. |
VPN | 51 | Servidores y clientes OpenVPN, túneles IPsec, pares WireGuard — CRUD, estado, aplicar. |
Enrutamiento | 16 | Gateways, grupos de gateways, rutas estáticas, gestión de gateway predeterminado. |
DNS | 24 | Resolutor Unbound y reenviador dnsmasq: anulaciones de host, anulaciones de dominio, listas de acceso. |
DHCP | 17 | Arrendamientos, asignaciones estáticas, grupos de direcciones, opciones personalizadas, configuración del servidor. |
Certificados | 15 | Certificados, CAs, CRLs — generar, renovar, exportar PKCS12. |
Usuarios | 12 | Cuentas de usuario, grupos, configuración del servidor de autenticación LDAP/RADIUS. |
Interfaces | 14 | Configuración de interfaz, VLANs, puentes, grupos. |
Sistema | 44 | Estado, ajustes, diagnósticos, historial de configuración, reinicio, ping. |
Servicios | 14 | Iniciar/detener/reiniciar servicios. NTP, cron, SSH, watchdog de servicios. |
Registros | 3 | Análisis de registros del firewall con datos de filterlog IPv4/IPv6 analizados. |
Modelado de tráfico | 12 | Modeladores, colas y limitadores para la gestión del ancho de banda. |
Programaciones | 8 | Programación de reglas de firewall basadas en tiempo. |
IPs Virtuales | 5 | Gestión de CARP, ProxyARP e IP Alias. |
Solución de problemas | 10 | Diagnosticar conectividad, tráfico bloqueado, VPN, DHCP, DNS, HA. Informe de salud completo. |
Paquetes | 43 | HAProxy, ACME/Let's Encrypt, BIND DNS, FreeRADIUS. |
Utilidad | 9 | Navegación HATEOAS, gestión de ID de objetos, estado de barreras de seguridad. |
La seguridad es lo primero
La IA que gestiona un firewall de producción necesita barreras de seguridad. Este servidor tiene 9 capas:
"Delete firewall rule 5"
1. CLASSIFY → HIGH risk (destructive)
2. ALLOWLIST → tool is permitted
3. SANITIZE → parameters clean (no injection)
4. RATE LIMIT → under 10 deletes/minute
5. DRY RUN? → user can preview first
6. CONFIRM → blocked until confirm=True
7. BACKUP → config revision captured
8. EXECUTE → API call made
9. AUDIT LOG → action recorded with redacted params
Response includes:
"config_backup": {
"pre_change_revision_id": 42,
"rollback_instruction": "restore_config_backup(revision_id=42, confirm=True)"
}Cada operación destructiva (52 herramientas de eliminar/reiniciar/detener) requiere confirm=True. Cada operación de creación y actualización (112 herramientas) está limitada en tasa y sanitizada. Cada parámetro sensible (contraseñas, claves, tokens) se redacta en los registros y salidas.
También puedes:
Pasar
dry_run=Truepara previsualizar cualquier operación destructiva sin ejecutarlaPasar
verify_descr="Allow HTTPS"para verificar que estás eliminando la regla correcta (protege contra cambios de ID)Establecer
MCP_READ_ONLY=truepara exponer solo 118 herramientas de solo lectura (buscar, obtener, diagnosticar)Establecer
MCP_ALLOWED_TOOLS=search_firewall_rules,get_firewall_logpara restringir a herramientas específicas
Versiones de pfSense soportadas
Versión | API REST | Estado |
pfSense CE 2.8.1 | Verificado | |
pfSense Plus 25.11 | Verificado | |
pfSense CE 2.8.0 | v2.6.0+ | Soportado |
pfSense Plus 24.11 | v2.6.0+ | Soportado |
Requiere el paquete pfSense REST API v2 de jaredhendrickson13.
Autenticación
Tres métodos soportados (configurar en .env):
Método | Configuración | Mejor para |
Autenticación Básica |
| Configuración rápida, usuarios locales |
Clave API |
| Automatización, cuentas de servicio |
JWT |
| Tokens de corta duración, auto-actualización |
Opciones de despliegue
stdio (predeterminado) — para Claude Desktop y Claude Code:
python3 -m src.mainHTTP — para acceso remoto y configuraciones multi-cliente:
python3 -m src.main -t streamable-http --port 3000Docker — contenedor endurecido con sistema de archivos de solo lectura:
docker compose upSeguridad del contenedor: usuario no root (mcp:1000), sistema de archivos de solo lectura, todas las capacidades eliminadas, tmpfs noexec, no-new-privileges.
Configuración
Variable | Requerido | Predeterminado | Descripción |
| Sí | — | URL de pfSense (ej. |
|
|
| |
| * | — | Clave de API REST |
| * | — | Usuario de pfSense (para basic/jwt) |
| * | — | Contraseña de pfSense (para basic/jwt) |
|
|
| |
|
|
| |
|
| Tiempo de espera de solicitud en segundos | |
|
| Exponer solo herramientas de solo lectura |
Variable | Predeterminado | Descripción |
|
| Habilitar enlaces HATEOAS en respuestas de API |
|
|
|
|
|
|
|
| Dirección de enlace para modo HTTP |
|
| Puerto para modo HTTP |
| — | Token Bearer para transporte HTTP (requerido) |
| localhost | Orígenes permitidos separados por comas |
| — | Ruta al archivo de registro de auditoría (líneas JSON) |
|
| Máximo de eliminaciones por 60 segundos |
|
| Máximo de creaciones por 60 segundos |
|
| Máximo de operaciones críticas por 300 segundos |
| all | Lista de permitidos de herramientas separada por comas |
|
| Entradas de reversión mantenidas en memoria |
Pruebas
python3 -m pytest tests/ -v # 308 tests
python3 -m pytest tests/ --cov=src # with coverageCumplimiento de la especificación MCP
Cumple con MCP 2025-11-25 (más reciente):
ToolAnnotationsen las 327 herramientas (readOnlyHint, destructiveHint, idempotentHint)serverInfo.versioneinstructionsproporcionadosValidación de encabezado de origen (requisito MUST)
Autenticación de token Bearer con comparación segura contra temporización
Enlace predeterminado a localhost según la especificación SHOULD
Transportes stdio y Streamable HTTP
Estructura del proyecto
src/
main.py Entry point
server.py FastMCP instance + API client
client.py pfSense REST API v2 HTTP client
guardrails.py 9-layer defense-in-depth system
helpers.py Validation, parsing, safety guards
models.py Data models
middleware.py HTTP auth + Origin validation
tools/ 34 tool modules (327 tools)
tests/ 308 testsContribución
Necesitamos pruebas en el mundo real en diversos entornos pfSense. Consulta CONTRIBUTING o:
Haz un fork y crea una rama de características
Ejecuta
python3 -m pytest tests/ -vEnvía un PR
Ideas: pruebas de integración contra pfSense real, soporte adicional de paquetes (Snort, Suricata), puente LLM local Ollama, gestión de múltiples instancias.
Licencia
Reconocimientos
jaredhendrickson13 / pfrest — paquete de API REST v2 de pfSense
JeremiahChurch — reescritura modular (PR #5)
shawnpetersen — descubrimiento de endpoints de API v2 (PR #3)
Netgate — pfSense
FastMCP — framework MCP
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
- AlicenseCqualityBmaintenanceA server that enables managing OPNSense firewalls through natural language interactions with Claude Desktop, supporting VLAN management, firewall rules configuration, and network interface queries.6414875MIT
- -licenseNot gradedqualityNot gradedmaintenanceA production-ready server that connects Claude Desktop to Firewalla network management capabilities, allowing users to monitor devices, analyze network traffic, manage security alerts, and configure firewall rules through natural language.
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction and management of pfSense firewalls through Claude and other GenAI applications using the Model Context Protocol. It provides advanced tools for firewall rule configuration, interface management, and intelligent log analysis via a REST API integration.1MIT
- AlicenseCqualityCmaintenanceAn AI-powered penetration testing server that integrates over 30 security tools with Groq LLM analysis for automated vulnerability scanning, triage, and reporting. It enables users to perform comprehensive security assessments through natural language natively within Claude Desktop.29MIT
Related MCP Connectors
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
GibsonAI MCP server: manage your databases with natural language
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/gensecaihq/pfsense-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server