firewalla-mcp-server: Skill for Claude Code

.claude/skills/firewalla/SKILL.md

firewalla is a skill for Claude Code from amittell/firewalla-mcp-server. It costs 218 tokens per session (1,335 once invoked), scanned A, original, MIT.

A read-only integration for Firewalla, a network firewall and security device, through MCP tools. It reads alarms, network traffic, rules, connected devices, and bandwidth data.

In plain words
What is it for?
Use it to investigate blocked or allowed connections, review security alarms and traffic flows, inspect firewall rules, and diagnose device or game-console network problems.
Why use it?
It helps avoid confusing old blocked-traffic records with what the firewall is doing now. It also guides correct interpretation when checking whether a device or service is reachable.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is amittell/firewalla-mcp-server's own configuration. It tells Claude Code how to work on firewalla-mcp-server itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything firewalla-mcp-server configures →

Reuse

Borrowing it

Nothing to install: this file belongs to amittell/firewalla-mcp-server. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/amittell/firewalla-mcp-server/main/.claude/skills/firewalla/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/amittell/firewalla-mcp-server

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for firewalla

README.md
[![agentmods](https://agentmods.dev/badge/skills/amittell/firewalla-mcp-server/firewalla/github.svg)](https://agentmods.dev/skills/amittell/firewalla-mcp-server/firewalla)
Your own site
<a href="https://agentmods.dev/skills/amittell/firewalla-mcp-server/firewalla"><img src="https://agentmods.dev/badge/skills/amittell/firewalla-mcp-server/firewalla/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for firewalla

Your own site · 80×15
<a href="https://agentmods.dev/skills/amittell/firewalla-mcp-server/firewalla"><img src="https://agentmods.dev/badge/skills/amittell/firewalla-mcp-server/firewalla.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 218 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,335 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00218 $0.01335
Opus 5.5 $0.00087 $0.00534
Sonnet 5.5 $0.00044 $0.00267
Haiku 4.5 $0.00022 $0.00134

Measured 16d ago against content hash 87d14826920e, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

firewalla scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 16d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/firewalla/SKILL.md · 77 lines

How it starts

The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Firewalla — reading the data correctly

This skill is for operating the firewalla-mcp-server MCP tools against a Firewalla MSP account. The server is read-only by default (28 tools; 11 write tools only with FIREWALLA_ENABLE_WRITE_TOOLS=true). Getting a correct answer is mostly about reading the data the right way and knowing what the API cannot tell you. The long form, with a worked example and a copy-paste recipe, is in docs/interpreting-results-guide.md.

Setup (generic)

The server authenticates with FIREWALLA_MSP_TOKEN and FIREWALLA_MSP_ID (your MSP domain, e.g. yourdomain.firewalla.net); FIREWALLA_BOX_ID is optional and retrievable with get_boxes. See the project README for .env setup. On a multi-box account, confirm which box you mean with get_boxes rather than assuming a default.

The traps that produce wrong answers

  • A blocked-flow COUNT is not a current state. The flow log retains blocks from before a rule change. Before saying "X is blocked", pull search_flows query:"device.ip:<ip>" (results are newest-first in data.flows), then read the newest flow for the same endpoint — the same domain (or destination_ip) AND protocol. Its blocked value is the current state; a later allowed flow to one endpoint says nothing about a block to a different IP or protocol. If both appear for one endpoint, report the newest and that it was mixed.
  • Can a port be blocked? Check — don't assume not. Firewalla allows outbound by default and most rules target domain|category|app|ip|targetlist, but the model DOES support ports: target.type:"remotePort", plus target.port (domain/ip/net) and scope.port. So scan get_network_rules for a remotePort target or a port field on target/scope, AND check live flows on that port show blocked:false — don't answer "no port rules" by assumption.
  • Allow vs block precedence is subtle — verify, don't theorize. A device-scoped domain allow and a network-wide IP-level block (a dnsOnly:false category rule) can both apply to a connection to a shared CDN IP. Which wins is internal to the box; read fresh flows rather than inferring from the rule list.
  • Query grammar: block:true → status:blocked; bytes: → total:; domain: is the ROOT domain (domain:*.x.com matches nothing); limit ≤ 500 on flows and alarms.
  • Shapes (MCP tool output): search_flows returns {success, data:{flows: [...]}, meta}; each data.flows[] has blocked (bool), source_ip, destination_ip, domain, protocol, direction, bytes, timestamp — no portInfo. get_flow_data adds block_type, category and raw source/destination; a flow's category is the flow's classification, not the rule's. A rule is {action: block|allow|timelimit, status, direction, target:{type (… remotePort …), value, dnsOnly?, port?}, scope?: {type: device|group|user|network, value, port?}} — scope may be absent (all devices); dnsOnly:false also enforces at the IP layer.

Read the full file on GitHub · 77 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 16d ago First seen · 77 lines · 218 tokens per session scan A 87d14826920e

Subscribe to this mod's changes

firewalla is a skill published in the GitHub repository amittell/firewalla-mcp-server (39 stars, last pushed 6d ago), licensed MIT. It adds 218 tokens to every session and 1,335 once invoked, about $0.0009 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-12.

Related

Other skills, from other repositories

gke-compute-classes

Configures, optimizes, and troubleshoots GKE ComputeClasses. Use when configuring Spot VMs with on-demand fallback, targeting specific accelerators (GPUs/TPUs) or machine families, restricting ComputeClass access, or debugging pending pods related to node pool auto-creation. Do not use for cluster-level Node Auto…

google/skills · 83 tokens

jetson-diagnostic

Read-only Jetson health snapshot for identity, memory, GPU, thermal, power, storage, services, and top processes.

NVIDIA/skills · 30 tokens

holoscan-install-wheel

Install Holoscan SDK 5.x CUDA 13 Python wheels in an isolated environment, choosing the full stack or version-matched components.

NVIDIA/skills · 34 tokens

offensive-z-wave

Z-Wave attack methodology — sniffing with Z-Force / EZ-Wave / RTL-SDR + ZniffMobile, S0 (legacy) network-key derivation flaw and key reuse, S2 (modern) ECDH commissioning analysis, replay/injection on unauthenticated nodes, default-key brute-force on test deployments, and home-automation hub pivots. Use when targeting…

SnailSploit/Claude-Red · 113 tokens

doca-socket-relay

Use this skill when the operator is driving the DOCA Socket Relay to bridge a socket-oriented host application onto a BlueField DPU peer without rewriting it — picking the deployment shape (in-process, sidecar, or BlueField service container), configuring the host-side socket and the DPU-side forwarding endpoint…

NVIDIA/skills · 236 tokens

hsb-flash

Flash the FPGA on an HSB board connected to an NVIDIA devkit. Supports HSB Lattice boards (FPGA versions 2407, 2412, 2507, 2510) and Leopard Imaging VB1940 "all-in-one" cameras (FPGA versions 2507, 2510). Uses release-specific YAML manifests and board-type-specific program commands. Lattice and VB1940 commands must…

NVIDIA/skills · 94 tokens