Мы много говорим о больших языковых моделях и умном доме, но до реальной работы с железом дело доходит редко. В мире IoT разные микроконтроллеры, датчики и протоколы живут по своим правилам. LLM охотно отвечает на вопросы, но не умеет без боли договориться с устройствами, которые то теряют связь, то выдают данные в неожиданных форматах. Авторы работы IoT‑MCP предлагают недостающий мост — аккуратный, стандартизированный и быстрый. Он делает так, чтобы LLM могла общаться с IoT без кучи кастомных скриптов и хрупких интеграций.

Рабочий процесс IoT-MCP: от запроса LLM до чтения сенсоров и возврата данных
Рабочий процесс IoT-MCP: от запроса LLM до чтения сенсоров и возврата данных

Что придумали авторы

В основе — Model Context Protocol. Он описывает инструменты и их контекст так, чтобы LLM могла выбирать и вызывать нужные действия. IoT‑MCP переносит эту идею в реальный мир датчиков: архитектура делится на три понятных слоя — Local Host, Datapool & Connection Server и IoT‑устройства. Такой разрыв ответственности — главный инженерный выигрыш. Один слой думает и выбирает, второй держит соединения и очередь запросов, третий читается с датчиков и возвращает данные.

Шесть семейств микроконтроллеров, с которыми работал IoT‑MCP
Шесть семейств микроконтроллеров, с которыми работал IoT‑MCP

Как это работает изнутри

  • На локальном хосте рядом с LLM живут узкоспециализированные MCP‑серверы. Каждый отвечает за свою группу сенсоров, чтобы LLM без путаницы выбирала нужный инструмент. Сервер формирует компактную JSON‑инструкцию с командой, длительностью и интервалом.

  • Datapool & Connection Server сидит между «мозгом» и железом. Он присваивает уникальные ID запросам, буферизует их, сглаживает обрывы связи и масштабирует параллельные операции. Это избавляет MCU от тяжёлой логики и спасает диалоги с LLM от таймаутов.

  • На устройствах — лёгкие микросервисы: подключаются по Wi‑Fi/Bluetooth/I2C, опрашивают периферию и возвращают ответ с метками времени, типом сенсора и данными. Добавить новый датчик — не переписывать всё с нуля, а расширить набор микросервисов.

Что и как проверяли

Авторы не ограничились демо. Они предложили собственный бенчмарк IoT‑MCP Bench: 114 базовых задач и 1 140 усложнённых вариантов. Сценарии варьируются от простых чтений до композиций, где нужно объединять, фильтровать и интерпретировать данные, а также справляться с неоднозначными формулировками промтов. Три ключевые метрики — успешность вызова инструмента, среднее время ответа и пиковое потребление памяти на MCU. Плюс испытания на устойчивость, конкуренцию запросов и стабильность деплоя.

Как из простого чтения DHT11 вырастает последовательность всё более сложных задач
Как из простого чтения DHT11 вырастает последовательность всё более сложных задач

Что показали эксперименты

  • 100% успешных вызовов инструментов на базовых задачах. Это важный сигнал: MCP‑слой и связывание с железом настроены надежно.

  • Средняя задержка 205 мс. Основная доля времени уходит на проход через Connection Server и обмен с MCU. В idle‑режиме сеть сама по себе «стоит» ~128 мс.

  • Пиковая память на устройствах — в среднем 74 КБ, а в простое около 51 КБ. Это оставляет запас под параллельные запросы без внезапных «затыков».

  • Устойчивость к промтам на сложных задачах — 99%. Чаще всего спотыкаются датчики LTR390 и MPU6050 в сценариях с множественными чтениями и режимом «прочитать всё».

Время отклика: вклад MCP‑сервера и Connection Server с MCU; пунктир — среднее idle‑время
Время отклика: вклад MCP‑сервера и Connection Server с MCU; пунктир — среднее idle‑время
Пиковая память на MCU; пунктир — среднее потребление в простое
Пиковая память на MCU; пунктир — среднее потребление в простое

Кросс‑модели и параллельные запросы

Система протестирована с разными LLM: лучшая стабильность у Claude 3.5 (Haiku и Sonnet). При переходе на DeepSeek V3 и GPT‑4.1 успешность заметно падает — до примерно 77% и 84% от уровня Claude, что объясняют различиями в трактовке параметров и соглашениях по вызовам инструментов. При параллельной нагрузке на некоторых датчиках задержка растёт плавно, масштабирование сохраняется до четырёх одновременных задач без резких провалов.

Слева — успешность по моделям, справа — задержка при параллельных задачах
Слева — успешность по моделям, справа — задержка при параллельных задачах

Полевые испытания

Самое ценное — реальный деплой. В течение 12 часов работали шесть контроллеров ESP32‑S3 с семью типами сенсоров. Соединения восстанавливались автоматически после обрывов питания и сети, данные шли непрерывно. Это уже похоже на зрелую инженерную систему, а не на лабораторный прототип.

12‑часовой прогон: 13 сенсоров (7 типов) на 6 контроллерах стабильно отправляют данные
12‑часовой прогон: 13 сенсоров (7 типов) на 6 контроллерах стабильно отправляют данные

Итог

Сегодня IoT‑MCP ориентирован на сенсоры, не на актуаторы. Управление устройствами и замкнутый контур — следующий шаг. Ещё одно направление — автоматическая композиция рабочих процессов: когда LLM не просто вызывает инструмент, а строит план, выбирает стратегии отказоустойчивости и оптимизирует стоимость и задержку. Наконец, безопасность: с ростом масштаба нужны механизмы авторизации, троттлинга и мягкой деградации.

Если коротко, IoT‑MCP снимает главную боль интеграций: разрывает монолит на ясные роли, стандартизирует инструменты для LLM и упрощает масштабирование на разные микроконтроллеры и датчики. Плюс предлагает единый способ оценки: от семантики вызовов до системных метрик. 100% успешности инструментальных вызовов, 205 мс задержки и 74 КБ пика памяти — показатели, с которыми уже можно строить производственные сценарии мониторинга и постепенно двигаться к управлению.

? Полная статья

? Код

***

Если вам интересна тема ИИ, подписывайтесь на мой Telegram‑канал — там я регулярно делюсь инсайтами по внедрению ИИ в бизнес, запуску ИИ-стартапов и объясняю, как работают все эти ИИ-чудеса.

Комментарии (4)


  1. T968
    05.10.2025 17:18

    Приближается время статьи "как с помощью LLM удлинить член"


  1. MAXH0
    05.10.2025 17:18

    ... Не привлекая внимание санитаров.


  1. JBFW
    05.10.2025 17:18

    Примерно то же самое можно сделать на базе обмена mqtt сообшениями, если привести их к своему единому стандарту, и да, добавлять новые "сервисы", просто подключая очередной "драйвер", программу на уровне обработки сообщений.

    Не надо монолит, все и так прекрасно и надёжно работает на своем уровне.

    Осталось прикрутить олламу, например, но у меня нет компактной коробки под нее, а то бы уже статью написал, как это сделал...


  1. dyadyaSerezha
    05.10.2025 17:18

    Что придумали авторы

    ...

    Один слой думает и выбирает, второй держит соединения и очередь запросов, третий читается с датчиков и возвращает данные

    Мда... А у нас в закрытом НИИ ещё в начале 80-х была создана такая же система контроля и управления активной зоной ядерного реактора АЭС на тех ещё, отечественной сборки, компах с ОС реального времени. Вся оперативная память была физически поделена на 4 раздела по чисто архитектурным причинам - могла быть программно адресована только 1/4 всей памяти (а это 64КБ и 256КБ, соответственно). Так вот, в первом разделе работал софт, читающий данные с нескольких сотен датчиков разного типа и делающий самую первичную их обработку. Во втором разделе делалась уже более продвинутая обработка данных с датчиков и просчитывались самые грубые управляющие решения (типа, когда надо безусловно сбросить все стержни для остановки реакции). В третьем разделе уже считалась трехмерная модель реакции и считались более тонкие управляющие воздействия. А в четвёртом разделе работали ad-hoc программы физиков, которые могли просто что-то делать с этими данными.

    Вывод: люди (пере)изобретают велосипеды сплошь и рядом. Куча знаний просто исчезает.