Xiaomi smart home MCP server
MijiaPilot
中文 | English | 日本語 | 한국어 | Español
Платформа умного дома с полным мостом Mijia × MCP × AI Agent × HomeKit.
Благодарности: В основе проекта используется Python SDK от Do1e/mijia-api (mijiaAPI v3.0+), предназначенный для связи с облаком Xiaomi, чтения/записи атрибутов устройств и выполнения сценариев. Спасибо автору за вклад в open source.
Демонстрация


Related MCP server: Home Controller
Функциональные возможности
Веб-интерфейс управления — управление устройствами, домом/сценариями, статистика энергопотребления, правила автоматизации, темная тема, адаптация для мобильных устройств
RESTful API — JWT-аутентификация, полная документация Swagger (
/api/docs/), поддержка сторонних интеграцийCLI-инструмент — командная строка
mijia-control, поддержка входа, списка устройств, чтения/записи атрибутов, выполнения сценариевСвязь в реальном времени — SocketIO для уведомлений об изменении состояния устройств
Группировка/избранное устройств — пользовательская группировка устройств, быстрое добавление в избранное
Правила автоматизации по расписанию — поддержка триггеров cron, интервалов, восхода/заката и т.д.
Панель статистики энергопотребления — запись и отображение данных по устройствам (с детализацией по дням/часам)
Управление API-токенами — создание и управление токенами доступа для сторонних приложений
MCP Server — встроенная поддержка протокола MCP, прямой вызов AI-агентами, такими как Claude Code / Hermes Agent
Мост HomeKit — управление устройствами Mijia через приложение Apple Home и Siri, поддержка освещения, розеток, датчиков, термостатов и т.д.
Многопользовательский режим и права доступа — регистрация и вход пользователей, панель администратора, защита от ограничения частоты запросов (rate limiting)
Технологический стек
Уровень | Технология |
Веб-фреймворк | Flask 3.0+ |
ORM и миграции | SQLAlchemy + Flask-Migrate (Alembic) |
База данных | MySQL (pymysql) |
Аутентификация | Flask-Login (Session) + Flask-JWT-Extended (API) |
CSRF-защита | Flask-WTF |
Ограничение запросов | Flask-Limiter |
Связь в реальном времени | Flask-SocketIO |
Документация API | Flasgger (Swagger UI) |
Сериализация/валидация | Marshmallow |
Mijia SDK | mijiaAPI >= 3.0 |
Протокол MCP | MCP Python SDK >= 1.6 |
HomeKit | HAP-Python >= 5.0 |
Качество кода | Ruff (lint + format) |
Тестирование | pytest |
Структура проекта
├── app/
│ ├── __init__.py # Flask 应用工厂
│ ├── extensions.py # 扩展实例(db, jwt, csrf, socketio...)
│ ├── api/ # REST API 蓝图 (JWT 认证)
│ ├── web/ # Web UI 蓝图 (Session + CSRF 认证)
│ ├── services/ # 业务逻辑层
│ ├── models/ # SQLAlchemy 数据模型
│ ├── schemas/ # Marshmallow 序列化/校验
│ ├── utils/ # MijiaAPI 适配器、统一响应、装饰器
│ ├── cli/ # Click CLI 命令
│ └── homekit/ # HomeKit Bridge(Apple 家庭桥接)
├── mcp_server/ # MCP Server(AI Agent 工具)
├── config/ # Flask 配置(development/testing/production)
├── migrations/ # Alembic 数据库迁移脚本
├── tests/ # pytest 测试
├── run.py # 开发服务器入口
├── docs/ # 详细文档(HomeKit、API 等)
└── pyproject.toml # 项目配置 & 依赖Быстрый старт
1. Подготовка окружения
Python 3.10+
MySQL 5.7+
2. Установка
# 克隆本项目
git clone https://github.com/handsomejustin/mijia-control.git
cd mijia-control
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
# venv\Scripts\activate # Windows
# 安装依赖(mijiaAPI 会作为依赖自动安装)
pip install -e ".[dev]"3. Конфигурация
Скопируйте .env.example в .env и заполните необходимые параметры:
cp .env.example .envFLASK_APP=app:create_app
FLASK_ENV=development
SECRET_KEY=your-secret-key-here
DATABASE_URL=mysql+pymysql://user:password@127.0.0.1:3306/mijia
JWT_SECRET_KEY=your-jwt-secret-key-here
GO2RTC_URL=http://127.0.0.1:19844. Инициализация базы данных
# 创建 MySQL 数据库
mysql -u root -p -e "CREATE DATABASE mijia CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
# 执行迁移
flask db upgrade5. Запуск
python run.pyПерейдите по адресу http://127.0.0.1:5000, зарегистрируйте аккаунт и начните работу.
Обзор API
Модуль | Префикс пути | Описание |
Аутентификация (Session) |
| Регистрация, вход, выход, смена пароля |
Аутентификация (JWT) |
| JWT-вход, обновление токена |
Привязка аккаунта Xiaomi |
| Привязка по QR-коду, проверка статуса, отвязка |
Управление устройствами |
| Список устройств, чтение/запись атрибутов, выполнение действий, поток с камер |
Управление домом |
| Список домов, детали |
Выполнение сценариев |
| Список сценариев, выполнение |
Группировка устройств |
| CRUD групп, управление избранным |
Правила автоматизации |
| CRUD правил по расписанию, включение/выключение |
Статистика энергопотребления |
| Записи энергопотребления, запросы по дням/часам/последним данным |
API Token |
| Управление токенами (сторонние интеграции) |
Полная документация API: после запуска перейдите по адресу /api/docs/.
MCP Server (Интеграция с AI Agent)
Встроенный MCP-сервер поддерживает Claude Code, Hermes Agent, OpenClaw и любых других AI-агентов, совместимых с протоколом MCP, для прямого управления устройствами Mijia.
Установка
pip install -e ".[mcp]"Конфигурация
Сначала убедитесь, что веб-сервис запущен (python run.py), затем получите токен:
# 方式一:CLI 登录(推荐,自动保存 Token)
mijia-control login
# 方式二:API 登录获取
curl -X POST http://127.0.0.1:5000/api/auth/jwt/login \
-H "Content-Type: application/json" \
-d '{"username": "你的用户名", "password": "你的密码"}'
# 返回的 access_token 即为 MIJIA_TOKENУстановите переменные окружения:
# Linux / macOS
export MIJIA_API_URL=http://127.0.0.1:5000/api
export MIJIA_TOKEN=eyJhbGci... # 上一步获取的 access_token
# Windows (PowerShell)
$env:MIJIA_API_URL = "http://127.0.0.1:5000/api"
$env:MIJIA_TOKEN = "eyJhbGci..."
# Windows (CMD)
set MIJIA_API_URL=http://127.0.0.1:5000/api
set MIJIA_TOKEN=eyJhbGci...Использование в Claude Code
# 注册 MCP 服务器
claude mcp add mijia -- python -m mcp_server
# 之后在对话中直接使用
# "帮我把客厅的灯关掉"
# "查看所有设备的在线状态"
# "执行回家场景"Доступные инструменты
Инструмент | Функция |
| Список всех устройств |
| Просмотр деталей и спецификаций устройства |
| Чтение атрибута устройства |
| Установка атрибута устройства (управление) |
| Выполнение действия устройства |
| Список сценариев |
| Выполнение сценария |
| Список домов |
| Просмотр деталей дома |
HomeKit Bridge (Управление через Apple Home и Siri)
Реализация моста HomeKit через HAP-Python позволяет пользователям iPhone и Mac управлять устройствами Mijia напрямую через приложение Apple Home и Siri.
Архитектура
Apple 家庭 / Siri → HomeKit Bridge (HAP-Python) → Flask REST API → 米家设备
独立进程,端口 51826 python run.pyУстановка
pip install -e ".[homekit]"Пользователи Windows: необходимо установить Bonjour Print Services или использовать Docker для запуска моста.
Конфигурация
Добавьте в .env (или установите переменные окружения):
HOMEKIT_ENABLED=true
HOMEKIT_PORT=51826
HOMEKIT_PIN=123-45-678Убедитесь, что веб-сервис запущен и получен JWT-токен (тот же MIJIA_TOKEN, что и для MCP Server).
Запуск
# 先启动 Web 服务
python run.py
# 再启动 HomeKit Bridge(另一个终端)
python -m app.homekitСопряжение
Убедитесь, что телефон и компьютер находятся в одной локальной сети
iPhone → Приложение «Дом» → Добавить устройство → Отсканируйте QR-код, отображаемый в терминале, или введите PIN вручную
После успешного сопряжения устройства появятся как мост «Mijia Smart Home»
Вид в приложении Apple Home на iPhone
Поддерживаемые типы устройств
Тип HomeKit | Устройство Mijia | Возможности управления |
Lightbulb | Лампы, светодиодные ленты | Вкл/выкл, яркость, цветовая температура |
Outlet | Розетки, умные выключатели | Вкл/выкл |
Switch | Роботы-пылесосы, очистители и т.д. | Вкл/выкл |
TemperatureSensor | Датчики температуры и влажности | Чтение температуры, влажности |
Thermostat | Кондиционеры, осушители | Вкл/выкл, целевая температура |
HeaterCooler | Обогреватели | Вкл/выкл, целевая температура |
Пользовательское сопоставление устройств
Если модель вашего устройства отсутствует во встроенных правилах, мост автоматически определит тип на основе spec_data устройства. Если определение неточное, можно создать homekit_mapping.yaml для настройки сопоставления:
cp homekit_mapping.yaml.example homekit_mapping.yaml# homekit_mapping.yaml
devices:
zhimi.airp.mb4a: switch # 精确 model 匹配
lumi.sensor_magnet.aq2: ignored # 忽略不需要的设备
fallback: auto # auto=智能推断 | switch=全部当开关 | ignore=忽略未知Доступные категории: light, outlet, switch, temperature_sensor, thermostat, heater, camera, ignored
Использование CLI
После установки и активации виртуального окружения можно использовать команду mijia-control (без контекста Flask):
mijia-control --help # 查看帮助Также можно вызывать через Flask CLI:
flask mijia <command>
Кроссплатформенность: pip install -e ".[dev]" автоматически создает исполняемые файлы для платформы:
Платформа | Путь к исполняемому файлу | Описание |
Windows |
| Доступно после активации venv |
Linux / macOS |
| Доступно после активации venv |
Опционально: глобальное использование (без активации venv)
# Linux / macOS — 创建软链接
sudo ln -s /path/to/mijia-control/venv/bin/mijia-control /usr/local/bin/mijia-control
# Windows — 将以下路径添加到系统 PATH 环境变量
# D:\path\to\mijia-control\venv\ScriptsУправление пользователями
mijia-control login # 登录(交互式输入用户名密码)
mijia-control logout # 退出登录
mijia-control whoami # 查看当前用户
mijia-control xiaomi status # 查看小米账号绑定状态
mijia-control xiaomi unlink # 解绑小米账号Управление устройствами
mijia-control device list # 列出设备
mijia-control device list --home-id <id> # 按家庭筛选
mijia-control device list --refresh # 强制刷新设备列表
mijia-control device show <did> # 查看设备详情
mijia-control device get <did> <prop_name> # 读取设备属性
mijia-control device set <did> <prop_name> <value> # 设置设备属性
mijia-control device action <did> <action_name> # 执行设备动作Сценарии и дома
mijia-control scene list # 列出场景
mijia-control scene list --refresh # 强制刷新
mijia-control scene run <scene_id> # 执行场景
mijia-control home list # 列出家庭
mijia-control home show <home_id> # 查看家庭详情Разработка
# Lint
ruff check .
# 自动修复
ruff check --fix .
# 格式化
ruff format .
# 运行测试
pytest -vЛицензия
Проект распространяется под лицензией GPL-3.0, наследуя условия лицензии от вышестоящего проекта mijiaAPI.
Maintenance
Latest Blog Posts
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/handsomejustin/mijia-control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server