Перейти к содержимому

MCP-сервер

GetOLT встроен MCP-сервер (Model Context Protocol) — JSON-RPC поверх HTTP. Это контролируемый интерфейс для LLM-агентов и внешних автоматизаций к OLT-инвентарю и низкоуровневым операциям.

Зачем это нужно

  • Дать LLM-агенту доступ к данным об OLT и ONU без прямого подключения к БД и Telnet.
  • Те же tools переиспользуются LLM-чатом внутри приложения — без HTTP self-loop, через прямые вызовы in-process.
  • Унифицированный способ исследовать инвентарь скриптами/агентами без знания внутренней схемы БД.

Транспорт и защита

  • URL: /api/v1/external/mcp
  • Заголовок: X-API-Key (тот же механизм, что и REST API)
  • Формат: JSON-RPC 2.0
  • Stateless на уровне MCP-протокола, stateful на уровне OLT (учётные данные хранятся в БД, Telnet-сессии переиспользуются OltSessionManager).

Активация

# application-*.properties
getolt.mcp.enabled=true
getolt.mcp.snapshot-dir=./snapshots

По умолчанию выключено в production-профиле.

Доступные tools (выборка)

ToolУровеньНазначениеТрогает железо
olt.pingutilityHealth check, echoнет
olt.listhighПагинированный список OLT с фильтрами (vendor, ip, operator, city, …)нет
olt.gethighДетали OLT по IPнет
olt.distinct_valueshighУникальные значения vendor/operator/city/poVersion. Зови первым при сомнениях в фильтренет
onu.findhighПоиск ONU (mac, sn, договор, ФИО, адрес, vlan, status). AND-семантика, сортировка по lastSeenнет
onu.stats_by_olthighСтатистика ONU по конкретному OLTнет
olt.top_by_onu_counthighTop-N OLT по числу ONU одним SQLнет
olt.config_gethighПоследний snapshot running/startup-configнет
config.searchhighSubstring/regex поиск по конфигам всех OLTнет
vlan.listhighОписание VLAN’ов (management/service/szo/internet/iptv/voip)нет
szo.listhighСЗО-ONU: MAC, S/C-VLAN, договор, локациянет
olt.discover_capabilitieslowLive show device/show running-config, классификацияда
olt.get_opticallowTx/Rx с порта через telnetда
snapshot.save_localutilityСохранить snapshot в whitelisted директориюнет (FS)

«Уровень»:

  • high — данные из БД, быстро, безопасно.
  • low — живые Telnet-вызовы, медленно, нагружает OLT.
  • utility — служебные, ничего не трогает.

Что специально не реализовано

  • olt.exec_raw — выполнение произвольной команды. Слишком высокий риск, добавится после явного use-case.
  • Любые write/destructive операции (reboot ONU и т.п.) — нужно отдельное согласование сценария.

Тестирование через curl

Окно терминала
KEY="<your-api-key>"
curl -sX POST http://localhost:8088/api/v1/external/mcp \
-H "X-API-Key: $KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'

После handshake вызывайте tools/list и далее tools/call.

Связанные разделы

  • LLM-чат — как использовать MCP внутри встроенного чата.
  • REST API — те же данные через классический REST.

Нашли ошибку или нужно что-то дополнить? Напишите нам.

Разработка: gmasich.ru