Asuswrt Mcp

io.github.teeflooPublished by GitHub account teefloov0.1.1Updated Oct 24, 2026

Secure AsusWRT router administration via SSH — 42+ tools, guarded mutations

Overview

AI-generated overview

Lets an assistant monitor and, when explicitly enabled, change settings on an AsusWRT or AsusWRT-Merlin router over SSH.

What you can do
Provides 42 read-only tools covering router identity and health, LAN/WAN and DNS configuration, connected clients and DHCP leases, wireless radios and guest networks, running services and open ports, storage, security features, VPN status, and SSH diagnostics. Optional mutation tools can restart allowlisted services, toggle DHCP, UPnP, Wi-Fi radios and guest networks, manage port forwarding, OpenVPN server, parental controls, and DHCP reservations. Mutations require an explicit confirm parameter and support dry-run previews.
When to use it
Useful when you want an assistant to inspect a home or small-office Asus router's status, clients, wireless, VPN, or security settings without logging into the web interface. Add it if you also want guided, guarded changes such as restarting a service or adjusting guest Wi-Fi, port forwarding, or parental controls.
Requirements
Runs locally as a Python package (Python 3.11+) over stdio. Needs network reachability from the machine to the router and SSH access enabled on the router. Required environment variables: ASUSWRT_HOST, ASUSWRT_SSH_USERNAME, and either ASUSWRT_SSH_PASSWORD or ASUSWRT_SSH_KEY_FILE. Mutations additionally need ASUSWRT_ALLOW_MUTATIONS set to true.
Before you install
The server holds router SSH credentials (ASUSWRT_SSH_PASSWORD or ASUSWRT_SSH_KEY_FILE); store them carefully. Mutation tools can change live network behavior, including disabling Wi-Fi radios, DHCP, or UPnP, altering port forwarding, and blocking clients via parental controls; they stay disabled unless ASUSWRT_ALLOW_MUTATIONS is enabled, and each call needs confirm=true, so preview with dry_run first. The README states passwords are redacted from responses and no arbitrary commands or firmware…

Installation

In SourceWeft

  1. Open Asuswrt Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

AsusWRT MCP Server

[Python 3.11+] [MIT License] [Project Status: Active]

mcp-name: io.github.teefloo/asuswrt-mcp

Model Context Protocol (MCP) server for secure, controlled administration of AsusWRT and AsusWRT-Merlin routers via SSH.

Overview

This MCP server provides AI assistants (like Claude, Cursor, etc.) with a safe interface to monitor and manage AsusWRT routers. It operates exclusively over SSH using allowlisted operations—no arbitrary command execution, no firmware modifications, and no factory resets.

Features

Read-Only Monitoring (42 tools)

CategoryTools
Identity & HealthRouter model, firmware version, uptime, load, memory
NetworkLAN/WAN details, DNS config, IPv6 status, routing table
ClientsConnected clients, DHCP leases, ARP neighbors
WirelessRadio status, SSIDs, guest networks, client counts per band
ServicesRunning processes, open ports, cron jobs
StorageUSB devices, mounts, partitions, filesystem usage
SecurityUPnP, DDNS, Samba status, conntrack usage
VPNOpenVPN server, WireGuard, VPN client profiles
AdministrationWeb admin ports, SSH/telnet access settings
DiagnosticsSSH TCP/banner/auth diagnostics, config snapshot

Mutation Tools (with safety guards)

All mutation tools require:

  • confirm: true parameter
  • ASUSWRT_ALLOW_MUTATIONS=true environment variable
  • Support for dry_run: true to preview changes
ToolDescription
asuswrt_restart_serviceRestart allowlisted services (httpd, firewall, wireless, dnsmasq, etc.)
asuswrt_dhcp_serverEnable/disable DHCP server
asuswrt_upnpEnable/disable UPnP
asuswrt_radioEnable/disable Wi-Fi radio bands
asuswrt_guest_wifiEnable/disable guest Wi-Fi
asuswrt_guest_lan_accessToggle LAN access for guest Wi-Fi
asuswrt_port_forwardingList, add, remove, enable/disable port forwarding rules
asuswrt_vpn_serverEnable/disable OpenVPN server
asuswrt_parental_accessList, block, unblock, remove parental control rules
asuswrt_parental_block_allToggle block-all mode
asuswrt_dhcp_reservationList, add, remove DHCP static reservations

Safety Model

  • No arbitrary SSH: Only allowlisted commands are executed via NVRAM and service calls
  • No firmware operations: No flash, reset, or bootloader access
  • Secret redaction: Passwords and sensitive data are never exposed in tool responses
  • Dry-run support: Every mutation can be previewed before applying
  • Confirmation required: Mutations require explicit confirm=True
  • SSH-only transport: No exposure of the router's web API

Prerequisites

  • Python 3.11+
  • An AsusWRT or AsusWRT-Merlin router with SSH access enabled
  • Network connectivity from the MCP client to the router

Installation

1. Clone and setup

bash
git clone https://github.com/Teeflo/asuswrt-mcp.gitcd asuswrt-mcp
# Create virtual environmentpython -m venv .venv
# Activate (Linux/macOS)source .venv/bin/activate
# Activate (Windows).venv\Scripts\activate
# Install dependenciespip install -e .

2. Configure environment

bash
# Copy example configurationcp .env.example .env
# Edit with your router credentials# Use your favorite editor:notepad .env        # Windowsnano .env           # Linux/macOS

3. Configure .env

env
# Required: Router connectionASUSWRT_HOST=192.168.1.1ASUSWRT_SSH_USERNAME=adminASUSWRT_SSH_PASSWORD=your_password
# Optional: SSH key authentication# ASUSWRT_SSH_KEY_FILE=~/.ssh/id_rsa
# Optional: Enable mutations (disabled by default)# ASUSWRT_ALLOW_MUTATIONS=true
# Optional: Connection settings# ASUSWRT_SSH_PORT=22# ASUSWRT_TIMEOUT_SECONDS=10

Usage

Run the MCP server

bash
# Standard stdio modepython -m asuswrt_mcp.server
# Or use the entry pointasuswrt-mcp

Configure in Claude Desktop / Cursor

Add to your claude_desktop_config.json:

json
{  "mcpServers": {    "asuswrt-mcp": {      "command": "C:\\path\\to\\asuswrt-mcp\\.venv\\Scripts\\python.exe",      "args": ["-m", "asuswrt_mcp.server"],      "env": {        "ASUSWRT_HOST": "192.168.1.1",        "ASUSWRT_SSH_USERNAME": "admin",        "ASUSWRT_SSH_PASSWORD": "your_password"      }    }  }}

Using with npx Inspector (development)

bash
npx @modelcontextprotocol/inspector python -m asuswrt_mcp.server

Development

Run tests

bash
pip install -e ".[dev]"pytest

Run with live router integration tests

bash
ASUSWRT_TEST_ROUTER=1 pytest

Project Structure

asuswrt-mcp/├── src/asuswrt_mcp/│   ├── server.py          # FastMCP entrypoint & tool definitions│   ├── service.py         # Business logic & router operations│   ├── config.py          # Settings management│   ├── clients/│   │   └── ssh.py         # SSH client wrapper│   ├── nvram.py           # NVRAM parsing utilities│   ├── ssh_parsers.py     # Output parsers for SSH commands│   ├── security.py        # Mutation guards & redaction│   ├── validators.py      # Input validation│   ├── responses.py       # Tool response formatting│   ├── errors.py          # Custom exceptions│   └── serialization.py   # Safe serialization├── tests/                 # Test suite (69 tests)├── .env.example           # Example configuration├── pyproject.toml         # Project metadata└── README.md              # This file

License

MIT License - see LICENSE for details.

Acknowledgments

Source: README.md at commit 4651689

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts