AsusWRT MCP Server

Servidor do Protocolo de Contexto de Modelo para administração segura de roteadores AsusWRT via SSH. Oferece mais de 42 ferramentas de monitoramento somente leitura e ferramentas de mutação protegidas para gerenciar roteadores AsusWRT/Merlin.

Documentação

Servidor MCP AsusWRT

Python 3.11+ MIT License Project Status: Active

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

Servidor Model Context Protocol (MCP) para administração segura e controlada de roteadores AsusWRT e AsusWRT-Merlin via SSH.

Visão Geral

Este servidor MCP fornece aos assistentes de IA (como Claude, Cursor, etc.) uma interface segura para monitorar e gerenciar roteadores AsusWRT. Ele opera exclusivamente via SSH usando operações em lista de permissões—sem execução arbitrária de comandos, sem modificações de firmware e sem redefinições de fábrica.

Recursos

Monitoramento Somente Leitura (42 ferramentas)

CategoriaFerramentas
Identidade e SaúdeModelo do roteador, versão do firmware, tempo de atividade, carga, memória
RedeDetalhes LAN/WAN, configuração de DNS, status IPv6, tabela de roteamento
ClientesClientes conectados, concessões DHCP, vizinhos ARP
Sem FioStatus do rádio, SSIDs, redes de convidados, contagem de clientes por banda
ServiçosProcessos em execução, portas abertas, tarefas cron
ArmazenamentoDispositivos USB, montagens, partições, uso do sistema de arquivos
SegurançaUPnP, DDNS, status Samba, uso de conntrack
VPNServidor OpenVPN, WireGuard, perfis de cliente VPN
AdministraçãoPortas de administração web, configurações de acesso SSH/telnet
DiagnósticoDiagnóstico TCP/banner/auth SSH, instantâneo de configuração

Ferramentas de Mutação (com proteções de segurança)

Todas as ferramentas de mutação exigem:

  • Parâmetro confirm: true
  • Variável de ambiente ASUSWRT_ALLOW_MUTATIONS=true
  • Suporte para dry_run: true para visualizar alterações
FerramentaDescrição
asuswrt_restart_serviceReiniciar serviços em lista de permissões (httpd, firewall, wireless, dnsmasq, etc.)
asuswrt_dhcp_serverAtivar/desativar servidor DHCP
asuswrt_upnpAtivar/desativar UPnP
asuswrt_radioAtivar/desativar bandas de rádio Wi-Fi
asuswrt_guest_wifiAtivar/desativar Wi-Fi de convidados
asuswrt_guest_lan_accessAlternar acesso LAN para Wi-Fi de convidados
asuswrt_port_forwardingListar, adicionar, remover, ativar/desativar regras de encaminhamento de porta
asuswrt_vpn_serverAtivar/desativar servidor OpenVPN
asuswrt_parental_accessListar, bloquear, desbloquear, remover regras de controle parental
asuswrt_parental_block_allAlternar modo de bloqueio total
asuswrt_dhcp_reservationListar, adicionar, remover reservas estáticas DHCP

Modelo de Segurança

  • Sem SSH arbitrário: Apenas comandos em lista de permissões são executados via chamadas NVRAM e de serviço
  • Sem operações de firmware: Sem flash, redefinição ou acesso ao bootloader
  • Redação de segredos: Senhas e dados sensíveis nunca são expostos nas respostas das ferramentas
  • Suporte a simulação: Toda mutação pode ser visualizada antes de ser aplicada
  • Confirmação necessária: Mutações exigem confirm=True explícito
  • Transporte somente SSH: Sem exposição da API web do roteador

Pré-requisitos

  • Python 3.11+
  • Um roteador AsusWRT ou AsusWRT-Merlin com acesso SSH habilitado
  • Conectividade de rede do cliente MCP ao roteador

Instalação

1. Clonar e configurar

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. Configurar ambiente

# Copy example configuration
cp .env.example .env

# Edit with your router credentials
# Use your favorite editor:
notepad .env        # Windows
nano .env           # Linux/macOS

3. Configurar .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

Uso

Executar o servidor MCP

# Standard stdio mode
python -m asuswrt_mcp.server

# Or use the entry point
asuswrt-mcp

Configurar no Claude Desktop / Cursor

Adicione ao seu 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"
      }
    }
  }
}

Usando com npx Inspector (desenvolvimento)

npx @modelcontextprotocol/inspector python -m asuswrt_mcp.server

Desenvolvimento

Executar testes

pip install -e ".[dev]"
pytest

Executar com testes de integração com roteador real

ASUSWRT_TEST_ROUTER=1 pytest

Estrutura do Projeto

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

Licença

Licença MIT - consulte LICENSE para detalhes.

Agradecimentos