miot-mcp
米家 MCP Server
Chinesische Dokumentation | English
Ein produktorientierter 米家 MCP-Dienst auf Basis von mijiaAPI 3.x. Er verlangt vom Client nicht mehr, zuerst die Protokolldetails wie did, siid/piid/aiid zu verstehen, sondern bietet – orientiert an „Zuhause, Raum, Gerätename, Szenenname“ – natürlichere Abfrage- und Steuerungsmöglichkeiten.
Was diese Version löst
Für AI-Clients: Stabile, klare Produktwerkzeuge werden gegenüber Low-Level-Protokollfeldern bevorzugt
Für reale Zuhause-Szenarien: Erst Zuhause und Räume ansehen, dann Geräte lokalisieren, dann Steuerung ausführen
Für den MCP-Standard: Werkzeuge liefern strukturierte Ergebnisse; Dienststatus und Anmeldestatus können direkt vom Client konsumiert werden
Für Erweiterbarkeit: Standard-Capability-Schema, profilgesteuerte Steuerung und Ressourcenmodell können weiterentwickelt werden
Related MCP server: Xiaomi smart home MCP server
Derzeitige Funktionen
Dienste und Anmeldung
get_service_statusprepare_loginreconnect_serviceclear_saved_loginrefresh_devicesget_tool_catalogping
Zuhause und Geräte
get_home_overviewlist_homeslist_devicesget_deviceget_device_statusget_device_capabilities
Gerätesteuerung
control_by_intentcontrol_deviceturn_on_deviceturn_off_deviceset_brightnessset_color_temperatureset_target_temperatureset_hvac_modeset_fan_speedset_cover_position
Szenen und Verbrauchsmaterialien
list_scenesexecute_sceneget_consumable_items
MCP-Ressourcen
mijia://servicemijia://homesmijia://devicesmijia://scenesmijia://capabilitiesmijia://tooling
Installation
Es wird empfohlen, Python 3.10+ zu verwenden.
poetry installWenn du Poetry nicht verwendest:
pip install -r requirements.txtStart
poetry run python mcp_server/mcp_server.pyTeste den Handshake:
poetry run python mcp_server/mcp_test.pyAnmeldung
mijiaAPI 3.x hat die Benutzerkonto-/Passwort-Anmeldung entfernt; unterstützt wird nur noch die QR-Code-Anmeldung.
Wenn zum ersten Mal eine Anmeldung erforderlich ist, geht der Dienst wie folgt vor:
Erzeugt eine Browser-Seite:
~/.miot-mcp/qr.htmlErzeugt außerdem ein QR-Code-Bild:
~/.miot-mcp/qr.pngÖffnet standardmäßig bevorzugt
qr.htmlüber den SystembrowserNur wenn der Browser nicht geöffnet werden kann, weicht er auf einen Bildbetrachter oder den QR-Code im Terminal aus
Die Anmeldeinformationen werden gespeichert unter:
~/.miot-mcp/auth_data.jsonEmpfohlener Hauptanmeldepfad
Rufe
prepare_loginaufRufe
get_service_statusaufLies
service.qr.page_pathoderservice.qr.image_pathRufe nach dem Scannen
reconnect_serviceauf oder direktrefresh_devices
Anmeldungsbezogener Status
get_service_status und mijia://service liefern beide einen strukturierten Anmeldestatus. Zu den wichtigsten Feldern gehören:
service.connectedservice.has_saved_loginservice.qr.open_modeservice.qr.page_pathservice.qr.image_pathservice.qr.login_urlassistant_summarynext_steps.should_scan_qr
Umgebungsvariablen
export MIJIA_ENABLE_QR="true"
export MIJIA_QR_OPEN_MODE="browser"
export MIJIA_LOG_LEVEL="INFO"Erläuterungen:
MIJIA_ENABLE_QR: Legt fest, ob die QR-Code-Anmeldung aktiviert ist; Standard isttrueMIJIA_QR_OPEN_MODE: Erweiterte Konfiguration; unterstütztbrowser/viewer/none; Standard istbrowserMIJIA_LOG_LEVEL: Loglevel; unterstütztDEBUG/INFO/WARNING/ERROR
Beispielkonfiguration für MCP-Clients
Es wird empfohlen, das Python aus der virtuellen Umgebung direkt zu verwenden, statt poetry run.
{
"mcpServers": {
"mijia": {
"command": "/path/to/venv/bin/python",
"args": [
"/path/to/miot-mcp/mcp_server/mcp_server.py"
],
"env": {
"MIJIA_ENABLE_QR": "true",
"MIJIA_QR_OPEN_MODE": "browser",
"MIJIA_LOG_LEVEL": "INFO"
}
}
}
}Empfohlener Aufrufpfad
Für die meisten AI-Clients wird empfohlen, folgende Reihenfolge zu bevorzugen:
Rufe
prepare_loginaufRufe
get_service_statusaufRufe
refresh_devicesaufRufe
get_home_overviewaufRufe
get_device_statusaufRufe
control_by_intentaufRufe
list_scenesaufRufe
execute_sceneauf
Wenn der Client ein stabileres und expliziteres Routing benötigt, ergänze außerdem:
Rufe
list_homesaufRufe
list_devicesaufRufe
get_deviceaufRufe
get_device_capabilitiesaufRufe
control_deviceauf
Beschreibung der gängigen Werkzeuge
prepare_login
Bereitet die QR-Code-Anmeldung aktiv vor. Standardmäßig wird eine vorhandene QR-Code-Seite bevorzugt wiederverwendet; falls du eine weitere Scan-Runde durchführen möchtest, kannst du force_reauth=true übergeben.
get_service_status
Gibt den Dienstverbindungsstatus, den Pfad der Anmeldedatei, den Protokollpfad, den QR-Code-Seitenpfad und eine Empfehlung für die nächsten Schritte zurück.
get_home_overview
Gibt eine Geräteübersicht nach Zuhause und Raum aus – geeignet, damit der Client zuerst die Zuhause-Struktur versteht.
get_device_status
Zeigt den aktuellen Status eines einzelnen Geräts, verfügbare Aktionen und empfohlene nächste Schritte.
get_device_capabilities
Liefert das Standard-Capability-Schema und profilgesteuerte Steuerungsoptionen – geeignet für Clients, die ein stabiles Routing benötigen.
control_by_intent
Steuerungseinstieg über natürliche Sprache. Geeignet für die meisten alltäglichen Szenarien, z. B. „Stelle die Helligkeit der Tischlampe im Schlafzimmer auf 30 %.“
control_device
Einheitlicher, strukturierter Steuerungseinstieg. Geeignet, wenn der Client die Zielaktion und die Parameter bereits kennt.
speaker_say
Lässt den 小爱音箱 beliebigen Text per Sprachausgabe ansagen („Durchsage“). Geeignet für Erinnerungen bei Abschluss langer Aufgaben, Wecker-Ansagen und das Vorlesen von Text durch einen bestimmten Lautsprecher.
{
"name": "speaker_say",
"arguments": {
"text": "任务完成啦,图片已生成",
"speaker_name": "城市之光音响"
}
}Warum play-text statt execute-text-directive:
Der 小爱音箱 hat zwei verwandte Aktionen:
execute-text-directive— sendet den Text als Frage/Befehl an 小爱 zur Verarbeitung → löst eine AI-Antwort aus (z. B. „Da bin ich überfragt“), ist also keine reine Ansageplay-text— gibt Text rein als Sprache aus, Parameter_in=[text]als einzelner Parameter, löst keinen AI-Dialog aus ←speaker_sayverwendet dieses
Stolperfalle: Wenn der allgemeine
run_action-Pfad die Parameter in dasvalue-Feld stopft, meldet die Cloud-API-704220025 Action参数个数不匹配. Man muss die_in-Kwargs-Schreibweise verwenden (device.run_action('play-text', _in=[text])→method['in']=[text]).
Kommandozeilen-Methode (kein MCP-Client nötig, Skript direkt aufrufen):
python speaker_say.py "任务完成啦" --speaker "城市之光音响"
python speaker_say.py "任务完成啦" --speaker "客厅音箱" --quiet # 静默(只执行不播报)Parameter:
text: der vorzulesende Text (natürliche Sprache)--speaker: Name des Lautsprechers (unscharfe Übereinstimmung; wenn nicht angegeben, wird der erste Online-Lautsprecher gewählt)--quiet: stille Ausführung (keine Sprachausgabe)
Anwendungsbeispiele
Dienststatus anzeigen
{
"name": "get_service_status",
"arguments": {}
}Anmeldung aktiv vorbereiten
{
"name": "prepare_login",
"arguments": {
"reopen_qr": true
}
}Geräte- und Raumzuordnung aktualisieren
{
"name": "refresh_devices",
"arguments": {}
}Zuhause-Übersicht anzeigen
{
"name": "get_home_overview",
"arguments": {}
}Status eines einzelnen Geräts anzeigen
{
"name": "get_device_status",
"arguments": {
"device_name": "吸顶灯",
"room": "客厅"
}
}Capability-Schema anzeigen
{
"name": "get_device_capabilities",
"arguments": {
"device_name": "台灯",
"room": "卧室"
}
}Steuerung per natürlicher Sprache
{
"name": "control_by_intent",
"arguments": {
"query": "把卧室台灯亮度调到30%"
}
}Strukturierte Steuerung
{
"name": "control_device",
"arguments": {
"operation": "set_color_temperature",
"device_name": "台灯",
"room": "卧室",
"value": 4000
}
}Szene ausführen
{
"name": "execute_scene",
"arguments": {
"scene_name": "回家模式"
}
}Aktuelle Grenzen
Die aktuelle MCP-Version konzentriert sich vor allem auf die häufigsten Pfade der Zuhause-Steuerung:
Durchsuchen von Zuhause und Räumen
Gerätelokalisierung
Allgemeine Capability-Steuerung
Bereitstellung standardisierter Capability-Schemas
Szenenausführung
Abfrage von Verbrauchsmaterialien
Die typischen Capabilities, die bereits schwerpunktmäßig abgedeckt werden, umfassen:
Ein/Aus
Helligkeit
Farbtemperatur
Zieltemperatur
Modus
Lüftergeschwindigkeit
Öffnungs-/Schließposition
Tiefere und stärker anpassbare Fähigkeiten können weiterhin in control_device erweitert werden, werden aber nicht mehr als Standardnutzung nach außen bereitgestellt.
Codestruktur
Intern besteht der Dienst hauptsächlich aus drei Ebenen:
adapter/verantwortlich für die Interaktion mitmijiaAPI, Anmeldung, Geräteerkennung und das QR-Code-Anmeldeerlebnismcp_server/core/verantwortlich für die Kapselung von Ergebnissen, Capability-Berechnung, Intent-Routing und Standardisierungmcp_server/device_definitions/undmcp_server/device_resources/verantwortlich für Standard-Capability-Definitionen, Intent-Definitionen und das produktorientierte Ressourcenmodell
Die derzeitigen Capabilities und das Routing verlassen sich nicht auf die automatische Plugin-Erkennung, sondern importieren Definitionstabellen explizit. Das ist klarer und besser für stabile Aufrufe durch AI-Clients geeignet.
DSH(DeepSeek Harness)Integrations-Plugin
Zusätzlich zum MCP-Dienst enthält dieses Repository ein Cordis-Plugin für DeepSeek Harness (dsh-plugin/dsh-task-notify), das es DSH-Agenten ermöglicht, aktiv über 小爱音箱 anzusagen + per 飞书 zu benachrichtigen (Erinnerung beim Abschluss langer Aufgaben):
Werkzeug | Funktion |
| Benachrichtigung bei Abschluss langer Aufgaben: 飞书-Privatnachricht wird immer gesendet + je nach Nicht-Stören-Status wird entschieden, ob über 小爱音箱 angesagt wird |
| Lässt den angegebenen 小爱音箱 beliebigen Text vorlesen (reine Wiedergabe, löst keinen 小爱-AI-Dialog aus) |
| Nicht-Stören-Schalter / aktuellen Lautsprecher wechseln / 飞书-Ziel ändern (über Sitzungen hinweg gespeichert) |
| Aktuellen Status abfragen |
DSH-Plugin installieren
# 1. 复制到 DSH profiles 的 node_modules
cp -r dsh-plugin/dsh-task-notify C:\Users\<you>\.dsh\profiles\node_modules\@oadank\dsh-task-notify
# 2. 注册到 ~/.dsh/profiles/web/cordis.patch.yml 的 insert 列表
- id: dsh-task-notify
name: '@oadank/dsh-task-notify'
# 3. 重启 dsh-web 生效Das Plugin verwendet speaker_say.py (aus diesem Repository) für die 小爱-Ansage. Der Standard-Lautsprecher kann mit set_notify_state(currentSpeaker, "音箱名") gewechselt werden; der Status wird in ~/.dsh/profiles/notify-state.json gespeichert und über Sitzungen hinweg beibehalten.
Weitere Details findest du unter dsh-plugin/README.md.
This server cannot be installed
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
- FlicenseNot gradedqualityDmaintenanceAn 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.
- AlicenseAqualityCmaintenancemijia-control A production-ready MCP server that enables AI agents (Claude Code, Claude Desktop, Cursor, Hermes, etc.) to directly control Xiaomi/Mijia smart home devices through natural language. What it does Turns conversations into physical actions — "turn on the desk lamp to 50%" becomes actual device control in real-time.1260MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for controlling Xiaomi/Mi Home smart devices via natural language, supporting device listing, property read/write, action calls, and camera snapshots.11
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to control Xiaomi Mi Home smart devices through natural language, with support for listing devices, controlling properties, and running scenes.MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
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/oadank/miot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server