MCP-сервер над MCS
Standalone сервис, который ставится рядом с MCS/Niagara 4 и говорит с LLM-агентами по протоколу MCP (Model Context Protocol). Read-инструменты возвращают трендовые данные, алармы и fuzzy-оценку состояния оборудования. Bayes-движок считает вероятность отказа в горизонте 1-30 дней. Write-инструменты (квитирование алармов, изменение уставок) защищены approval-flow.

О продукте
Задача: дать любому LLM-агенту (десктоп-клиент GigaChat, наш MCP-клиент, Hermes Agent, n8n с MCP-нодой) безопасный доступ к данным реальной BMS и аналитике, накопленной над ними. Без этого LLM может только пересказать документацию — со MCP-сервером он реально читает текущее давление, тренд за сутки и предлагает действие.
Сервер реализует full MCP spec: tools, resources, prompts. Tools = функции (getTrend, getAlarmTimeline, getFuzzyState, predictFailure, acknowledgeAlarm, setSetpoint). Resources = read-only справочники (BACnet-схема, точки оборудования). Prompts = шаблоны для типовых задач (объясни аларм, дай рекомендацию по уставке).
Fuzzy-движок мапит сырые значения точек в 5 нечётких классов: нормально / деградация / повышенный риск / критично / отказ. Используем trapezoidal membership functions, конфигурируемые на equipment-type (для AHU и chiller свои пороги). Bayesian risk-network объединяет fuzzy-метки с историей алармов и mean-time-between-failures из паспорта оборудования — даёт распределение вероятностей отказа на горизонте 1-30 дней.
Write-операции (acknowledgeAlarm, setSetpoint, runScene) идут через approval-flow: LLM формирует tool-call с обоснованием, сервер записывает intent в очередь, оператор подтверждает в admin-UI. После подтверждения сервер исполняет команду в Niagara через BACnet/Niagara REST. Каждое действие — audit-log с tool-call payload, обоснованием LLM и подписью оператора.
Деплой — Docker Compose на Proxmox VE рядом с контроллером MCS. Postgres + TimescaleDB для трендов, Redis для очереди approvals, Caddy reverse-proxy. Для on-premise заказчика — тот же compose-файл, никаких облачных зависимостей. Подключается к MCS по SCRAM-SHA-256 (наш существующий стек для Niagara 4.8).
Ключевые возможности
Полный MCP spec
Tools, resources, prompts. Совместим с десктоп-клиентами GigaChat, Cursor, Continue, нашим MCP-клиентом — любым host-приложением, говорящим по MCP.
Fuzzy-аналитика состояния
5 нечётких классов: норма / деградация / повышенный риск / критично / отказ. Конфигурируемые membership-функции на equipment-type. Объяснение каждой метки в человеческих терминах.
Bayes-предсказание отказов
Bayesian network объединяет fuzzy-метки, историю алармов и MTBF паспорта. Возвращает P(отказ) на горизонте 1, 7, 30 дней с confidence interval.
Read-инструменты
getTrend, getAlarmTimeline, getEquipmentState, getFuzzyExplanation, predictFailure, getMaintenanceLog. Все возвращают структурированный JSON, готовый к подстановке в LLM-контекст.
Write через approval
acknowledgeAlarm, setSetpoint, runScene — LLM формирует intent, оператор подтверждает в admin-UI. Audit-log с обоснованием. Без operator-confirm никакая запись в Niagara не уходит.
Niagara 4 / BACnet
SCRAM-SHA-256 auth с MCS 4.8, BACnet/IP для real-time, Niagara REST для history-trends. Адресация точек: sites/{site}/equipment/{eq}/points/{name}.
Audit + наблюдаемость
Каждый tool-call логируется: payload, latency, обоснование LLM, кто подтвердил. OpenTelemetry traces, Prometheus metrics, Grafana дашборд из коробки.
Технологический стек
- Node.js 20
- TypeScript strict
- MCP SDK
- Zod-схемы tools
- Trapezoidal fuzzy logic
- pgmpy / самописный Bayes-engine
- Prophet (anomaly fallback)
- Конфиг через YAML
- Niagara REST
- BACnet/IP (bacstack)
- SCRAM-SHA-256 (MCS 4.8)
- Modbus TCP (опц.)
- PostgreSQL 16 + TimescaleDB
- Redis (approval queue)
- S3-compatible (MinIO) для audit-bundle
- OpenTelemetry traces
- Prometheus metrics
- Grafana дашборд
- Loki логи
- Docker Compose
- Proxmox VE
- Caddy reverse-proxy
- Self-hosted, on-premise
Что под капотом
- MCP spec full: tools / resources / prompts — совместим с десктоп-клиентами GigaChat, Cursor, нашим MCP-клиентом, Hermes Agent
- Fuzzy-аналитика на trapezoidal membership: 5 классов состояния с человекочитаемым объяснением каждой метки
- Bayesian risk-network: P(отказ) с confidence interval на 1/7/30 дней — кормит KPI и предиктивное обслуживание
- Write-операции через approval-flow с обоснованием LLM и audit-log — никакой случайной команды в Niagara
- SCRAM-SHA-256 auth для MCS 4.8 — наш проверенный стек из niagara-proxy
- Развёрнут одной командой docker compose up — Postgres+TimescaleDB+Redis+Caddy на нашем Proxmox или у заказчика
- OpenTelemetry + Grafana — каждый tool-call виден с latency и обоснованием
Посмотреть вживую
Нужна похожая разработка?
Обсудим задачу, соберём команду под стек и сроки, предложим прозрачную оценку.