keenetic
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROUTER_HOST | Yes | LAN-адрес роутера (в свойствах сети — "основной шлюз") | |
| ROUTER_PORT | No | Порт роутера (по умолчанию 80) | 80 |
| ROUTER_LOGIN | Yes | Имя пользователя для входа на роутер | |
| ROUTER_PASSWORD | Yes | Пароль пользователя для входа на роутер | |
| ALLOW_DESTRUCTIVE | No | Установите true, чтобы разрешить опасные операции (например, перезагрузку роутера). По умолчанию false. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_versionB | Версия KeeneticOS и модель роутера. |
| check_firmware_updateA | Проверяет через компонентный менеджер роутера, доступна ли новая версия KeeneticOS в настроенном канале обновлений. ТРЕБУЕТ прав основного аккаунта admin — под менее привилегированным аккаунтом роутер отвечает ошибкой "execute denied" (подтверждено вживую на роутере разработки под непривилегированным аккаунтом). Это ограничение самого RCI, а не баг инструмента: если получена такая ошибка, сообщи пользователю, что нужен admin-аккаунт в конфигурации MCP-сервера (ROUTER_LOGIN/ROUTER_PASSWORD), и не пытайся обойти это иначе. |
| get_system_infoB | Аптайм, загрузка, память и т.п. |
| get_interfacesA | Все сетевые интерфейсы роутера (WAN, Wi-Fi, VPN, мосты) и их состояние. |
| list_devicesA | Список устройств из таблицы DHCP/hotspot: MAC, IP, имя, интерфейс. |
| get_wan_statusB | Состояние основного интернет-подключения. |
| list_wifi_clientsB | Устройства, ассоциированные с точками доступа. |
| list_port_forwardsC | Текущие правила проброса портов. |
| list_routesB | Таблица статических маршрутов роутера. |
| list_dhcp_reservationsB | Статические привязки IP к MAC. |
| list_vpn_interfacesA | Отфильтрованный список интерфейсов роутера — только VPN-туннели (WireGuard подтверждён вживую; OpenVPN/IKEv2/L2TP/PPTP/VLESS — по типу, не проверено на реальном роутере). Используй для последующей привязки маршрутов (bind_route_to_vpn). |
| export_configA | Возвращает полный running-config роутера текстом (CLI-синтаксис) — та же информация, что и кнопка "Сохранить" у running-config в веб-интерфейсе (Управление → Настройки системы → Системные файлы). ВАЖНО: результат содержит секреты в открытом/слабо обфусцированном виде — хэши паролей пользователей, WPA-PSK Wi-Fi, параметры WireGuard. Перед вызовом предупреди пользователя об этом. После получения результата не пересказывай и не цитируй секретные значения без необходимости; если пользователь просит сохранить бэкап — предложи записать его в файл вне git-репозитория (в нём секреты в открытом виде), а не просто оставить текст в переписке. |
| set_wifi_passwordB | Устанавливает новый WPA-PSK пароль на указанной точке доступа. |
| set_wifi_enabledA | Поднимает или гасит указанную точку доступа (например гостевую сеть). |
| add_port_forwardA | Создаёт правило port forwarding с внешнего порта на внутренний IP:порт. |
| remove_port_forwardB | Удаляет ранее созданное правило port forwarding. |
| add_routeC | Добавляет статический маршрут. |
| remove_routeB | Удаляет статический маршрут. |
| bind_route_to_vpnA | Направляет трафик указанной сети через уже настроенный на роутере VPN-интерфейс (policy-based routing). |
| unbind_route_from_vpnB | Убирает привязку сети к VPN-интерфейсу. |
| add_domain_routeA | Создаёт object-group fqdn со списком доменов и привязывает его через dns-proxy route к указанному интерфейсу. Форма подтверждена вживую (перехват XHR веб-интерфейса на Keenetic Hero 4G+). |
| run_route_batchA | Читает .bat-файл, разбирает его ограниченной грамматикой (ROUTE ADD/DELETE, VPN BIND/UNBIND) и применяет построчно. Файл не исполняется системным интерпретатором — только заранее известные команды. Любая нераспознанная строка отклоняет весь батч (fail-closed) ещё до применения. dryRun возвращает все RCI payload'ы без отправки на роутер. |
| reboot_routerA | Немедленная перезагрузка роутера. Требует ALLOW_DESTRUCTIVE=true в конфигурации сервера. RCI-форма запроса НЕ проверена вживую на реальном устройстве в рамках этого проекта — рекомендуется сначала dryRun и явное подтверждение пользователя перед первым использованием. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Большинство инструментов чётко различаются по ресурсу и действию (get_version, list_routes, set_wifi_password и т.д.). Небольшое пересечение есть между list_devices и list_wifi_clients, а также get_interfaces и list_vpn_interfaces, но описания явно указывают на разные контексты использования, так что путаница маловероятна.
Все имена следуют единому шаблону 'глагол_существительное' в нижнем регистре с подчёркиваниями: get_version, list_interfaces, set_wifi_enabled, add_port_forward, remove_route, bind_route_to_vpn. Нет разнобоя в стилях или нечитаемых сокращений.
23 инструмента попадают в диапазон 16-25, который по калибровке считается тяжёлым. Однако для полноценного управления роутером (сети, VPN, WiFi, проброс портов, маршрутизация) количество оправдано, но всё же превышает идеальный минимум.
Покрыты основные операции: список/создание/удаление маршрутов и проброса портов, управление WiFi, VPN-привязка, просмотр состояния. Но отсутствуют remove_domain_route (есть только add_domain_route), управление DHCP-резервированиями (только list), а также нет инструментов для обновления прошивки или изменения системных настроек, что создаёт заметные пробелы.