Firewalla MCP Server

Firewalla MCP Server

Real-time network monitoring, security analysis, and firewall management through 28 specialized tools. Access security alerts, network flows, device status, and firewall rules directly from your Firewalla device.

995

28 Tools

Packaged by
Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

About

Firewalla MCP Server MCP Server

Real-time network monitoring, security analysis, and firewall management through 28 specialized tools. Access security alerts, network flows, device status, and firewall rules directly from your Firewalla device.

What is an MCP Server?

Characteristics

AttributeDetails
Docker Imagemcp/firewalla-mcp-server
Authoramittell
Repositoryhttps://github.com/amittell/firewalla-mcp-server
Dockerfilehttps://github.com/amittell/firewalla-mcp-server/blob/main/Dockerfile
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/firewalla-mcp-server --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceMIT License

Available Tools (28)

Tools provided by this ServerShort Description
create_target_listCreate a new target list
delete_target_listDelete a target list
get_active_alarmsRetrieve current security alerts and alarms from Firewalla firewall
get_alarm_trendsGet historical alarm trend data (alarms generated per day)
get_bandwidth_usageGet top bandwidth consuming devices (convenience wrapper around get_device_status)
get_boxesRetrieve list of Firewalla boxes
get_device_statusCheck online/offline status of devices on Firewalla network
get_flow_dataQuery network traffic flows from Firewalla firewall
get_flow_insightsGet category-based flow analysis including top content categories, bandwidth consumers, and blocked traffic.
get_network_rulesRetrieve firewall rules and conditions
get_network_rules_summaryGet overview statistics and counts of network rules by category (convenience wrapper)
get_offline_devicesGet all offline devices (convenience wrapper around get_device_status)
get_recent_flow_activityGet recent network flow activity snapshot (last 10-20 minutes).
get_rule_trendsGet historical rule trend data (rules created per day)
get_simple_statisticsRetrieve basic statistics overview
get_specific_alarmGet detailed information for a specific Firewalla alarm
get_specific_target_listRetrieve a specific target list by ID
get_statistics_by_boxGet statistics for each Firewalla box (top boxes by blocked flows or security alarms)
get_statistics_by_regionRetrieve statistics by region (top regions by blocked flows)
get_target_listsRetrieve all target lists from Firewalla
pause_ruleTemporarily disable an active firewall rule for a specified duration
resume_ruleResume a previously paused firewall rule, restoring it to active state
search_alarmsSearch alarms using full-text or field filters.
search_devicesSearch devices by name, IP, MAC or status (convenience wrapper with client-side filtering)
search_flowsSearch network flows with advanced query filters.
search_rulesSearch firewall rules by target, action or status.
search_target_listsSearch target lists with client-side filtering (convenience wrapper around get_target_lists)
update_target_listUpdate an existing target list

Tools Details

Tool: create_target_list

Create a new target list

ParametersTypeDescription
namestringTarget list name (required, max 24 chars)
ownerstringOwner: "global" or box GID (required)
targetsarrayArray of domains, IPs, or CIDR ranges (required)
categorystringoptionalContent category (optional)
notesstringoptionalAdditional description (optional)

Tool: delete_target_list

Delete a target list

ParametersTypeDescription
idstringTarget list ID to delete (required)

Tool: get_active_alarms

Retrieve current security alerts and alarms from Firewalla firewall

ParametersTypeDescription
cursorstringoptionalPagination cursor from previous response
groupBystringoptionalGroup alarms by field (e.g., type, box)
limitnumberoptionalResults per page (optional, default: 200, API maximum: 500)
querystringoptionalSearch query for filtering alarms (default: status:1 for active). Use type:N where N is: 1=Security Activity, 2=Abnormal Upload, 3=Large Bandwidth Usage, 4=Monthly Data Plan, 5=New Device, 6=Device Back Online, 7=Device Offline, 8=Video Activity, 9=Gaming Activity, 10=Porn Activity, 11=VPN Activity, 12=VPN Connection Restored, 13=VPN Connection Error, 14=Open Port, 15=Internet Connectivity Update, 16=Large Upload. Examples: type:8 (video), type:10 (porn), region:US, source_ip:*
sortBystringoptionalSort alarms (default: ts:desc)

Tool: get_alarm_trends

Get historical alarm trend data (alarms generated per day)

ParametersTypeDescription
groupstringoptionalGet trends for a specific box group

Tool: get_bandwidth_usage

Get top bandwidth consuming devices (convenience wrapper around get_device_status)

ParametersTypeDescription
periodstringTime period for bandwidth calculation
boxstringoptionalFilter devices under a specific Firewalla box
limitnumberoptionalNumber of top devices to return

Tool: get_boxes

Retrieve list of Firewalla boxes

ParametersTypeDescription
groupstringoptionalGet boxes within a specific group (requires group ID)

Tool: get_device_status

Check online/offline status of devices on Firewalla network

ParametersTypeDescription
limitnumberMaximum number of devices to return (required)
boxstringoptionalGet devices under a specific Firewalla box (requires box ID)
groupstringoptionalGet devices under a specific box group (requires group ID)

Tool: get_flow_data

Query network traffic flows from Firewalla firewall

ParametersTypeDescription
cursorstringoptionalPagination cursor from previous response
groupBystringoptionalGroup flows by specified values (e.g., "domain,box")
limitnumberoptionalMaximum results (optional, default: 200, API maximum: 500)
querystringoptionalSearch query for flows. Supports region:US for geographic filtering, protocol:tcp, blocked:true, domain:*, category:social, etc.
sortBystringoptionalSort flows (default: "ts:desc")

Tool: get_flow_insights

Get category-based flow analysis including top content categories, bandwidth consumers, and blocked traffic. Ideal for answering questions like "what porn sites were accessed" or "what social media was used". Replaces time-based trends with actionable insights.

ParametersTypeDescription
categoriesarrayoptionalFilter to specific content categories (optional)
include_blockedbooleanoptionalInclude blocked traffic analysis (default: false)
periodstringoptionalTime period for analysis (default: 24h)

Tool: get_network_rules

Retrieve firewall rules and conditions

ParametersTypeDescription
limitnumberMaximum number of rules to return (required)
querystringoptionalSearch conditions for filtering rules

Tool: get_network_rules_summary

Get overview statistics and counts of network rules by category (convenience wrapper)

ParametersTypeDescription
active_onlybooleanoptionalOnly include active rules in summary (default: true)
rule_typestringoptionalFilter by rule type

Tool: get_offline_devices

Get all offline devices (convenience wrapper around get_device_status)

ParametersTypeDescription
boxstringoptionalFilter devices under a specific Firewalla box
limitnumberoptionalMaximum number of offline devices to return
sort_by_last_seenbooleanoptionalSort devices by last seen time (default: true)

Tool: get_recent_flow_activity

Get recent network flow activity snapshot (last 10-20 minutes). Returns up to 50 most recent flows for immediate analysis. CRITICAL: This is a quick snapshot tool only. Use this for: "what's happening right now?", current security threats, immediate network issues. DO NOT use for: historical analysis (use search_flows), getting more than 50 flows (use search_flows with limit), daily/weekly patterns (use search_flows with time queries like "ts:>24h"). For comprehensive analysis, always prefer search_flows.

Tool: get_rule_trends

Get historical rule trend data (rules created per day)

ParametersTypeDescription
groupstringoptionalGet trends for a specific box group

Tool: get_simple_statistics

Retrieve basic statistics overview

ParametersTypeDescription
groupstringoptionalGet statistics for specific box group

Tool: get_specific_alarm

Get detailed information for a specific Firewalla alarm

ParametersTypeDescription
alarm_idstringAlarm ID (required for API call)

Tool: get_specific_target_list

Retrieve a specific target list by ID

ParametersTypeDescription
idstringTarget list ID (required)

Tool: get_statistics_by_box

Get statistics for each Firewalla box (top boxes by blocked flows or security alarms)

ParametersTypeDescription
groupstringoptionalGet statistics for specific box group
limitnumberoptionalMaximum number of results (optional, default: 5)
typestringoptionalStatistics type to retrieve

Tool: get_statistics_by_region

Retrieve statistics by region (top regions by blocked flows)

ParametersTypeDescription
groupstringoptionalGet statistics for specific box group
limitnumberoptionalMaximum number of results (optional, default: 5)

Tool: get_target_lists

Retrieve all target lists from Firewalla

ParametersTypeDescription
limitnumberMaximum number of target lists to return (required)

Tool: pause_rule

Temporarily disable an active firewall rule for a specified duration

ParametersTypeDescription
boxstringBox GID for context (required by API)
rule_idstringRule ID to pause
durationnumberoptionalDuration in minutes to pause the rule (optional, default: 60, range: 1-1440)

Tool: resume_rule

Resume a previously paused firewall rule, restoring it to active state

ParametersTypeDescription
boxstringBox GID for context (required by API)
rule_idstringRule ID to resume

Tool: search_alarms

Search alarms using full-text or field filters. Alarm types: 1=Security Activity, 2=Abnormal Upload, 3=Large Bandwidth Usage, 4=Monthly Data Plan, 5=New Device, 6=Device Back Online, 7=Device Offline, 8=Video Activity, 9=Gaming Activity, 10=Porn Activity, 11=VPN Activity, 12=VPN Connection Restored, 13=VPN Connection Error, 14=Open Port, 15=Internet Connectivity Update, 16=Large Upload.

ParametersTypeDescription
cursorstringoptionalPagination cursor from previous response
groupBystringoptionalGroup alarms by specified fields (comma-separated)
limitnumberoptionalMaximum results (optional, default: 200, API maximum: 500)
querystringoptionalSearch query using Firewalla syntax. Supported fields: type:1-16 (see alarm types above), resolved:true/false, status:1/2 (active/archived), source_ip:192.168., region:US (country code), gid:box_id, device.name:, message:"text search". Examples: "type:8 AND region:US" (video from US), "type:10 AND status:1" (active porn alerts), "source_ip:192.168.* AND NOT resolved:true"
sortBystringoptionalSort alarms (default: ts:desc)

Tool: search_devices

Search devices by name, IP, MAC or status (convenience wrapper with client-side filtering)

ParametersTypeDescription
boxstringoptionalFilter devices under a specific Firewalla box
limitnumberoptionalMaximum number of devices to return
querystringoptionalSearch query using Firewalla syntax. Supported fields: mac:AA:BB:CC:DD:EE:FF, ip:192.168.1., name:iPhone, online:true/false, vendor:Apple, gid:box_id, network.name:, group.name:. Examples: "online:false AND vendor:Apple", "ip:192.168.1. AND name:laptop", "mac:AA:* OR name:phone"
statusstringoptionalFilter by online status

Tool: search_flows

Search network flows with advanced query filters. Use this for: historical analysis, specific time ranges, complex filtering, or when you need more than 50 flows. Supports pagination, time-based queries (e.g., "ts:>1h" for last hour), and all flow fields including geographic filtering. For quick "what's happening now" snapshots, use get_recent_flow_activity instead.

ParametersTypeDescription
cursorstringoptionalPagination cursor from previous response
groupBystringoptionalGroup flows by specified values (e.g., "domain,box")
limitnumberoptionalMaximum results (optional, default: 200, API maximum: 500)
querystringoptionalSearch query using Firewalla syntax. Supported fields: protocol:tcp/udp, direction:inbound/outbound/local, blocked:true/false, bytes:>1MB, domain:.example.com, region:US (country code), category:social/games/porn/etc, gid:box_id, device.ip:192.168., source_ip:, destination_ip:. Examples: "region:US AND protocol:tcp", "blocked:true AND bytes:>1MB", "category:social OR category:games"
sortBystringoptionalSort flows (default: "ts:desc")

Tool: search_rules

Search firewall rules by target, action or status. Supports all rule fields.

ParametersTypeDescription
querystringoptionalSearch query using Firewalla syntax. Supported fields: action:allow/block/timelimit, target.type:domain/ip/device, target.value:.facebook.com, status:active/paused, direction:bidirection/inbound/outbound, protocol:tcp/udp, gid:box_id, scope.type:device/network, notes:"description text". Examples: "action:block AND target.value:.social.com", "status:paused", "target.type:domain AND action:block"

Tool: search_target_lists

Search target lists with client-side filtering (convenience wrapper around get_target_lists)

ParametersTypeDescription
categorystringoptionalFilter by category
limitnumberoptionalMaximum number of target lists to return
ownerstringoptionalFilter by owner (global or box gid)
querystringoptionalSearch query for target lists. Supported fields: name:Social, owner:global/box_gid, category:social/games/ad/porn/etc, targets:.facebook.com, notes:"description text". Examples: "category:social", "owner:global AND name:Block", "targets:.gaming.com"

Tool: update_target_list

Update an existing target list

ParametersTypeDescription
idstringTarget list ID (required)
categorystringoptionalUpdated content category
namestringoptionalUpdated target list name (max 24 chars)
notesstringoptionalUpdated description
targetsarrayoptionalUpdated array of domains, IPs, or CIDR ranges

Use this MCP Server

{
  "mcpServers": {
    "firewalla-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "FIREWALLA_MSP_ID",
        "-e",
        "FIREWALLA_BOX_ID",
        "-e",
        "MCP_WAVE0_ENABLED",
        "-e",
        "MCP_READ_ONLY_MODE",
        "-e",
        "MCP_CACHE_ENABLED",
        "-e",
        "MCP_DEBUG_MODE",
        "-e",
        "NODE_ENV",
        "-e",
        "LOG_LEVEL",
        "-e",
        "MCP_CACHE_TTL",
        "-e",
        "MCP_RATE_LIMIT_WINDOW",
        "-e",
        "MCP_RATE_LIMIT_MAX_REQUESTS",
        "-e",
        "FIREWALLA_MSP_TOKEN",
        "mcp/firewalla-mcp-server"
      ],
      "env": {
        "FIREWALLA_MSP_ID": "yourdomain.firewalla.net",
        "FIREWALLA_BOX_ID": "1eb71e38-3a95-4371-8903-ace24c83ab49",
        "MCP_WAVE0_ENABLED": "<nil>",
        "MCP_READ_ONLY_MODE": "<nil>",
        "MCP_CACHE_ENABLED": "<nil>",
        "MCP_DEBUG_MODE": "<nil>",
        "NODE_ENV": "<nil>",
        "LOG_LEVEL": "<nil>",
        "MCP_CACHE_TTL": "<nil>",
        "MCP_RATE_LIMIT_WINDOW": "<nil>",
        "MCP_RATE_LIMIT_MAX_REQUESTS": "<nil>",
        "FIREWALLA_MSP_TOKEN": "your_msp_access_token_here"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?

Manual installation

You can install the MCP server using:

Installation for

Related servers