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 全ブリッジスマートホームプラットフォーム。

謝辞:本プロジェクトの基盤には Do1e/mijia-api (mijiaAPI v3.0+) が提供するPython SDKを使用しており、Xiaomiクラウドとのデバイス通信、属性の読み書き、シーン実行を行っています。原作者のオープンソースへの貢献に感謝いたします。

デモ

Agent デモ画面

Agent デモ動画

機能特性

  • 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 .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トークン

/api/tokens/

トークン管理(サードパーティ統合)

完全な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

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

利用可能なツール

ツール

機能

list_devices

全デバイスをリスト表示

get_device

デバイスの詳細と仕様を確認

get_property

デバイス属性を読み取り

set_property

デバイス属性を設定(デバイス制御)

run_action

デバイスアクションを実行

list_scenes

シーンをリスト表示

run_scene

シーンを実行

list_homes

ホームをリスト表示

get_home

ホームの詳細を確認

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-678

Webサービスが起動しており、JWTトークン(MCP Serverと同じ MIJIA_TOKEN)が取得できていることを確認してください。

起動

# 先启动 Web 服务
python run.py

# 再启动 HomeKit Bridge(另一个终端)
python -m app.homekit

ペアリング

  1. スマホとPCが同じローカルネットワークにあることを確認

  2. iPhone → 「ホーム」アプリ → デバイスを追加 → 端末に表示されたQRコードをスキャン、またはPINを手動入力

  3. ペアリング成功後、デバイスは「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=忽略未知

利用可能なカテゴリ:lightoutletswitchtemperature_sensorthermostatheatercameraignored

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