Skip to content

Releases: Picaresco/MCP-ZTE-F680

v0.3.0 — Read-only status tools

Choose a tag to compare

@Picaresco Picaresco released this 17 Apr 23:14

What's new

Six new read-only tools that translate the router's cryptic internal fields into human-friendly tables:

  • zte_get_device_info — model, serial, firmware, hardware, bootloader, WiFi chipsets
  • zte_get_wan_status — public IP, gateway, DNS, WAN MAC, connection type, uptime
  • zte_get_wifi_info — both bands (SSID, channel, real PSK key, BSSID, traffic stats)
  • zte_get_dhcp_leases — connected devices with IP, MAC, hostname, connection type and lease expiry
  • zte_get_dmz — DMZ state + configured internal host
  • zte_get_wifi_clients — associated WiFi clients with RSSI signal strength

Under the hood

  • Codebase split into 5 focused modules: http_client, parsers, pages, formatters, server.
  • New parser for the router's third HTML format (plain <td class="tdright"> tables used by the WAN status page).
  • 32 unit tests running against real HTML fixtures captured from the router — no hardware needed to develop or run the test suite.
  • The 7 existing NAT / port forwarding tools remain unchanged.

Install / upgrade

uvx zte-f680-mcp@latest

Already registered? Force-refresh the cache:

uvx --refresh zte-f680-mcp

Links

v0.2.0 — Quick-open ports with auto-detected local IP

Choose a tag to compare

@Picaresco Picaresco released this 14 Apr 22:21

Two new tools make opening ports almost conversational.

What's new

Tools added

  • zte_get_local_ip — returns the IP of the host in the router's subnet (cross-platform, multi-homed aware).
  • zte_open_port(port, protocol=\"TCP+UDP\", internal_host=None, internal_port=None, name=None) — opens one port with smart defaults: auto local IP, same port on both sides, auto-generated name.

Conversational flow

The server now ships MCP instructions that guide the LLM to:

  1. Detect your local IP.
  2. Ask "Redirijo 8080 → 192.168.1.X:8080?".
  3. Open the port only after you confirm.

Under the hood

  • Extracted _create_port_forward() helper, shared by zte_add_port_forward (unchanged) and the new zte_open_port.
  • _get_local_ip_for(target) uses the UDP+connect+getsockname trick — no packets sent, picks the correct interface automatically on Linux, Windows and macOS.
  • No new dependencies.

Backwards compatibility

✅ Fully backwards compatible. Existing zte_add_port_forward, zte_modify_port_forward, zte_delete_port_forward, zte_get_port_forwards, zte_run_page are unchanged.

Install / upgrade

New users: same command as before, just uvx picks the latest:

```bash
uvx zte-f680-mcp
```

Existing users: uvx caches, so force a refresh the first time:

```bash
uv cache clean zte-f680-mcp # or just wait for next cache purge
```

Example

User: abre el puerto 8080
Assistant: He detectado tu IP local como 192.168.1.128. ¿Redirijo 8080 → 192.168.1.128:8080?
User:
Assistant: ✓ Regla añadida. (+ shows new rule list)

Links

v0.1.0 — First PyPI release

Choose a tag to compare

@Picaresco Picaresco released this 14 Apr 21:47

First release of zte-f680-mcp on PyPI.

Install

Any MCP-compatible client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, OpenAI Agents SDK, …) can now use this server with a single command:

uvx zte-f680-mcp

Example for Claude Code:

claude mcp add zte \
  --env ZTE_HOST=192.168.1.1 \
  --env ZTE_USER=1234 \
  --env ZTE_PASSWORD=your_password \
  -- uvx zte-f680-mcp

See the README for configs on Claude Desktop, Cursor, Windsurf, OpenAI Agents SDK, and classic pip install.

Links

Tools exposed

  • zte_get_port_forwards — list all NAT rules
  • zte_add_port_forward — add a new rule
  • zte_modify_port_forward — modify rule by index
  • zte_delete_port_forward — delete rule by index
  • zte_run_page — fetch and parse any router page (generic)