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-*.propertiesgetolt.mcp.enabled=truegetolt.mcp.snapshot-dir=./snapshotsПо умолчанию выключено в production-профиле.
Доступные tools (выборка)
| Tool | Уровень | Назначение | Трогает железо |
|---|---|---|---|
olt.ping | utility | Health check, echo | нет |
olt.list | high | Пагинированный список OLT с фильтрами (vendor, ip, operator, city, …) | нет |
olt.get | high | Детали OLT по IP | нет |
olt.distinct_values | high | Уникальные значения vendor/operator/city/poVersion. Зови первым при сомнениях в фильтре | нет |
onu.find | high | Поиск ONU (mac, sn, договор, ФИО, адрес, vlan, status). AND-семантика, сортировка по lastSeen | нет |
onu.stats_by_olt | high | Статистика ONU по конкретному OLT | нет |
olt.top_by_onu_count | high | Top-N OLT по числу ONU одним SQL | нет |
olt.config_get | high | Последний snapshot running/startup-config | нет |
config.search | high | Substring/regex поиск по конфигам всех OLT | нет |
vlan.list | high | Описание VLAN’ов (management/service/szo/internet/iptv/voip) | нет |
szo.list | high | СЗО-ONU: MAC, S/C-VLAN, договор, локация | нет |
olt.discover_capabilities | low | Live show device/show running-config, классификация | да |
olt.get_optical | low | Tx/Rx с порта через telnet | да |
snapshot.save_local | utility | Сохранить 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.
Связанные разделы
Нашли ошибку или нужно что-то дополнить? Напишите нам.
Разработка: gmasich.ru