Xiaomi smart home MCP server
MijiaPilot
中文 | English | 日本語 | 한국어 | Español
Mijia × MCP × AI Agent × HomeKit 全ブリッジスマートホームプラットフォーム。
謝辞:本プロジェクトの基盤には Do1e/mijia-api (mijiaAPI v3.0+) が提供するPython SDKを使用しており、Xiaomiクラウドとのデバイス通信、属性の読み書き、シーン実行を行っています。原作者のオープンソースへの貢献に感謝いたします。
デモ


機能特性
Web管理画面 — デバイス制御、ホーム/シーン管理、エネルギー消費統計、自動化ルール、ダークモード、モバイル対応
RESTful API — JWT認証、完全なSwaggerドキュメント (
/api/docs/)、サードパーティ統合をサポートCLIツール —
mijia-controlコマンドライン、ログイン、デバイスリスト、属性の読み書き、シーン実行をサポートリアルタイム通信 — SocketIOによるデバイス状態変更のプッシュ通知
デバイスグループ/お気に入り — カスタムグループによるデバイス管理、よく使うデバイスのお気に入り登録
タイマー自動化ルール — cron、interval、日の出/日の入りなどのトリガー方式をサポート
エネルギー消費ダッシュボード — デバイスごとのエネルギー消費データを記録・表示(日/時間単位)
APIトークン管理 — サードパーティアプリケーション用のアクセス用トークンの作成と管理
MCP Server — MCPプロトコルを内蔵し、Claude Code / Hermes Agent などのAIエージェントから直接呼び出し可能
HomeKitブリッジ — Appleの「ホーム」アプリとSiriからMijiaデバイスを制御。照明、コンセント、センサー、サーモスタットなどをサポート
マルチユーザー & 権限 — ユーザー登録・ログイン、管理者バックエンド、レート制限保護
技術スタック
レイヤー | 技術 |
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 |
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.pyhttp://127.0.0.1:5000 にアクセスし、アカウントを登録して使用を開始します。
API概要
モジュール | パスプレフィックス | 説明 |
認証 (Session) |
| 登録、ログイン、ログアウト、パスワード変更 |
認証 (JWT) |
| JWTログイン、トークン更新 |
Xiaomiアカウント連携 |
| QRコード連携、状態確認、連携解除 |
デバイス管理 |
| デバイスリスト、属性の読み書き、アクション実行、カメラストリーム |
ホーム管理 |
| ホームリスト、詳細 |
シーン実行 |
| シーンリスト、実行 |
デバイスグループ |
| グループCRUD、お気に入り管理 |
自動化ルール |
| タイマールールCRUD、有効/無効 |
エネルギー統計 |
| エネルギー記録、日/時間/最新クエリ |
APIトークン |
| トークン管理(サードパーティ統合) |
完全なAPIドキュメント:起動後に /api/docs/ にアクセスしてください。
MCP Server(AIエージェント統合)
MCP Serverを内蔵しており、Claude Code、Hermes Agent、OpenClawなど、MCPプロトコル互換のAIエージェントからMijiaデバイスを直接制御できます。
インストール
pip install -e ".[mcp]"設定
まずWebサービスが起動していることを確認し(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「ホーム」& Siri制御)
HAP-Pythonを使用してHomeKitブリッジを実現し、iPhoneやMacユーザーがAppleの「ホーム」アプリやSiriからMijiaデバイスを直接制御できるようにします。
アーキテクチャ
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-678Webサービスが起動しており、JWTトークン(MCP Serverと同じ MIJIA_TOKEN)が取得できていることを確認してください。
起動
# 先启动 Web 服务
python run.py
# 再启动 HomeKit Bridge(另一个终端)
python -m app.homekitペアリング
スマホとPCが同じローカルネットワークにあることを確認
iPhone → 「ホーム」アプリ → デバイスを追加 → 端末に表示されたQRコードをスキャン、またはPINを手動入力
ペアリング成功後、デバイスは「Mijia Smart Home」ブリッジとして表示されます
iPhone「ホーム」アプリでの表示
サポートされているデバイスタイプ
HomeKitタイプ | Mijiaデバイス | 制御能力 |
Lightbulb | 電球、LEDテープ | オンオフ、輝度、色温度 |
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
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