tplink-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROUTER_IP | Yes | The IP address of the TP-Link router | 192.168.0.1 |
| ROUTER_PASSWORD | Yes | The password for router admin access | |
| ROUTER_USERNAME | No | The username for router admin access | admin |
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 |
|---|---|
| list_clientsA | List devices currently connected to the router (wired, wireless, guest). |
| router_statusA | Router overview: firmware/hardware version, operation mode, WAN IP, uptime, CPU/memory usage, SSIDs. Wi-Fi PSKs are redacted unless reveal_secrets=True. |
| get_firmware_infoB | Current firmware version, hardware version, and model. |
| check_firmware_updateA | Ask the TP-Link cloud whether a firmware update is available (update_number>0 = yes). |
| wifi_infoA | SSID, security and on/off state per band. Passwords redacted unless reveal_secrets=True. |
| dhcp_leasesB | Current DHCP leases (hostname, IP, MAC, lease time). |
| ethernet_portsB | Physical ethernet port link status (WAN/LAN, up/down, speed, duplex). |
| set_wifi_bandB | Enable or disable a wireless band ('2g', '5g', '5g_2', '6g'). |
| get_syslogA | System log (newest first): [{time, level, type, content}]. Shows DHCP DECLINE loops, SAE/WPA handshake failures, DFS radar events, session kicks, etc. Filter by level (INFO/WARNING/ERROR) and/or log_type (see the router's categories). |
| get_dhcp_settingsA | DHCP server config: enable, pool ipaddr_start/end, leasetime (minutes), gateway, DNS. |
| set_dhcp_settingsA | Update DHCP server settings (only the given fields). Restarts the DHCP server; existing leases keep their IP until renewal. leasetime is in minutes. |
| list_reservationsC | DHCP address reservations: [{mac, ip, comment, hostname, enable}]. |
| add_reservationA | Reserve an IP for a MAC (AA-BB-CC-DD-EE-FF). The correct fix for a device stuck in static-in-pool limbo — reserve it instead of relying on a static IP inside the pool. |
| remove_reservationC | Delete the DHCP reservation for a MAC. |
| get_client_statsA | Per-client wireless stats for online clients: signal_dbm (RSSI), tx/rx_rate_kbps (negotiated PHY rate), band, online_seconds, packet counts. Turns "wifi is slow" into a one-call diagnosis (weak RSSI vs low PHY rate vs a specific band). |
| get_wifi_radioA | Full radio settings for a band ('2g','5g','5g_2','6g'): ssid, channel, htmode (width), encryption, txpower, mu_mimo, airtime_fairness. PSK redacted unless reveal_secrets=True. |
| set_wifi_channelA | Set a band's channel (channel='auto' to auto-select) and optional width (htmode '20'/'40'/'80'). ⚠️ Restarts the radio: clients on that band drop for ~10 s; a DFS 5 GHz channel adds a ~60 s radar-scan quiet period. Requires confirm=True. |
| set_wifi_securityA | Set a band's security mode / PSK. ⚠️ Restarts the radio and disconnects EVERY client on that band until they re-auth with the new settings. Requires confirm=True. |
| get_wpsC | WPS global state ({wps: on/off}). |
| set_wpsB | Enable or disable WPS globally. |
| get_guest_networkA | Guest network config for a band. PSK redacted unless reveal_secrets=True. |
| set_guest_networkC | Turn a band's guest network on or off. |
| get_wireless_advancedC | Advanced radio settings ("Additional Settings"): tx power, MU-MIMO, WMM, AP isolation, airtime fairness, short GI, beacon interval, DTIM, RTS/fragmentation threshold, group-key update, plus the Wi-Fi 6 toggles OFDMA, TWT (Target Wake Time — phone power-save), and Smart Connect band steering. |
| set_wireless_advancedA | Set per-band tx power ('high'/'mid'/'low'), MU-MIMO, and/or airtime fairness. ⚠️ Restarts the radio; clients on the band drop briefly. Requires confirm=True. |
| set_ofdmaA | Enable/disable OFDMA (Wi-Fi 6). ⚠️ Restarts the radios; clients drop briefly. confirm=True. |
| set_twtA | Enable/disable Target Wake Time (Wi-Fi 6 power-save; eases iOS/phone battery drain). ⚠️ Restarts the radios; clients drop briefly. Requires confirm=True. |
| set_smart_connectA | Enable/disable Smart Connect band steering (single SSID across bands). ⚠️ Restarts the radios; clients drop briefly. Requires confirm=True. |
| set_wireless_sysparaA | Set the advanced radio parameters for a band — WMM, AP isolation, beacon interval, DTIM period, RTS/fragmentation threshold, group-key update interval. ⚠️ Restarts the radio; clients on the band drop briefly. Requires confirm=True. |
| get_ipv6_statusB | IPv6 WAN + LAN status: connection type/enable, LAN address & prefix, DNS, assign type. |
| session_infoA | Session observability: age_seconds, login_count, stok_prefix — lets you see the auto-recovery (re-login) happen instead of trusting it silently. |
| raw_requestA | Call any router endpoint, e.g. form_path='status?form=client_status', operation='load'. |
| list_endpointsA | Known API endpoints for raw_request: [{form_path, operations, purpose, read_safe}]. Optionally filter to form paths/purposes containing a substring (e.g. 'dhcp', 'wireless'). |
| reboot_routerA | Reboot the router. Must be called with confirm=True to actually reboot. |
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 33 tools
The Wi-Fi read surface is split across wifi_info, get_wifi_radio, get_wireless_advanced, and router_status with overlapping SSID/security/txpower/MU-MIMO fields; set_wireless_advanced vs set_wireless_syspara also require close reading. Descriptions are detailed enough to resolve most cases, so overlap exists but is usually manageable.
Most names are snake_case and action-oriented, but the set mixes verb_noun patterns (get_firmware_info, list_clients, set_wifi_band) with noun-only names (router_status, wifi_info, dhcp_leases, ethernet_ports, session_info). It remains readable, but there is no single predictable naming convention throughout.
33 tools is beyond the 25-tool threshold and many are granular setters (set_ofdma, set_twt, set_smart_connect, set_wireless_syspara) that could plausibly be consolidated. The router domain is broad, but the tool surface feels heavy for what an agent can reliably select among.
Core Wi-Fi, DHCP, client diagnostics, reservations, and reboot workflows are covered, and raw_request/list_endpoints provide an escape hatch. However, common router administration areas like port forwarding, firewall/MAC filtering, LAN settings, VPN/QoS, and device blocking are absent as first-class tools.