apiarya/wemo-mcp-server

apiarya/wemo-mcp-server

от apiarya
MCP сервер для управления устройствами WeMo через естественный язык. AI-ассистенты сканируют сеть, управляют питанием и яркостью, получают статус. Автоматизация умного дома без программирования.

WeMo MCP Server

Control WeMo smart home devices through AI assistants using natural language.

mcp-name: io.github.apiarya/wemo

CI codecov Quality Gate Security Rating PyPI version Python 3.10+

MCP Registry MCP Transport

License: MIT

Table of Contents

  • Overview
  • Prerequisites
  • Quick Start
  • Connect
  • Configuration
  • MCP Tools
    • scan_network
    • list_devices
    • get_device_status
    • control_device
    • rename_device
    • get_homekit_code
    • get_cache_info
    • clear_cache
    • get_configuration
  • MCP Capabilities
    • Resources
    • Prompts
    • Elicitations
  • How It Works
    • Local Control Signal Flow
  • Feature Comparison
  • Development
  • Contributing
  • License
  • Acknowledgments

Overview

Seamlessly integrate WeMo smart home devices with AI assistants through the Model Context Protocol. Built on pywemo, this server enables natural language control of your WeMo devices with intelligent multi-phase discovery.

Example Usage

Turning on lights with natural language

Control WeMo devices through AI assistants with natural language - just ask in plain English!

Goodnight scene turns off all devices

"Goodnight" — one command turns off every device in the house

Key Features

  • 🔍 Smart Discovery - Multi-phase scanning (UPnP/SSDP + network ports) with 100% reliability
  • ⚡ Fast Scanning - Parallel probes with 60 concurrent workers (~23-30s for full subnet)
  • 🎛️ Full Control - On/off/toggle/brightness control for all device types
  • ✏️ Device Management - Rename devices and extract HomeKit setup codes
  • 📊 Real-time Status - Query device state and brightness
  • 💾 Smart Caching - Persistent device cache with 1-hour TTL survives restarts
  • 🔧 Configurable - YAML config files + environment variables for all settings
  • 🔄 Auto-Retry - Automatic retry with exponential backoff for network errors
  • 🛡️ Error Handling - Detailed error messages with actionable suggestions
  • 🔌 Universal - Works with any MCP client (Claude, VS Code, Cursor, etc.)
  • 📡 MCP Resources - Live device state via devices:// and device://{id} URIs
  • 💬 MCP Prompts - Built-in guided prompts: discover, status report, scene control, troubleshoot
  • 🗣️ MCP Elicitations - Interactive clarification when subnet or device name is ambiguous
clear_cache

Очистить постоянный кеш устройств. Удаляет файл кеша и очищает кеш в памяти. Полезно, когда устройства изменились или кеш поврежден. После очистки запустите scan_network, чтобы перестроить кеш. Возвращает ---------- Словарь, содержащий: - success: успешно ли очищен кеш - message: описательное сообщение

Очистить постоянный кеш устройств. Удаляет файл кеша и очищает кеш в памяти. Полезно, когда устройства изменились или кеш поврежден. После очистки запустите scan_network, чтобы перестроить кеш. Возвращает ---------- Словарь, содержащий: - success: успешно ли очищен кеш - message: описательное сообщение

Параметры

Без параметров.

control_device

Управляйте устройством WeMo (включить, выключить, переключить или установить яркость). Управляет устройством, отправляя команды включения, выключения или переключения. Для диммируемых устройств также можно установить уровень яркости (1-100). Устройство должно быть предварительно обнаружено через scan_network. Аргументы: ---- device_identifier: Имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") action: Выполняемое действие - должно быть одним из: "on", "off", "toggle", "brightness" brightness: Уровень яркости (1-100) - используется только когда action равно "brightness" или "on" для диммируемых устройств ctx: Контекст MCP, внедряемый FastMCP; используется для уточнения нужного устройства, когда идентификатор неоднозначен Возвращает: ------- Словарь, содержащий: - success: Логическое значение, указывающее, успешно ли выполнено действие - device_name: Имя устройства - action_performed: Выполненное действие - new_state: Состояние после действия - brightness: Текущий уровень яркости (для диммеров)

Управляйте устройством WeMo (включить, выключить, переключить или установить яркость). Управляет устройством, отправляя команды включения, выключения или переключения. Для диммируемых устройств также можно установить уровень яркости (1-100). Устройство должно быть предварительно обнаружено через scan_network. Аргументы: ---- device_identifier: Имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") action: Выполняемое действие - должно быть одним из: "on", "off", "toggle", "brightness" brightness: Уровень яркости (1-100) - используется только когда action равно "brightness" или "on" для диммируемых устройств ctx: Контекст MCP, внедряемый FastMCP; используется для уточнения нужного устройства, когда идентификатор неоднозначен Возвращает: ------- Словарь, содержащий: - success: Логическое значение, указывающее, успешно ли выполнено действие - device_name: Имя устройства - action_performed: Выполненное действие - new_state: Состояние после действия - brightness: Текущий уровень яркости (для диммеров)

Параметры

  • device_identifierstringобязательный
  • actionstringобязательный
  • brightnessany
get_cache_info

Получить информацию о постоянном кеше устройств. Возвращает информацию о файле кеша: возраст, статус истечения срока действия и количество устройств. Полезно для проверки, нужен ли повторный скан. Возвращает -------- Словарь, содержащий: - exists: Существует ли файл кеша - path: Путь к файлу кеша - age_seconds: Возраст кеша в секундах - expired: Истек ли срок кеша - device_count: Количество устройств в кеше - ttl_seconds: Время жизни записей кеша

Получить информацию о постоянном кеше устройств. Возвращает информацию о файле кеша: возраст, статус истечения срока действия и количество устройств. Полезно для проверки, нужен ли повторный скан. Возвращает -------- Словарь, содержащий: - exists: Существует ли файл кеша - path: Путь к файлу кеша - age_seconds: Возраст кеша в секундах - expired: Истек ли срок кеша - device_count: Количество устройств в кеше - ttl_seconds: Время жизни записей кеша

Параметры

Без параметров.

get_configuration

Возвращает текущую конфигурацию сервера. Возвращает все настройки конфигурации, включая сетевые параметры, настройки кэша и уровни журналирования. Полезно для отладки или проверки переопределений переменных окружения. Возвращает ------- Словарь, содержащий: - configuration: все разделы конфигурации - source: информация об источниках конфигурации (переменные окружения, файл конфигурации)

Возвращает текущую конфигурацию сервера. Возвращает все настройки конфигурации, включая сетевые параметры, настройки кэша и уровни журналирования. Полезно для отладки или проверки переопределений переменных окружения. Возвращает ------- Словарь, содержащий: - configuration: все разделы конфигурации - source: информация об источниках конфигурации (переменные окружения, файл конфигурации)

Параметры

Без параметров.

get_device_status

Получить текущий статус устройства WeMo. Извлекает текущее состояние и информацию об устройстве по имени или IP-адресу. Устройство должно быть предварительно обнаружено через scan_network. Аргументы: ---- device_identifier: имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") Возвращает: ------- Словарь, содержащий: - device_name: имя устройства - state: текущее состояние ("on" или "off") - дополнительную информацию об устройстве

Получить текущий статус устройства WeMo. Извлекает текущее состояние и информацию об устройстве по имени или IP-адресу. Устройство должно быть предварительно обнаружено через scan_network. Аргументы: ---- device_identifier: имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") Возвращает: ------- Словарь, содержащий: - device_name: имя устройства - state: текущее состояние ("on" или "off") - дополнительную информацию об устройстве

Параметры

  • device_identifierstringобязательный
get_homekit_code

Получить код настройки HomeKit для устройства WeMo. Извлекает код настройки HomeKit (HKSetupCode) для устройств, которые поддерживают интеграцию с HomeKit. Этот код можно использовать, чтобы добавить устройство в Apple Home. Устройство должно быть сначала обнаружено через scan_network. Примечание: не все устройства WeMo поддерживают HomeKit. Если устройство не поддерживает HomeKit или не имеет кода настройки, будет возвращена ошибка. Аргументы: ---- device_identifier: Имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") Возвращает: ------- Словарь, содержащий: - success: Булево значение — получен ли код - device_name: Имя устройства - homekit_code: Код настройки HomeKit (формат: XXX-XX-XXX) - device_ip: IP-адрес устройства

Получить код настройки HomeKit для устройства WeMo. Извлекает код настройки HomeKit (HKSetupCode) для устройств, которые поддерживают интеграцию с HomeKit. Этот код можно использовать, чтобы добавить устройство в Apple Home. Устройство должно быть сначала обнаружено через scan_network. Примечание: не все устройства WeMo поддерживают HomeKit. Если устройство не поддерживает HomeKit или не имеет кода настройки, будет возвращена ошибка. Аргументы: ---- device_identifier: Имя устройства (например, "Office Light") или IP-адрес (например, "192.168.1.100") Возвращает: ------- Словарь, содержащий: - success: Булево значение — получен ли код - device_name: Имя устройства - homekit_code: Код настройки HomeKit (формат: XXX-XX-XXX) - device_ip: IP-адрес устройства

Параметры

  • device_identifierstringобязательный
list_devices

Выводит список всех обнаруженных устройств WeMo из кэша. Возвращает список устройств, найденных при предыдущих сканированиях сети. Сначала запустите `scan_network`, чтобы заполнить кэш устройств. Возвращает ------- Словарь, содержащий: - device_count: количество кэшированных устройств - devices: список имен устройств и IP-адресов

Выводит список всех обнаруженных устройств WeMo из кэша. Возвращает список устройств, найденных при предыдущих сканированиях сети. Сначала запустите `scan_network`, чтобы заполнить кэш устройств. Возвращает ------- Словарь, содержащий: - device_count: количество кэшированных устройств - devices: список имен устройств и IP-адресов

Параметры

Без параметров.

rename_device

Переименовать устройство WeMo (изменить его понятное имя). Изменяет понятное имя устройства WeMo. Это имя отображается в приложении WeMo и используется для идентификации устройства. Устройство должно быть предварительно обнаружено через scan_network. После переименования кеш устройства обновится с новым именем. Возможно, вы захотите снова запустить scan_network, чтобы обновить список устройств. Аргументы: ---- device_identifier: Текущее имя устройства (например, "Office Dimmer") или IP-адрес (например, "192.168.1.100") new_name: Новое понятное имя устройства (например, "Office Light") Возвращает: ------- Словарь, содержащий: - success: Логическое значение, указывающее, успешно ли прошло переименование - old_name: Предыдущее имя устройства - new_name: Новое имя устройства - device_ip: IP-адрес устройства

Переименовать устройство WeMo (изменить его понятное имя). Изменяет понятное имя устройства WeMo. Это имя отображается в приложении WeMo и используется для идентификации устройства. Устройство должно быть предварительно обнаружено через scan_network. После переименования кеш устройства обновится с новым именем. Возможно, вы захотите снова запустить scan_network, чтобы обновить список устройств. Аргументы: ---- device_identifier: Текущее имя устройства (например, "Office Dimmer") или IP-адрес (например, "192.168.1.100") new_name: Новое понятное имя устройства (например, "Office Light") Возвращает: ------- Словарь, содержащий: - success: Логическое значение, указывающее, успешно ли прошло переименование - old_name: Предыдущее имя устройства - new_name: Новое имя устройства - device_ip: IP-адрес устройства

Параметры

  • device_identifierstringобязательный
  • new_namestringобязательный
scan_network

Сканирует сеть на устройства WeMo с помощью обнаружения pywemo. Этот инструмент сканирует указанную подсеть на предмет устройств WeMo: 1. Проверяет все IP-адреса в подсети на типичных портах WeMo (49152-49155) 2. Проверяет откликнувшиеся IP, пытаясь прочитать описания устройств 3. Использует библиотеку pywemo для точной идентификации и разбора устройств WeMo Аргументы: ---- subnet: Сетевая подсеть в нотации CIDR (по умолчанию из конфигурации или "192.168.1.0/24") timeout: Таймаут подключения в секундах при проверке портов (по умолчанию из конфигурации или 0.6) max_workers: Максимальное количество параллельных потоков для сканирования сети (по умолчанию из конфигурации или 60) ctx: Контекст MCP, внедряемый FastMCP; используется для уточнения подсети, если она не задана в конфигурации Возвращает: ------- Словарь со следующими полями: - scan_parameters: Параметры, использованные при сканировании - results: Сводка с количеством устройств - devices: Список обнаруженных устройств WeMo с полным описанием

Сканирует сеть на устройства WeMo с помощью обнаружения pywemo. Этот инструмент сканирует указанную подсеть на предмет устройств WeMo: 1. Проверяет все IP-адреса в подсети на типичных портах WeMo (49152-49155) 2. Проверяет откликнувшиеся IP, пытаясь прочитать описания устройств 3. Использует библиотеку pywemo для точной идентификации и разбора устройств WeMo Аргументы: ---- subnet: Сетевая подсеть в нотации CIDR (по умолчанию из конфигурации или "192.168.1.0/24") timeout: Таймаут подключения в секундах при проверке портов (по умолчанию из конфигурации или 0.6) max_workers: Максимальное количество параллельных потоков для сканирования сети (по умолчанию из конфигурации или 60) ctx: Контекст MCP, внедряемый FastMCP; используется для уточнения подсети, если она не задана в конфигурации Возвращает: ------- Словарь со следующими полями: - scan_parameters: Параметры, использованные при сканировании - results: Сводка с количеством устройств - devices: Список обнаруженных устройств WeMo с полным описанием

Параметры

  • subnetany
  • timeoutany
  • max_workersany

Другие проверенные MCP-сервера

wonderwhy-er/DesktopCommanderMCP

wonderwhy-er/DesktopCommanderMCP

Desktop Commander — MCP сервер для управления файлами, запуска терминальных команд, редактирования кода, работы с Excel, PDF и DOCX. Разработчики используют его для автоматизации задач и взаимодейс...

TypeScript8534
blockrunai/blockrun-mcp

blockrunai/blockrun-mcp

официальный

BlockRun MCP — сервер реал-тайм данных для Claude: рынки, исследования, X/Twitter и крипто без API ключей. Оплата за вызов из USDC-кошелька, подходит трейдерам и аналитикам.

TypeScript475
base/base-mcp

base/base-mcp

официальный

MCP-сервер для интеграции AI-агентов с сетью Base. Репозиторий устарел. Используйте новые quickstart по платежам и торговле из документации Base AI Agents. Подходит разработчикам, создающим автомат...

TypeScript353
dagger/container-use

dagger/container-use

официальный

MCP сервер container-use даёт агентам (Claude Code, Cursor) работать параллельно в изолированных контейнерах - безопасно и без конфликтов. Полезен разработчикам: видит лог действий и даёт доступ к ...

Go3914
Grafana MCP

Grafana MCP

официальный

MCP сервер для интеграции с Grafana: управляйте дашбордами, выполняйте запросы к Prometheus, Loki, CloudWatch и другим источникам через MCP. Упрощает мониторинг, анализ метрик и логов — полезен для инженеров и DevOps.

Go3252
Exa MCP Server

Exa MCP Server

официальный

Exa MCP Server даёт AI-ассистентам доступ к веб-поиску, поиску кода и исследованию компаний через Exa. Сервер легко интегрируется в Cursor, VS Code и Claude, предоставляя готовые инструменты для разработчиков. Просто подключите API-ключ и получите актуальные данные.

TypeScript4742
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин