tplink-easy-smart-switch-mcp
TP-Link Easy Smart Switch MCP
MCP-сервер на TypeScript + Bun для коммутаторов TP-Link и Mercury Easy Smart. Он работает через веб-интерфейс коммутатора и не зависит от SNMP.
Цель по умолчанию: http://192.168.3.10
Установка в качестве плагина Codex
Сначала установите Bun, затем добавьте независимый маркетплейс network-tools и этот плагин:
codex plugin marketplace add qwe7002-ai/net-tool-plugins --ref main
codex plugin add tplink-easy-smart-switch-mcp@net-tool-pluginsПосле установки запустите новую задачу Codex, чтобы инструменты MCP и навык управления коммутаторами были загружены.
Related MCP server: mcp-omada
Протестированные модели
Текущая реализация протестирована на следующих снимках веб-интерфейса и вызовах статуса только для чтения:
TP-Link TL-SE2106 по адресу
192.168.3.10, прошивка1.8.1 Build 20251128 Rel.57341Mercury SE106 Pro по адресу
192.168.3.11, прошивка1.0.0 Build 20240812 Rel.65021
Другие коммутаторы TP-Link или Mercury Easy Smart могут работать, если они используют те же страницы веб-интерфейса и CGI-эндпоинты, но они ещё не проверены.
Подтверждённые особенности устройств
Интерфейс управления доступен по HTTP
80Форма входа отправляется на
POST /logon.cgiПоля входа:
usernameи зашифрованныйpasswordСтраница входа загружает
/cryp_new.jsИзвестные переменные веб-интерфейса включают
g_product,g_yearиencryptTypeНекоторые прошивки предоставляют токен запроса в виде простого числового присваивания, например
g_tid=1320064778;, а не строки в кавычках. Другие страницы могут только ссылаться наtop.g_tid, поэтому парсеры должны различать присваивания и ссылки.
Инструменты
Инструменты только для чтения:
get_switch_status: Вернуть сводку статуса коммутатораget_port_status: Вернуть статус портовget_vlan_status: Вернуть статус VLAN портов, 802.1Q VLAN, PVID и MTU VLANget_trunk_status: Вернуть статус агрегации портов/LAGsearch_mac_address: Запроситьmac_address_search.cgiпо одному MAC-адресу и вернуть изученный порт/VLAN, если коммутатор содержит записьanalyze_topology: Проанализировать два или более каскадно подключённых коммутатора и сообщить порт межкоммутаторного канала, связь вышестоящего/нижестоящего и соотношение VLAN через этот канал
Анализ топологии работает так: выполняется вход в каждый коммутатор и запрос к поиску MAC через CGI по управляющему MAC-адресу соседнего коммутатора. Если коммутатор сообщает MAC-адрес соседа на порту, этот порт используется как подтверждение межкоммутаторного канала. Когда поиск MAC не может подтвердить канал, обнаружение переключается на активные пары портов SFP/10G как на предположение с низкой уверенностью, отдавая предпочтение пересечению VLAN и используя живой трафик как решающий фактор. У этих коммутаторов Easy Smart нет LLDP, поэтому доступным сигналом является такая внутриполосная корреляция.
Инструменты настройки CGI:
configure_mtu_vlan: Сгенерировать или отправитьmtuVlanSet.cgiизVlanMtuRpm.htmconfigure_port_vlan: Сгенерировать или отправитьpvlanSet.cgiизVlanPortBasicRpm.htmconfigure_8021q_vlan: Сгенерировать или отправитьqvlanSet.cgiизVlan8021QRpm.htmconfigure_vlan_pvid: Сгенерировать или отправитьvlanPvidSet.cgiизVlan8021QPvidRpm.htmconfigure_trunk_group: Сгенерировать или отправитьport_trunk_set.cgi/port_trunk_display.cgiизPortTrunkRpm.htmsave_configuration: Сгенерировать или отправитьPOST savingconfig.cgiизSavingConfigRpm.htm
Инструменты настройки по умолчанию используют apply: false, что возвращает предварительный просмотр запроса в режиме dry-run и ничего не отправляет. Реальная запись требует выполнения всех следующих условий:
apply: trueconfirm: "APPLY"Успешный вход
Пройдена проверка правил веб-интерфейса
Читаемый
token/top.g_tid
Установка
bun installЗапуск во время разработки
bun run src/index.tsСборка бинарного файла
Windows:
bun run build:winТекущая платформа:
bun run buildРезультат сборки записывается в dist/.
Если MCP-клиент во время initialize всё ещё сообщает о старой версии сервера, его command, вероятно, указывает на старый исполняемый файл. Обновите его на dist/tplink-easy-smart-switch-mcp.exe и перезапустите клиент.
Отладка MCP
Список инструментов MCP:
bun run debugВызовите инструмент статуса коммутатора:
bun run debug -- --tool get_switch_status --host 192.168.3.10 --username admin --password your-password
bun run debug -- --tool get_switch_status --host 192.168.3.11Вызовите инструмент статуса портов:
bun run debug -- --tool get_port_status --host 192.168.3.10 --username admin --password your-passwordПредварительно просмотрите запросы настройки без их отправки:
bun run debug -- --tool configure_mtu_vlan --params '{ "enabled": true }'
bun run debug -- --tool configure_port_vlan --params '{ "mode": "set", "vid": 1, "ports": "1,2" }'
bun run debug -- --tool configure_8021q_vlan --params '{ "mode": "set", "vid": 20, "name": "main", "untaggedPorts": "3", "taggedPorts": "5,6" }'
bun run debug -- --tool configure_vlan_pvid --params '{ "pvid": 20, "ports": "3" }'
bun run debug -- --tool configure_trunk_group --params '{ "mode": "set", "group": 1, "ports": "1,2" }'
bun run debug -- --tool save_configuration --params '{}'Примеры страниц
Снимки только для чтения для разработки хранятся в:
examples/tplink-192.168.3.10: коммутатор TP-Link Easy Smart по адресу192.168.3.10examples/mercury-192.168.3.11: Mercury SE106 Pro по адресу192.168.3.11
Они включают страницы VLAN, агрегации каналов, резервного копирования/восстановления конфигурации, сохранения конфигурации, а также pvlan.js, qvlan.js и menuList.js. Эти образцы не содержат значений SessionID или паролей.
Вы также можете отправлять необработанные JSON-RPC-запросы:
bun run debug -- --raw '{ "jsonrpc": "2.0", "id": 99, "method": "tools/list", "params": {} }'Пример MCP-клиента
{
"mcpServers": {
"tplink-easy-smart-switch": {
"command": "C:\\path\\to\\tplink-easy-smart-switch-mcp.exe",
"env": {
"TPLINK_HOST": "192.168.3.10",
"TPLINK_USERNAME": "admin",
"TPLINK_PASSWORD": "your-password"
}
}
}
}Примечания
Содержимое страниц разбирается DOM-парсером и нормализуется в сводки заголовка, формы, фрейма, ссылок, таблиц и текста. Данные о статусе в основном извлекаются из JavaScript-переменных на страницах, таких как MainRpm.htm, VlanPortBasicRpm.htm, Vlan8021QRpm.htm, Vlan8021QPvidRpm.htm, VlanMtuRpm.htm и PortTrunkRpm.htm.
В протестированных прошивках TP-Link TL-SE2106 и Mercury SE106 Pro страница MacSearchRpm.htm представляет собой форму поиска, а не полную выгрузку таблицы коммутации. Поэтому поддерживаемая функция MAC — это search_mac_address, которая следует логике страницы и вызывает mac_address_search.cgi с параметрами txt_macAddress_search, txt_vid_search и token.
Извлечение токена поддерживает взятый в кавычки g_tid, обычный числовой g_tid и скрытые поля token. Скрипт захвата скрывает как взятые в кавычки, так и обычные присваивания g_tid перед сохранением примеров для разработки.
Вызовы CGI настройки используют явный поток подтверждения. Разработка и отладка по умолчанию работают в режиме dry-run. save_configuration также является действием записи; оно следует логике страницы SavingConfigRpm.htm и использует POST savingconfig.cgi, но не отправляет запрос, если явно не подтверждено.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for network documentation, generated by doc2mcp.
MCP server for Hostinger API
Free, read-only security scanner for remote MCP servers, before you connect them.
Related MCP Servers
- AlicenseBqualityFmaintenanceSecurity-focused MCP server for TP-Link Omada Open API workflows, enabling network management via natural language.8725MIT
- AlicenseAqualityBmaintenanceRead-only MCP server for TP-Link Omada SDN controllers, enabling querying controller, site, device, and WiFi state.8Apache 2.0
- FlicenseNot gradedqualityCmaintenanceMCP server for Topaz switches: searches documentation, performs network diagnostics (ping, traceroute, port scanning, etc.), calculates subnets, and generates VLAN/base configurations. Also includes a web UI for use without an MCP client.1-
- AlicenseCqualityBmaintenanceMCP server that lets AI assistants monitor and manage TP-Link Omada controllers. It provides analytics and read-only queries plus write operations such as rebooting devices, blocking clients, and changing network or firewall settings.84MIT