Skip to main content
Glama
handsomejustin

Xiaomi smart home MCP server

MijiaPilot

中文 | English | 日本語 | 한국어 | Español

MCP Server GitHub license Python Version Flask GitHub stars GitHub issues GitHub last commit

Платформа умного дома с полным мостом 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 .env
FLASK_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:1984

4. Инициализация базы данных

# 创建 MySQL 数据库
mysql -u root -p -e "CREATE DATABASE mijia CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# 执行迁移
flask db upgrade

5. Запуск

python run.py

Перейдите по адресу http://127.0.0.1:5000, зарегистрируйте аккаунт и начните работу.

Обзор API

Модуль

Префикс пути

Описание

Аутентификация (Session)

/api/auth/

Регистрация, вход, выход, смена пароля

Аутентификация (JWT)

/api/auth-jwt/

JWT-вход, обновление токена

Привязка аккаунта Xiaomi

/api/xiaomi/

Привязка по QR-коду, проверка статуса, отвязка

Управление устройствами

/api/devices/

Список устройств, чтение/запись атрибутов, выполнение действий, поток с камер

Управление домом

/api/homes/

Список домов, детали

Выполнение сценариев

/api/scenes/

Список сценариев, выполнение

Группировка устройств

/api/groups/

CRUD групп, управление избранным

Правила автоматизации

/api/automations/

CRUD правил по расписанию, включение/выключение

Статистика энергопотребления

/api/energy/

Записи энергопотребления, запросы по дням/часам/последним данным

API Token

/api/tokens/

Управление токенами (сторонние интеграции)

Полная документация 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

# 之后在对话中直接使用
# "帮我把客厅的灯关掉"
# "查看所有设备的在线状态"
# "执行回家场景"

Доступные инструменты

Инструмент

Функция

list_devices

Список всех устройств

get_device

Просмотр деталей и спецификаций устройства

get_property

Чтение атрибута устройства

set_property

Установка атрибута устройства (управление)

run_action

Выполнение действия устройства

list_scenes

Список сценариев

run_scene

Выполнение сценария

list_homes

Список домов

get_home

Просмотр деталей дома

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

Сопряжение

  1. Убедитесь, что телефон и компьютер находятся в одной локальной сети

  2. iPhone → Приложение «Дом» → Добавить устройство → Отсканируйте QR-код, отображаемый в терминале, или введите PIN вручную

  3. После успешного сопряжения устройства появятся как мост «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\Scripts\mijia-control.exe

Доступно после активации venv

Linux / macOS

venv/bin/mijia-control

Доступно после активации 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.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
5Releases (12mo)

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