MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

T
Tenda MCP Server

MCP server for managing Tenda routers — devices, WiFi, parental controls, bandwidth

Created 5/7/2026
Updated about 3 hours ago
Repository documentation and setup instructions

tenda-mcp-server

An MCP server for managing Tenda routers from any MCP-compatible client (Claude Desktop, Claude Code, etc.).

Talks to the router's web admin interface over HTTP — no firmware modification required. Tested against Tenda AC-series routers.

Features

  • Devices — list connected devices, block/unblock by MAC or name, set per-device bandwidth limits
  • WiFi — read settings, change SSID/password, hide/show SSID
  • Parental controls — toggle per device, set allowed time schedule
  • System — reboot, toggle remote web admin, view WAN/LAN/NAT settings
  • Wireless repeating — read bridge config

Quickstart

You don't need to clone — npx will fetch and run the server straight from GitHub.

Claude Code (CLI)

claude mcp add tenda-router \
  --env TENDA_ROUTER_IP=192.168.0.1 \
  --env TENDA_ROUTER_PASSWORD=your-router-password \
  -- npx -y github:manishv90/tenda-mcp-server

Claude Desktop

Add to claude_desktop_config.json (location: %APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):

{
  "mcpServers": {
    "tenda-router": {
      "command": "npx",
      "args": ["-y", "github:manishv90/tenda-mcp-server"],
      "env": {
        "TENDA_ROUTER_IP": "192.168.0.1",
        "TENDA_ROUTER_PASSWORD": "your-router-password"
      }
    }
  }
}

Restart your client — the tools listed below will be available.

Local install (optional)

If you'd rather run from a local clone:

git clone https://github.com/manishv90/tenda-mcp-server.git
cd tenda-mcp-server
npm install
TENDA_ROUTER_PASSWORD=your-password node server.js

Then point your MCP client command at node and args at ["/absolute/path/to/server.js"].

Configuration

| Variable | Default | Description | | --- | --- | --- | | TENDA_ROUTER_IP | 192.168.0.1 | Router LAN IP | | TENDA_ROUTER_PASSWORD | admin | Router admin password |

Find your router IP from your computer's gateway (ipconfig on Windows, route -n get default on macOS). The password is whatever you set during router setup — there's no factory default on modern Tenda firmware.

Tools

| Tool | Description | | --- | --- | | list_devices | List all connected devices | | block_device / unblock_device | Block/unblock by MAC | | block_by_name / unblock_by_name | Block/unblock by device name (partial match) | | set_bandwidth_limit | Per-device upload/download caps | | get_wifi_settings | Read WiFi config | | set_wifi_password | Change WiFi password | | set_wifi_ssid | Change WiFi network name | | toggle_wifi | Hide/show SSID | | get_parental_controls | Read parental control config | | set_parental_control_device | Enable/disable parental controls per device | | set_parental_schedule | Set allowed online time window | | get_wan_info | WAN status | | get_system_info | LAN, time, remote-web settings | | set_remote_web_access | Toggle remote web management | | reboot_router | Reboot the router | | get_nat_settings | DMZ, port forwarding, UPnP, DDNS | | get_wifi_relay | Wireless repeating config |

Requirements

  • Node.js 18+ (uses top-level await and native fetch-era APIs)
  • Network access to your router's web admin port (HTTP/80)

How it works

Tenda's web admin uses a simple challenge-based login: the client gets a random nonce from /goform/getstok, then posts MD5(base64(password) + nonce) to /login/Auth. The session cookie is reused for subsequent /goform/* GET/POST calls.

Some Tenda firmware returns HTTP responses with bare LF line endings, which Node's strict parser rejects — the server uses insecureHTTPParser: true to handle this.

Troubleshooting

  • Login failed — no cookie returned — wrong TENDA_ROUTER_PASSWORD, or your router is on a different IP. Try the password you use to log into the web admin.
  • ECONNREFUSED / ETIMEDOUTTENDA_ROUTER_IP is wrong, or you're not on the same network as the router. Confirm you can open http://<router-ip> in a browser.
  • Tool calls succeed but nothing changes — check errCode in the response. Non-zero typically means the firmware rejected the request (e.g. an SSID with disallowed characters).

Compatibility

Built against a Tenda AC-series router. The endpoint paths (/goform/getQos, /goform/getWifi, etc.) are common across the AC line, but field names may differ on other models. PRs welcome.

License

MIT

Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-tenda-mcp-server

Cursor configuration (mcp.json)

{ "mcpServers": { "manishv90-tenda-mcp-server": { "command": "npx", "args": [ "manishv90-tenda-mcp-server" ] } } }