mcpField
A
Asuswrt Mcp Server

Asuswrt Mcp Server

Local
github.com/teeflooDeveloper Tools3Updated 26w ago

About Asuswrt Mcp Server

Asuswrt Mcp Server provides an SSH-based interface for monitoring and administering AsusWRT and AsusWRT-Merlin routers. It combines extensive read-only status tools with guarded changes that require confirmation and support dry runs.

Key features

  1. 01Read router health, network, and client status
  2. 02Inspect wireless, services, storage, and security
  3. 03Monitor VPN and administration settings
  4. 04Change allowlisted router settings with safeguards
  5. 05Preview changes and redact sensitive data

Use cases

  1. 01Check router health and connected clients
  2. 02Inspect wireless and VPN configuration
  3. 03Manage DHCP, guest Wi-Fi, or port forwarding
  4. 04Preview a guarded router change

MCP support

It exposes router monitoring and guarded administration tools to MCP clients over SSH. Operations are allowlisted; mutations require explicit confirmation and can be previewed.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"asuswrt": {
"command": "uvx",
"args": [
"asuswrt-mcp"
],
"env": {
"ASUSWRT_HOST": "<ASUSWRT_HOST>",
"ASUSWRT_SSH_USERNAME": "<ASUSWRT_SSH_USERNAME>",
"ASUSWRT_SSH_PASSWORD": "<ASUSWRT_SSH_PASSWORD>",
"ASUSWRT_SSH_KEY_FILE": "<ASUSWRT_SSH_KEY_FILE>",
"ASUSWRT_ALLOW_MUTATIONS": "<ASUSWRT_ALLOW_MUTATIONS>"
}
}
}
}
Run commanduvx asuswrt-mcp
Environment variables to set
ASUSWRT_HOSTRouter IP address (e.g., 192.168.1.1)
ASUSWRT_SSH_USERNAMESSH username for router authentication
ASUSWRT_SSH_PASSWORDSecretSSH password for router authentication
ASUSWRT_SSH_KEY_FILESecretPath to SSH private key file (alternative to password)
ASUSWRT_ALLOW_MUTATIONSEnable mutation tools (default: false)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypiasuswrt-mcp0.1.1

Tools

47

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project 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
git clone https://github.com/Teeflo/asuswrt-mcp.git
cd asuswrt-mcp

# Create virtual environment
python -m venv .venv

# Activate (Linux/macOS)
source .venv/bin/activate

# Activate (Windows)
.venv\Scripts\activate

# Install dependencies
pip install -e .
2. Configure environment
# Copy example configuration
cp .env.example .env

# Edit with your router credentials
# Use your favorite editor:
notepad .env        # Windows
nano .env           # Linux/macOS
3. Configure .env
# Required: Router connection
ASUSWRT_HOST=192.168.1.1
ASUSWRT_SSH_USERNAME=admin
ASUSWRT_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
# Standard stdio mode
python -m asuswrt_mcp.server

# Or use the entry point
asuswrt-mcp
Configure in Claude Desktop / Cursor

Add to your claude_desktop_config.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)
npx @modelcontextprotocol/inspector python -m asuswrt_mcp.server

Development

Run tests
pip install -e ".[dev]"
pytest
Run with live router integration tests
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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.