Skip to main content
Glama
gensecaihq

pfSense MCP Server

by gensecaihq

pfSense MCP Server

Version License MCP 2025-11-25 pfSense REST API Tests Tools

Управляйте своим межсетевым экраном pfSense с помощью естественного языка. 327 инструментов. 9 уровней безопасности. Одна команда для запуска.

You: "Block all traffic from 203.0.113.5 on WAN"
Claude: Creates block rule → applies changes → confirms with rollback instructions

pfSense MCP Server подключает Claude Desktop, Claude Code и другие AI-клиенты, совместимые с MCP, к вашему межсетевому экрану pfSense. Задавайте вопросы, диагностируйте проблемы и управляйте своим межсетевым экраном — всё через диалог.

Зачем это нужно

Управление межсетевым экраном pfSense означает бесконечные клики по вкладкам веб-интерфейса, запоминание названий полей и надежду на то, что вы случайно не удалите правило, которое заблокирует вам доступ. С этим MCP-сервером вы описываете то, что хотите, на обычном английском языке, а ИИ выполняет вызовы REST API, проверяет входные данные и предупреждает вас перед выполнением любых деструктивных действий.

Что делает его особенным:

  • Каждая деструктивная операция требует явного подтверждения и показывает вам, что именно произойдет

  • Автоматическое резервное копирование конфигурации перед каждым удалением/перезагрузкой — с командой отката в одну строку

  • Ограничение частоты запросов (rate limiting) предотвращает зацикливание ИИ, которое могло бы перегрузить ваш межсетевой экран правилами

  • Санитаризация входных данных блокирует внедрение команд, обход путей и XSS в каждом параметре

Related MCP server: Firewalla MCP Server

Быстрый старт

Предварительные требования: Python 3.10+, pfSense с установленным пакетом REST API v2

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 credentials

Подключение к Claude Desktop — добавьте в ~/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"
      }
    }
  }
}

Начните общение с вашим межсетевым экраном. Откройте Claude Desktop и спросите:

  • "Покажи мне весь заблокированный трафик за последний час"

  • "Какие службы запущены?"

  • "Создай проброс порта 443 на 192.168.1.50"

  • "Запусти полную проверку состояния системы"

Что вы можете делать

327 инструментов для каждой основной подсистемы pfSense:

Домен

Инструменты

Что вы можете делать

Правила Firewall

9

Создание, обновление, удаление, изменение порядка правил. Массовая блокировка IP. Просмотр скомпилированного набора правил pf.

Алиасы

5

Управление алиасами хостов/сетей/портов/URL. Добавление и удаление адресов.

NAT

16

Проброс портов, исходящий NAT, 1:1 NAT — полный жизненный цикл управления.

VPN

51

OpenVPN серверы и клиенты, IPsec туннели, WireGuard пиры — CRUD, статус, применение.

Маршрутизация

16

Шлюзы, группы шлюзов, статические маршруты, управление шлюзом по умолчанию.

DNS

24

Unbound resolver и dnsmasq forwarder: переопределения хостов, переопределения доменов, списки доступа.

DHCP

17

Аренды, статические привязки, пулы адресов, пользовательские опции, конфигурация сервера.

Сертификаты

15

Сертификаты, CA, CRL — генерация, обновление, экспорт PKCS12.

Пользователи

12

Учетные записи пользователей, группы, конфигурация сервера аутентификации LDAP/RADIUS.

Интерфейсы

14

Конфигурация интерфейсов, VLAN, мосты, группы.

Система

44

Статус, настройки, диагностика, история конфигурации, перезагрузка, ping.

Службы

14

Запуск/остановка/перезапуск служб. NTP, cron, SSH, сторожевой таймер служб.

Логи

3

Анализ логов межсетевого экрана с разобранными данными filterlog IPv4/IPv6.

Traffic Shaping

12

Шейперы, очереди и ограничители для управления пропускной способностью.

Расписания

8

Планирование правил межсетевого экрана на основе времени.

Виртуальные IP

5

Управление CARP, ProxyARP и IP Alias.

Устранение неполадок

10

Диагностика подключения, заблокированного трафика, VPN, DHCP, DNS, HA. Полный отчет о состоянии.

Пакеты

43

HAProxy, ACME/Let's Encrypt, BIND DNS, FreeRADIUS.

Утилиты

9

HATEOAS навигация, управление ID объектов, статус защиты.

Безопасность прежде всего

ИИ, управляющий промышленным межсетевым экраном, нуждается в защитных барьерах. Этот сервер имеет 9 уровней:

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

Каждая деструктивная операция (52 инструмента удаления/перезагрузки/остановки) требует confirm=True. Каждая операция создания и обновления (112 инструментов) ограничена по частоте и санитаризирована. Каждый чувствительный параметр (пароли, ключи, токены) скрывается в логах и выводах.

Вы также можете:

  • Передать dry_run=True для предварительного просмотра любой деструктивной операции без её выполнения

  • Передать verify_descr="Allow HTTPS" для проверки того, что вы удаляете правильное правило (защита от сдвига ID)

  • Установить MCP_READ_ONLY=true, чтобы открыть доступ только к 118 инструментам для чтения (поиск, получение, диагностика)

  • Установить MCP_ALLOWED_TOOLS=search_firewall_rules,get_firewall_log для ограничения доступа конкретными инструментами

Поддерживаемые версии pfSense

Версия

REST API

Статус

pfSense CE 2.8.1

v2.7.3

Проверено

pfSense Plus 25.11

v2.7.3

Проверено

pfSense CE 2.8.0

v2.6.0+

Поддерживается

pfSense Plus 24.11

v2.6.0+

Поддерживается

Требуется пакет pfSense REST API v2 от jaredhendrickson13.

Аутентификация

Поддерживаются три метода (настраиваются в .env):

Метод

Конфигурация

Лучше всего для

Basic Auth

AUTH_METHOD=basic + имя пользователя/пароль

Быстрая настройка, локальные пользователи

API Key

AUTH_METHOD=api_key + ключ из System > REST API > Keys

Автоматизация, сервисные учетные записи

JWT

AUTH_METHOD=jwt + имя пользователя/пароль

Краткосрочные токены, автообновление

Варианты развертывания

stdio (по умолчанию) — для Claude Desktop и Claude Code:

python3 -m src.main

HTTP — для удаленного доступа и многоклиентских настроек:

python3 -m src.main -t streamable-http --port 3000

Docker — защищенный контейнер с файловой системой только для чтения:

docker compose up

Безопасность контейнера: пользователь без прав root (mcp:1000), файловая система только для чтения, все возможности (capabilities) сброшены, noexec tmpfs, no-new-privileges.

Конфигурация

Переменная

Обязательно

По умолчанию

Описание

PFSENSE_URL

Да

URL pfSense (например, https://192.168.1.1)

AUTH_METHOD

api_key

api_key, basic или jwt

PFSENSE_API_KEY

*

Ключ REST API

PFSENSE_USERNAME

*

Имя пользователя pfSense (для basic/jwt)

PFSENSE_PASSWORD

*

Пароль pfSense (для basic/jwt)

PFSENSE_VERSION

CE_2_8_0

CE_2_8_0, CE_2_8_1, CE_26_03, PLUS_24_11, PLUS_25_11

VERIFY_SSL

true

false для самоподписанных сертификатов

API_TIMEOUT

30

Тайм-аут запроса в секундах

MCP_READ_ONLY

false

Открыть доступ только к инструментам для чтения

Переменная

По умолчанию

Описание

ENABLE_HATEOAS

false

Включить HATEOAS ссылки в ответах API

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

MCP_TRANSPORT

stdio

stdio или streamable-http

MCP_HOST

127.0.0.1

Адрес привязки для HTTP режима

MCP_PORT

3000

Порт для HTTP режима

MCP_API_KEY

Bearer токен для HTTP транспорта (обязательно)

MCP_ALLOWED_ORIGINS

localhost

Разрешенные источники через запятую

MCP_AUDIT_LOG

Путь к файлу аудита (JSON lines)

MCP_RATE_LIMIT_DELETE

10

Макс. удалений за 60 секунд

MCP_RATE_LIMIT_CREATE

20

Макс. созданий за 60 секунд

MCP_RATE_LIMIT_CRITICAL

2

Макс. критических операций за 300 секунд

MCP_ALLOWED_TOOLS

all

Список разрешенных инструментов через запятую

MCP_ROLLBACK_BUFFER

50

Записи отката, хранящиеся в памяти

Тестирование

python3 -m pytest tests/ -v          # 308 tests
python3 -m pytest tests/ --cov=src   # with coverage

Соответствие спецификации MCP

Соответствует MCP 2025-11-25 (последняя версия):

  • ToolAnnotations для всех 327 инструментов (readOnlyHint, destructiveHint, idempotentHint)

  • Предоставлены serverInfo.version и instructions

  • Валидация заголовка Origin (обязательное требование)

  • Аутентификация по Bearer токену с использованием сравнения, устойчивого к временным атакам

  • Привязка по умолчанию к localhost согласно спецификации SHOULD

  • Транспорты stdio и Streamable HTTP

Структура проекта

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 tests

Вклад в проект

Нам нужно реальное тестирование в различных средах pfSense. См. CONTRIBUTING или:

  1. Сделайте форк и создайте ветку для функции

  2. Запустите python3 -m pytest tests/ -v

  3. Отправьте PR

Идеи: интеграционные тесты с реальным pfSense, поддержка дополнительных пакетов (Snort, Suricata), мост к локальной LLM Ollama, управление несколькими экземплярами.

Лицензия

MIT

Благодарности

Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (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
    C
    quality
    B
    maintenance
    A server that enables managing OPNSense firewalls through natural language interactions with Claude Desktop, supporting VLAN management, firewall rules configuration, and network interface queries.
    64
    148
    75
    MIT
  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    An 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.
    29
    MIT

View all related MCP servers

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.

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/gensecaihq/pfsense-mcp-server'

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