miot-mcp
米家 MCP Server
Китайская документация | English
Продуктовый MCP-сервис 米家 на базе mijiaAPI 3.x. Он больше не требует, чтобы клиент сначала разбирался в деталях протокола вроде did, siid/piid/aiid, а в первую очередь предоставляет более естественные возможности запросов и управления, ориентированные на «дом, комнату, имя устройства, имя сцены».
Что решает эта версия
Ориентация на AI-клиентов: в первую очередь предоставляются стабильные и понятные продуктовые инструменты, а не низкоуровневые поля протокола.
Ориентация на реальные домашние сценарии: сначала дом и комнаты, затем поиск устройства, затем управление.
Ориентация на стандарт MCP: инструменты возвращают структурированные результаты, а состояние сервиса и статус входа могут напрямую потребляться клиентом.
Ориентация на расширяемость: стандартные схемы возможностей, управление на основе profile и модель ресурсов могут развиваться дальше.
Related MCP server: Xiaomi smart home MCP server
Текущие возможности
Сервис и вход
get_service_statusprepare_loginreconnect_serviceclear_saved_loginrefresh_devicesget_tool_catalogping
Дома и устройства
get_home_overviewlist_homeslist_devicesget_deviceget_device_statusget_device_capabilities
Управление устройствами
control_by_intentcontrol_deviceturn_on_deviceturn_off_deviceset_brightnessset_color_temperatureset_target_temperatureset_hvac_modeset_fan_speedset_cover_position
Сцены и расходные материалы
list_scenesexecute_sceneget_consumable_items
MCP-ресурсы
mijia://servicemijia://homesmijia://devicesmijia://scenesmijia://capabilitiesmijia://tooling
Установка
Рекомендуется использовать Python 3.10+.
poetry installЕсли вы не используете Poetry:
pip install -r requirements.txtЗапуск
poetry run python mcp_server/mcp_server.pyПроверка рукопожатия:
poetry run python mcp_server/mcp_test.pyСпособы входа
В mijiaAPI 3.x убран вход по логину и паролю, поддерживается только вход по QR-коду.
При первом запросе входа сервис:
Создаёт страницу для браузера:
~/.miot-mcp/qr.htmlОдновременно создаёт изображение QR-кода:
~/.miot-mcp/qr.pngПо умолчанию сначала открывает
qr.htmlв системном браузереТолько если браузер не открылся, переходит к просмотрщику изображений или QR-коду в терминале
Данные аутентификации сохраняются в:
~/.miot-mcp/auth_data.jsonРекомендуемый основной путь входа
Вызовите
prepare_loginВызовите
get_service_statusПрочитайте
service.qr.page_pathилиservice.qr.image_pathПосле завершения сканирования вызовите
reconnect_serviceили сразуrefresh_devices
Статусы, связанные со входом
get_service_status и mijia://service возвращают структурированный статус входа. Ключевые поля:
service.connectedservice.has_saved_loginservice.qr.open_modeservice.qr.page_pathservice.qr.image_pathservice.qr.login_urlassistant_summarynext_steps.should_scan_qr
Переменные окружения
export MIJIA_ENABLE_QR="true"
export MIJIA_QR_OPEN_MODE="browser"
export MIJIA_LOG_LEVEL="INFO"Пояснения:
MIJIA_ENABLE_QR: включает ли вход по QR-коду, по умолчаниюtrueMIJIA_QR_OPEN_MODE: расширенная настройка, поддерживаетbrowser/viewer/none, по умолчаниюbrowserMIJIA_LOG_LEVEL: уровень журнала, поддерживаетDEBUG/INFO/WARNING/ERROR
Пример конфигурации MCP-клиента
Рекомендуется использовать Python из виртуального окружения, а не poetry run.
{
"mcpServers": {
"mijia": {
"command": "/path/to/venv/bin/python",
"args": [
"/path/to/miot-mcp/mcp_server/mcp_server.py"
],
"env": {
"MIJIA_ENABLE_QR": "true",
"MIJIA_QR_OPEN_MODE": "browser",
"MIJIA_LOG_LEVEL": "INFO"
}
}
}
}Рекомендуемые пути вызовов
Для большинства AI-клиентов рекомендуется использовать в первую очередь так:
prepare_loginget_service_statusrefresh_devicesget_home_overviewget_device_statuscontrol_by_intentlist_scenesexecute_scene
Если клиенту нужен более стабильный и явный роутинг, дополнительно:
list_homeslist_devicesget_deviceget_device_capabilitiescontrol_device
Описание часто используемых инструментов
prepare_login
Активно готовит вход по QR-коду. По умолчанию сначала переиспользует существующую страницу QR-кода; если нужно заново пройти цикл сканирования, можно передать force_reauth=true.
get_service_status
Возвращает состояние подключения сервиса, путь к файлу аутентификации, путь к журналу, путь к странице QR-кода и рекомендации по следующим шагам.
get_home_overview
Выводит обзор устройств по домам и комнатам, чтобы клиент сначала понял структуру дома.
get_device_status
Позволяет посмотреть текущее состояние устройства, доступные операции и рекомендуемый следующий шаг.
get_device_capabilities
Возвращает стандартную schema возможностей и элементы управления на основе profile, подходит для клиентов, которым нужен стабильный роутинг.
control_by_intent
Вход для управления на естественном языке. Подходит для большинства повседневных сценариев, например «установить яркость настольной лампы в спальне на 30%».
control_device
Единый структурированный вход для управления. Подходит, когда клиент уже знает целевое действие и параметры.
speaker_say
Заставляет колонку 小爱音箱 озвучить произвольный текст («выкрик»). Подходит для напоминаний о завершении длинных задач, озвучивания по типу будильника и чтения текста указанной колонкой.
{
"name": "speaker_say",
"arguments": {
"text": "任务完成啦,图片已生成",
"speaker_name": "城市之光音响"
}
}Почему используется play-text, а не execute-text-directive:
У колонки 小爱音箱 есть два связанных действия:
execute-text-directive— отправляет текст в 小爱 как вопрос/команду для разбора → вызывает AI-ответ (например, «меня поставили в тупик»), а не чистое озвучиваниеplay-text— чистое воспроизведение текста, один параметр_in=[text], не запускает AI-диалог ←speaker_sayиспользует именно его
Ловушка: универсальный путь
run_actionпередаёт параметры в полеvalue, из-за чего облачный API возвращает-704220025 Action参数个数不匹配; необходимо использовать подход с kwargs через_in(device.run_action('play-text', _in=[text])→method['in']=[text]).
Способ через командную строку (без MCP-клиента, прямой запуск скриптом):
python speaker_say.py "任务完成啦" --speaker "城市之光音响"
python speaker_say.py "任务完成啦" --speaker "客厅音箱" --quiet # 静默(只执行不播报)Параметры:
text: текст для озвучивания (естественный язык)--speaker: название колонки (нечёткое сопоставление; если не указано, выбирается первая онлайн-колонка)--quiet: тихий режим (без голосового воспроизведения)
Примеры использования
Просмотр статуса сервиса
{
"name": "get_service_status",
"arguments": {}
}Активная подготовка входа
{
"name": "prepare_login",
"arguments": {
"reopen_qr": true
}
}Обновление соответствия устройств и комнат
{
"name": "refresh_devices",
"arguments": {}
}Просмотр обзора дома
{
"name": "get_home_overview",
"arguments": {}
}Просмотр состояния отдельного устройства
{
"name": "get_device_status",
"arguments": {
"device_name": "吸顶灯",
"room": "客厅"
}
}Просмотр schema возможностей
{
"name": "get_device_capabilities",
"arguments": {
"device_name": "台灯",
"room": "卧室"
}
}Управление на естественном языке
{
"name": "control_by_intent",
"arguments": {
"query": "把卧室台灯亮度调到30%"
}
}Структурированное управление
{
"name": "control_device",
"arguments": {
"operation": "set_color_temperature",
"device_name": "台灯",
"room": "卧室",
"value": 4000
}
}Выполнение сцены
{
"name": "execute_scene",
"arguments": {
"scene_name": "回家模式"
}
}Текущие границы
Эта версия MCP в первую очередь покрывает самые распространённые пути управления домом:
Просмотр домов и комнат
Поиск устройств
Управление общими возможностями
Предоставление стандартизированной schema возможностей
Выполнение сцен
Запрос расходных материалов
Уже хорошо покрытые типовые возможности включают:
Включение/выключение
Яркость
Цветовую температуру
Целевую температуру
Режим
Скорость вентилятора
Положение открытия/закрытия
Более низкоуровневые и более настраиваемые возможности по-прежнему можно расширять через control_device, но они больше не раскрываются наружу как способ использования по умолчанию.
Структура кода
Внутри сервис в основном состоит из трёх уровней:
adapter/отвечает за взаимодействие сmijiaAPI, вход, обнаружение устройств и работу с QR-входомmcp_server/core/отвечает за обёртку результатов, вычисление возможностей, маршрутизацию намерений и стандартизациюmcp_server/device_definitions/иmcp_server/device_resources/отвечают за определения стандартных возможностей, определения намерений и продуктовую модель ресурсов
Текущие возможности и маршрутизация не зависят от автоматического обнаружения плагинов, а явно импортируют таблицы определений. Так понятнее и стабильнее для вызовов AI-клиентами.
DSH (DeepSeek Harness) интеграционный плагин
Помимо MCP-сервиса, этот репозиторий содержит также Cordis-плагин для DeepSeek Harness (dsh-plugin/dsh-task-notify), который позволяет агенту DSH активно озвучивать через колонку 小爱音箱 + отправлять уведомления в 飞书 (напоминание о завершении длинных задач):
Инструмент | Назначение |
| Уведомление о завершении длинных задач: личное сообщение в 飞书 обязательно + решение об озвучивании через колонку 小爱音箱 в зависимости от статуса «не беспокоить» |
| Заставляет указанную колонку 小爱音箱 произнести произвольный текст (чистое воспроизведение, без запуска AI-диалога 小爱) |
| Переключатель «не беспокоить» / смена текущей колонки / изменение цели 飞书 (постоянно между сеансами) |
| Получить текущий статус |
Установка плагина DSH
# 1. 复制到 DSH profiles 的 node_modules
cp -r dsh-plugin/dsh-task-notify C:\Users\<you>\.dsh\profiles\node_modules\@oadank\dsh-task-notify
# 2. 注册到 ~/.dsh/profiles/web/cordis.patch.yml 的 insert 列表
- id: dsh-task-notify
name: '@oadank/dsh-task-notify'
# 3. 重启 dsh-web 生效Плагин вызывает speaker_say.py (из этого репозитория) для озвучивания через 小爱. Колонку по умолчанию можно переключить через set_notify_state(currentSpeaker, "音箱名"), состояние сохраняется в ~/.dsh/profiles/notify-state.json и остаётся постоянным между сеансами.
Подробное описание см. в dsh-plugin/README.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server based on the Mastra framework for controlling Xiaomi Mi Home smart devices. It enables device discovery, property management, action execution, and scene control through the Mi Home cloud service.
- AlicenseAqualityCmaintenancemijia-control A production-ready MCP server that enables AI agents (Claude Code, Claude Desktop, Cursor, Hermes, etc.) to directly control Xiaomi/Mijia smart home devices through natural language. What it does Turns conversations into physical actions — "turn on the desk lamp to 50%" becomes actual device control in real-time.1260MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for controlling Xiaomi/Mi Home smart devices via natural language, supporting device listing, property read/write, action calls, and camera snapshots.11
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to control Xiaomi Mi Home smart devices through natural language, with support for listing devices, controlling properties, and running scenes.MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/oadank/miot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server