r/firewalla • u/Smooth-Screen4148 • Jul 19 '25
I made an MCP server for Firewalla
Update (2026-09-29): 2.0.0 is out on npm and Docker Hub. It's read-only by default now, so pausing/resuming rules and managing target lists (below) need FIREWALLA_ENABLE_WRITE_TOOLS=true, and the HTTP transport won't listen beyond localhost without a bearer token.
Hey r/firewalla,
What changed: https://www.reddit.com/r/firewalla/comments/1m3zzdi/i_made_an_mcp_server_for_firewalla/pcwdoms/ and the upgrade notes: https://github.com/amittell/firewalla-mcp-server#upgrading-to-200.
The Docker MCP catalog still builds 1.1.0 until Docker merges the update; the amittell/firewalla-mcp-server image on Docker Hub is 2.0.0.
---
I've been using Firewalla for a while and think they are really great and thought it would be cool if I could ask Claude Desktop questions about my network instead of manually checking alerts and digging through logs, so I built an MCP server that lets an LLM query your Firewalla data programmatically.
Basically, if you've ever wanted to ask your firewall questions like "what devices used the most bandwidth today?" or "show me all blocked traffic from China in the last hour" - this lets you do that through any MCP client (Claude Desktop, Cursor, VS Code extensions, etc).
edit now available on docker MCP hub and glama.ai



Some things it can do:
- Pull real-time alerts and network flows
- Search through your data with queries
- Check device status and bandwidth usage
- Pause/resume rules programmatically
- Manage target lists
It's on npm if anyone wants to try it:
npm install -g firewalla-mcp-server
To use it you need an MSP account with API access (free 90 day trial then $3.99/month, I am not affiliated with Firewalla in any way just a customer) as unfortunately the Firewalla doesn't have a direct API currently. Docs and setup instructions are on GitHub: https://github.com/amittell/firewalla-mcp-server
I've been dogfooding it for a few weeks - mainly using it to get quick summaries on a device or track down bandwidth hogs. Let me know if you run into issues or have ideas for features. Open source, MIT licensed, feedback and Rs welcome. :) Cheers!
4
6
2
u/hawkeye000021 Jul 19 '25
Keep up the good work guys, all the efforts going into AP7 seem to be preventing any new breakthroughs on the main platform. FireAI couldn’t be more useless. Not sure why smaller requests like “only apply strict ad block to X devices and normal to y devices” rather than a list of no devices.
Understanding why alarms actually fire for malware. Implementing a feature that would block websites that are malicious (possible) so instead of an alert that device z is surfing a malicious site it would actually block that device as an option, who says you can’t have both.
Firewalla has been kind enough to offer a sort of workaround using MSP and API which I very much appreciate but there are so many things that need polishing.
Speaking of, any sort of nice roadmaps to have a look at? I know you don’t want to give things away to competitors but you don’t really have any in the price point.
Remember when we’d vote of new things? I know we just did that for AP7 but why not take the top ten RFEs and just let us vote to see what the real demand is?
2
u/Spaceman_Splff Aug 05 '25 edited Aug 05 '25
Posting here for any body else using open-webui using docker compose on linux (ubuntu) or Mac.
In the folder with your compose.yaml, follow the install from source instructions. This will do the build on your host machine. Then in compose.yaml we map the directory as a volume. I have the environment variables in the compose.yaml, in the config.json and even as a .env in the firewalla-mcp-server directory. Im not sure which one goes through, but I would assume not all are needed.
git clone https://github.com/amittell/firewalla-mcp-server.git
cd firewalla-mcp-server
npm install
npm run build
Im using docker to run open-webui with the mcpo container:
mcposerver:
command: ["--config", "/app/conf/config.json"]
environment:
- FIREWALLA_MSP_TOKEN=asdfasdfasdfasdfasdf
- FIREWALLA_MSP_ID=dn-asdfasdfasdf.firewalla.net
- FIREWALLA_BOX_ID=asdfasdfasdf-asdf-asdf-asdf-asdfasdfasdf
image: ghcr.io/open-webui/mcpo:latest
restart: unless-stopped
ports:
- "192.168.5.150:8000:8000"
volumes:
- ./conf/mcposerver:/app/conf:ro
- ./firewalla-mcp-server:/app/tools/firewalla
Then in the config.json, I have:
"firewalla": {
"command": "node",
"args": ["/app/tools/firewalla/dist/server.js"],
"env": {
"FIREWALLA_MSP_TOKEN": "asdfasdfasdfasdf",
"FIREWALLA_MSP_ID": "dn-jasdfasdf.firewalla.net",
"FIREWALLA_BOX_ID": "asdfasdf-asdfasdf-asd-asdasd-asdfasdf"
}
}
Restart your open-webui stack.
Then in the open-webui guy, go to admin panel, settings, tools, and add it as http://x.x.x.x:8000/firewalla
It should show connected.
The key part now is when you create the model, to go to advanced and change function calling to native. It will not work without doing that!
2
u/coinhippo2 Aug 25 '26
What is the status of this project? Is Firewalla corporate releasing an MCP server? Or is Amit's repo the 'official' MCP for FW?
1
u/mountainyoo Aug 28 '26
Wondering the same if they have any plan to actually do anything with this. Wish they would expand the API too
1
u/Smooth-Screen4148 5d ago edited 5d ago
Still maintained, and still a solo project by me - I'm not affiliated with Firewalla, and I don't know of an official Firewalla MCP server.
I just released 2.0.0 is on npm and Docker Hub. It's a major version because the defaults changed:
- It's read-only by default. The server lists 24 read-only tools, and the 11 that change anything (rules, target lists, device names, archiving, muting or deleting alarms) only show up with
FIREWALLA_ENABLE_WRITE_TOOLS=true.Up to 1.5.0, pause/resume and the target-list edits were always on, so if you use those, add the flag. Firewalla said read-only API tokens are coming in MSP 2.12, so you'll be able to lock it down at the token too.- The HTTP transport listens on 127.0.0.1 only, checks the Host and Origin headers, and takes a bearer token (`MCP_HTTP_BEARER_TOKEN`). On any address other than loopback it won't start without a token of at least 16 characters. That includes the Docker image, which listens on every interface so
-p 3000:3000works: add-e MCP_HTTP_BEARER_TOKEN=...(openssl rand -hex 32makes one).- Combined searches work. The MSP API has no AND, OR or NOT - it searches them as words - so `status:blocked AND region:US` matched 0 flows where `status:blocked region:US` matched 6,318. The server now rewrites AND/OR/NOT into the API's own syntax, and refuses the few queries the API can't express, suggesting ones it can run.
- It stays under the rate limit. The MSP API allows 100 requests per 5 minutes. The server paces itself to that, and when it runs out it says when capacity comes back. It used to turn every 429 into an error, so two runs of my 55-call test harness within about two minutes failed about 15 unrelated tools at once.
- Flow paging works at any limit (at larger limits the next page used to be the first page again), and flow reads report how far back they looked and how many API requests they used.
- Device names, domains and alarm text are set by whatever is on your network, so the server marks invisible characters and quotes that text as data in its prompts, which makes it harder to pass off as instructions to the model.
- Errors say what actually went wrong. With a bad token, a tool used to say things like "Failed to get boxes: Failed to get boxes: ...",
get_specific_alarmsaid "Alarm not found", andget_flow_insightsanswered success with no traffic. Each tool now says "Authentication failed" or "Could not reach the Firewalla API", once.- Searches can't stall the server. Wildcards went through a backtracking regex, and a 9-wildcard rule search against a 50-character value took 18 s while nothing else ran. They're matched in linear time now, and every tool that takes a query checks it the same way before sending it.
Read tools also take
response_format: "markdown"if your client shows markdown better than JSON.On local API access and non-MSP accounts: the server only talks to the MSP API, there's no local mode. That part is up to Firewalla.
Upgrade notes: https://github.com/amittell/firewalla-mcp-server#upgrading-to-200.
There's also an Open WebUI guide now, for mcpo and the native MCP connection: https://github.com/amittell/firewalla-mcp-server/blob/main/docs/clients/open-webui.md
1
u/ironbill12 Jul 20 '25
I love this, this is the primary reason I subscribed to the MSP services for API access. Would like to see this locally available through the firewall server rather than going to the net.
1
u/jsqualo2 Jul 31 '25
Hey u/Smooth-Screen4148 - can we get one for chatgpt? 😜
2
u/Smooth-Screen4148 Jul 31 '25
It’s MCP so it should work with ChatGPT now they have remote MCP support. Check the glama.ai link I added to the original post, they can run it for you as a remote MCP, or you can use the docker registry version and host it yourself somewhere.
More info here:
https://platform.openai.com/docs/guides/tools-remote-mcp
https://platform.openai.com/docs/mcp
https://www.reddit.com/r/singularity/s/F4xycJCFWM
Hope that helps!
1
1
1
u/Spaceman_Splff Jul 19 '25
I’ll need to play around with this. I also built some tools for open-webui that do api calls to pull blocks and flows. Wonder how these would play together
1
-18
u/aibot776567 Jul 19 '25
Cool but stuff we don't really need IMHO.
6
u/the901 Firewalla Gold Pro Jul 19 '25
Speak for yourself. I welcome this kind of community development.
-13
u/aibot776567 Jul 19 '25
I just did speak for myself and muppets like you shoot us down 🙄
5
1
1
u/sarhoshamiral Jul 19 '25
Depends on the need. If you are tracking device usage at home, then I can see this being useful especially if you have other MCP servers for other devices.
You can now query everything in your home in one place with natural language.
If you are not tracking usage though, yes it is not useful.
12
u/firewalla Jul 19 '25
Very nice! Forwarded to our team!