curfew-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CURFEW_DATA_DIR | No | Directory for local state (registry database, vendor table, watcher logs). Defaults to ~/.curfew/. | |
| CURFEW_PASSWORD | Yes | Router admin password. Fill this in after copying .env.example to .env. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| router_statusC | Router model, firmware, uptime, CPU and memory, WAN state, LAN, Access Control, device count. |
| list_devicesB | Every device attached to the router right now, merged with nicknames, owners, tags and vendor. Also records the sighting in the local registry. Takes a few seconds; the router is slow here. |
| scan_networkA | Refresh the registry from the router and report what changed: new devices, returned, left. |
| who_is_newA | Devices first seen after |
| known_devicesB | Everything the registry remembers, online or not. Filter by owner, tag, or online state. |
| device_historyC | Presence sessions for one device (MAC, nickname, router name or IP): when it joined and left. |
| system_logB | Recent router log entries, newest first: DHCP leases, Access Control decisions, attack warnings. |
| wifi_infoB | SSIDs, channels, security mode and guest network state for the 2.4 GHz and 5 GHz bands. |
| traffic_statsA | Traffic meter totals for today, yesterday, week, month. Zero unless the meter is enabled. |
| check_firmwareA | Ask the router whether a firmware update is available. Slow: about 10 seconds. |
| name_deviceA | Assign a nickname, owner, tags or notes in the local registry (nothing changes on the router). |
| list_groupsB | Device groups (kids, parents, iot, ...) with their members and current access state. |
| set_group_membershipA | Add a device to a group (member=true) or remove it (member=false). Groups are created on first use. |
| set_accessA | Turn internet access on or off for a group (e.g. "kids"), an owner (e.g. "Sam") or one device. Blocking uses the router's Access Control; it is enabled automatically the first time. A manual change lasts until the target's next scheduled change, or until flipped back if it has none. |
| access_statusB | Whether Access Control is on, which devices are blocked and why, and which schedules are active. |
| add_scheduleA | Block a group, owner or device every day between start and end (local time, e.g. 21:00 to 07:00). |
| list_schedulesA | All schedules with whether each is active right now. |
| remove_scheduleB | Delete a schedule by id. Devices it blocked are released at the next apply. |
| apply_schedulesB | Evaluate schedules and manual overrides now and push any needed allow/block changes to the router. |
| reboot_routerA | Reboot the router. Everyone loses internet for about two minutes. Requires confirm=true. |
| set_guest_wifiA | Turn the guest wifi network on or off. band: 2.4, 5, or both. |
| pause_deviceA | Instantly cut a group, owner or device off the internet via Eclipse Pause (ARP interception). |
| resume_deviceA | Lift an Eclipse Pause for a group, owner or device, or all_devices=true for everyone. |
| list_pausedA | Devices currently held in Eclipse Pause, and whether the enforcement daemon is running. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Several tools cluster around the same concepts: known_devices vs list_devices vs scan_network vs who_is_new all address device inventory, and set_access vs pause_device both cut internet access (distinguished only by a paragraph of prose about MAC vs ARP blocking). The descriptions do help, but an agent must read carefully to pick correctly between the two blocking mechanisms and the four discovery tools.
Verb prefixes are used consistently within families (list_*, set_*, add_/remove_*), but many tools are bare noun phrases (known_devices, device_history, system_log, wifi_info, traffic_stats, router_status, access_status), giving a mixed convention. It remains readable but there is no single predictable pattern.
24 tools is on the heavy side, but the domain is genuinely broad (device discovery, groups, two distinct blocking mechanisms, scheduling, wifi, diagnostics, reboot), so most tools earn their place. Slightly over-scoped rather than padded.
Coverage is strong: full lifecycle for schedules (add/list/remove/apply) and both pause and access-control paths, plus discovery, naming, status and diagnostics. Minor gaps exist, such as no schedule edit/update and no way to remove devices or groups from the local registry.