LABSCO SUMMARY
Router questions answered from the router itself, not from a model of it.
Reading your box's own service descriptors instead of hard-coding a feature list is what keeps it working across models and firmware updates — and it is also why it registers 143 tools, about 25,000–30,000 tokens of schema on every message by the project's own estimate. Switch it on for the sessions where you are actually working on the network, rather than leaving it loaded everywhere.
What it is
A Go binary that sits between an MCP client and an AVM FRITZ!Box router, reaching it over your local network only. It ships no fixed feature list: at start it reads the router's own service descriptors and registers what that model and firmware actually offer, which is why the same binary works on an older box and on a current one after a firmware update. Credentials stay in a .env file on your machine, the router never needs to be reachable from the internet, and the assistant receives results rather than access.
What you get
- Every service the router publishes, listed, with the actions under each one and the arguments each action takes
- Any of those actions executed by name, with the read-only ones also registered individually — so "what is my external IP" is a single call
- Connected devices: what is online, on WiFi or Ethernet, and which ones you do not recognise
- WiFi and guest WiFi switched on or off, and bandwidth prioritised for one device
- Parental controls and schedules — a device blocked now, or at a time you name, running on after you close the chat
- Line and connection state: uptime, sync rates, error counts, reconnection history and the log entries underneath them
Requirements
A FRITZ!Box on the same network and a router account with full settings access — the "FRITZ!Box-Einstellungen" permission under System → FRITZ!Box-Benutzer; without it calls come back as permission errors. Host, port, username and password live in a local .env, which the binary's --setup mode discovers over SSDP and writes for you. The licence is source-available rather than open source: free for exactly one FRITZ!Box credential pair, commercial licence beyond that. Release binaries are signed, published on GitHub and GitLab with matching checksums, and carry SLSA provenance.
Setup effort
Follow the published steps — curl -fsSL https://raw.githubusercontent.com/kambriso/fritzbox-mcp-server/main/install.sh | sh
USE CASES
01
Seeing who is on your network right now
Find the service that holds the host list, read what is online over WiFi and Ethernet, and pick out the devices you do not recognise.
02
Working out why the line is slow
Read sync rates, error counts, uptime and reconnection history straight off the router, then check what the log says around the drop.
03
Blocking a device at a time you name
Set the parental-control schedule or switch a device's access off through the router's own action, so it holds after you close the chat.
04
Turning guest WiFi on for the evening
Find the WLAN configuration service, check which action toggles the guest network, and call it with the arguments it expects.
05
Finding out what your router can even do
List every service the box publishes and the actions under each, with the documentation and argument list for any one of them.
BEFORE YOU INSTALL
What to know first
Requires
- FRITZ_PASSWORD in your environment
- FRITZ_USERNAME in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
TERMINAL
curl -fsSL https://raw.githubusercontent.com/kambriso/fritzbox-mcp-server/main/install.sh | sh
~/.local/bin/fritz-mcp --setupIn the FRITZ!Box web interface (http://fritz.box), go to System → FRITZ!Box-Benutzer → your user → Berechtigungen and enable "FRITZ!Box-Einstellungen"
In the configuration below, <YOUR_PATH_TO_FRITZ_MCP> is ~/.local/bin/fritz-mcp written out as a full path
MCP Clients
Claude Desktop
CLAUDE DESKTOP · JSON
{
"mcpServers": {
"fritzbox": {
"command": "<YOUR_PATH_TO_FRITZ_MCP>"
}
}
}The configuration does not set FRITZ_USERNAME or FRITZ_PASSWORD: fritz-mcp --setup asks for them and saves them to a .env file for the server.