Xiaomi smart home MCP server
Control and monitor Xiaomi (Mijia) smart home devices via MCP protocol, enabling AI agents to interact with your smart home through the following capabilities:
Device Management: List all devices (
list_devices), get device details and specs (get_device), read properties like power/brightness/temperature (get_property), set properties to control devices (set_property), and execute device actions such as starting a robot vacuum (run_action).Scene Control: List configured scenes (
list_scenes) and execute them to trigger preset device operations (run_scene).Home Management: List all homes (
list_homes) and view home details including associated devices (get_home).BLE Sensor Monitoring: List Bluetooth sensors with latest readings (
list_ble_devices), fetch current temperature/humidity/battery data (get_ble_sensor), and query historical readings for trend analysis (get_ble_readings).
Allows AI agents to control Xiaomi smart home devices, including listing devices, reading/writing properties, executing actions, running scenes, and managing homes.
MijiaPilot
中文 | English | 日本語 | 한국어 | Español
米家 小米生态 × MCP x CLI × AI Agent × HomeKit 全桥接智能家居平台。
Changelog
v1.0.3 (2026-05-14)
fix:
SQLALCHEMY_DATABASE_URI增加 SQLite 默认值(sqlite:///mijia.db),未设置DATABASE_URL时不再崩溃fix: Werkzeug 3.1+ 安全限制,
run.py添加allow_unsafe_werkzeug=True保障开发环境启动
升级注意:如果你之前使用 MySQL,不受影响。SQLite 仅在未配置
DATABASE_URL时作为 fallback。 若从 MySQL 首次切换到 SQLite(或新建 SQLite 数据库),需要执行flask db upgrade创建表, 并通过 Web 界面或/api/auth/register注册用户,再绑定小米账号后方可使用设备控制功能。
v1.0.2 (2026-05-13)
fix: 修复 Jinja2
search测试不存在导致的 500 错误
v1.0.1
feat: 专属设备控制页模板(灯光、取暖器、空调伴侣、传感器、开关、摄像头)
feat: 通用设备控制页使用共享组件和更好的 UI
v1.0.0
初始发布
致谢:本项目底层使用了 Do1e/mijia-api(mijiaAPI v3.0+)提供的 Python SDK, 用于与小米云端进行设备通信、属性读写和场景执行。感谢原作者的开源贡献。
Related MCP server: Home Controller
演示


功能特性
Web 管理界面 — 设备控制、家庭/场景管理、能耗统计、自动化规则、深色模式、移动端适配
RESTful API — JWT 认证,完整的 Swagger 文档(
/api/docs/),支持第三方集成CLI 工具 —
mijia-control命令行,支持登录、设备列表、属性读写、场景执行实时通信 — SocketIO 推送设备状态变更
设备分组/收藏 — 自定义分组管理设备,快速收藏常用设备
定时自动化规则 — 支持 cron、interval、日出/日落等触发方式
能耗统计仪表板 — 按设备记录和展示能耗数据(日/小时粒度)
API Token 管理 — 为第三方应用创建和管理访问令牌
MCP Server — 内置 MCP 协议支持,Claude Code / Hermes Agent 等 AI Agent 可直接调用
HomeKit 桥接 — 通过 Apple 家庭 App 和 Siri 控制米家设备,支持灯光、插座、传感器、温控器等
BLE 蓝牙传感器 — PC 蓝牙直连小米 BLE 温湿度计,本地实时数据采集,支持自动化联动
多用户 & 权限 — 用户注册登录、管理员后台、限流保护
技术栈
层级 | 技术 |
Web 框架 | 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 |
米家 SDK | mijiaAPI >= 3.0 |
MCP 协议 | MCP Python SDK >= 1.6 |
HomeKit | HAP-Python >= 5.0 |
BLE 扫描 | bleak >= 0.22 |
代码质量 | 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 家庭桥接)
│ └── ble/ # BLE 蓝牙传感器守护进程(独立进程)
├── 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 登录、刷新令牌 |
小米账号绑定 |
| 二维码绑定、状态查询、解绑 |
设备管理 |
| 设备列表、属性读写、动作执行、摄像头流 |
家庭管理 |
| 家庭列表、详情 |
场景执行 |
| 场景列表、执行 |
设备分组 |
| 分组 CRUD、收藏管理 |
自动化规则 |
| 定时规则 CRUD、启用/禁用 |
能耗统计 |
| 能耗记录、日/小时/最新查询 |
BLE 传感器 |
| BLE 设备注册、数据上报、历史查询 |
API Token |
| 令牌管理(第三方集成) |
完整 API 文档:启动后访问 /api/docs/。
MCP Server(AI Agent 集成)
内置 MCP Server,支持 Claude Code、Hermes Agent、OpenClaw 等任何兼容 MCP 协议的 AI Agent 直接控制米家设备。
安装
pip install -e ".[mcp]"配置
首先确保 Web 服务已启动(python run.py),然后获取 Token:
# 方式一: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
# 之后在对话中直接使用
# "帮我把客厅的灯关掉"
# "查看所有设备的在线状态"
# "执行回家场景"可用工具
工具 | 功能 |
| 列出所有设备 |
| 查看设备详情与规格 |
| 读取设备属性 |
| 设置设备属性(控制设备) |
| 执行设备动作 |
| 列出场景 |
| 执行场景 |
| 列出家庭 |
| 查看家庭详情 |
| 列出 BLE 传感器设备 |
| 获取 BLE 传感器最新数据 |
| 查询 BLE 传感器历史读数 |
HomeKit Bridge(Apple 家庭 & Siri 控制)
通过 HAP-Python 实现 HomeKit 桥接,让 iPhone、Mac 用户在 Apple 家庭 App 和 Siri 中直接控制米家设备。
架构
Apple 家庭 / Siri → HomeKit Bridge (HAP-Python) → Flask REST API → 米家设备
独立进程,端口 51826 python run.py安装
pip install -e ".[homekit]"Windows 用户:需要安装 Bonjour Print Services 或使用 Docker 运行 Bridge。
配置
在 .env 中添加(或直接设置环境变量):
HOMEKIT_ENABLED=true
HOMEKIT_PORT=51826
HOMEKIT_PIN=123-45-678确保 Web 服务已启动并获取 JWT Token(与 MCP Server 相同的 MIJIA_TOKEN)。
启动
# 先启动 Web 服务
python run.py
# 再启动 HomeKit Bridge(另一个终端)
python -m app.homekit配对
确保手机和电脑在同一局域网
iPhone → 家庭 App → 添加设备 → 扫描终端显示的 QR 码,或手动输入 PIN
配对成功后,设备会以「米家智能家居」桥接器的形式出现
iPhone 家庭 App 效果
支持的设备类型
HomeKit 类型 | 米家设备 | 控制能力 |
Lightbulb | 灯泡、灯带 | 开关、亮度、色温 |
Outlet | 插座、智能开关 | 开关 |
Switch | 扫地机、净化器等 | 开关 |
TemperatureSensor | 温湿度传感器 | 温度、湿度读取 |
Thermostat | 空调伴侣、除湿机 | 开关、目标温度 |
HeaterCooler | 取暖器 | 开关、目标温度 |
设备映射自定义
当你的设备型号不在内置规则中时,Bridge 会自动从设备的 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
BLE 蓝牙传感器(本地蓝牙数据采集)
通过 PC 蓝牙直连小米 BLE 温湿度计等传感器,无需额外蓝牙网关硬件。支持数据展示、历史查询和自动化联动。
架构
BLE 温度计 ─BLE 广播→ BLE Scanner (独立进程) ─HTTP POST→ Flask API → DB
python -m app.ble python run.py安装
pip install -e ".[ble]"需要 PC 具备蓝牙功能(Windows 10/11 内置支持,无需额外驱动)。
配置
在 .env 中添加:
BLE_ENABLED=true确保已设置 MIJIA_TOKEN(与 MCP Server / HomeKit Bridge 相同)。
使用步骤
# 1. 扫描附近 BLE 设备,发现 MAC 地址
mijia-control ble scan
# 2. 注册 BLE 设备(自动从云端获取解密密钥)
mijia-control ble register --did "blt.3.xxxxx" --mac "A4:C1:38:XX:XX:XX"
# 3. 启动 BLE 守护进程(需要先启动 Web 服务)
python run.py # 终端 1
python -m app.ble # 终端 2
# 4. 查看数据
mijia-control ble list
mijia-control ble readings "blt.3.xxxxx" --hours 24支持的设备
设备 | 型号 | 数据 |
米家温湿度传感器迷你 | LYWSD03MMC | 温度、湿度、电量 |
米家温湿度传感器(圆形) | LYWSDCGQ | 温度、湿度、电量 |
米家温湿度传感器(新品) | MJWSD05MMC | 温度、湿度、电量 |
自动化联动
BLE 传感器数据可触发自动化规则,例如温度 > 30°C 自动开空调:
curl -X POST http://127.0.0.1:5000/api/automations \
-H "Authorization: Bearer $MIJIA_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "温度过高开空调",
"trigger_type": "ble_sensor",
"trigger_config": {
"did": "blt.3.xxxxx",
"metric": "temperature",
"operator": ">",
"threshold": 30.0,
"cooldown_seconds": 300
},
"action_type": "set_property",
"action_config": {"did": "空调did", "prop_name": "power", "value": "on"}
}'📖 详细文档:docs/ble.md — 包含架构说明、安装配置、调试指南、故障排除、扩展新设备等完整内容。
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> # 查看家庭详情BLE 蓝牙传感器
mijia-control ble scan # 扫描附近 BLE 设备
mijia-control ble register --did <did> --mac <mac> # 注册 BLE 设备
mijia-control ble list # 列出 BLE 设备及最新读数
mijia-control ble readings <did> --hours 24 # 查询历史读数开发
# Lint
ruff check .
# 自动修复
ruff check --fix .
# 格式化
ruff format .
# 运行测试
pytest -v许可证
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
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) integration that allows AI assistants to control Home Assistant devices by searching for entities and controlling devices through natural language commands.Last updated324MIT
- Alicense-qualityCmaintenanceA unified smart home automation system that enables control and monitoring of Miele appliances, LG ThinQ devices, HUUM saunas, and Phyn water monitors through Claude using the Model Context Protocol.Last updated42MIT
- Flicense-qualityDmaintenanceAn 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.Last updated
- Flicense-qualityFmaintenanceMCP server for controlling Xiaomi/Mi Home smart devices via natural language, supporting device listing, property read/write, action calls, and camera snapshots.Last updated10
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
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/handsomejustin/mijia-control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server