基于 MijiaAPI 的米家设备智能控制代理,提供标准化的 MCP 服务,支持动态设备发现、属性读写和动作调用
SaferSkills independently audited miot-mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
中文文档 | English
一个基于 mijiaAPI 3.x 的产品化米家 MCP 服务。它不再要求客户端先理解 did、siid/piid/aiid 这些协议细节,而是优先面向“家庭、房间、设备名、场景名”提供更自然的查询和控制能力。
get_service_statusprepare_loginreconnect_serviceclear_saved_loginrefresh_devicesget_tool_catalogpingget_home_overviewlist_homeslist_devicesget_deviceget_device_statusget_device_capabilitiescontrol_by_intentcontrol_deviceturn_on_deviceturn_off_deviceset_brightnessset_color_temperatureset_target_temperatureset_hvac_modeset_fan_speedset_cover_positionlist_scenesexecute_sceneget_consumable_itemsmijia://servicemijia://homesmijia://devicesmijia://scenesmijia://capabilitiesmijia://tooling建议使用 Python 3.10+。
poetry install如果你不用 Poetry:
pip install -r requirements.txtpoetry run python mcp_server/mcp_server.py测试握手:
poetry run python mcp_server/mcp_test.pymijiaAPI 3.x 已移除账号密码登录,只支持二维码登录。
首次需要登录时,服务会:
~/.miot-mcp/qr.html~/.miot-mcp/qr.pngqr.html认证信息会保存到:
~/.miot-mcp/auth_data.jsonprepare_loginget_service_statusservice.qr.page_path 或 service.qr.image_pathreconnect_service 或直接 refresh_devicesget_service_status 和 mijia://service 都会返回结构化登录状态,重点字段包括:
service.connectedservice.has_saved_loginservice.qr.open_modeservice.qr.page_pathservice.qr.image_pathservice.qr.login_urlassistant_summarynext_steps.should_scan_qrexport MIJIA_ENABLE_QR="true"
export MIJIA_QR_OPEN_MODE="browser"
export MIJIA_LOG_LEVEL="INFO"说明:
MIJIA_ENABLE_QR:是否启用二维码登录,默认 trueMIJIA_QR_OPEN_MODE:高级配置,支持 browser / viewer / none,默认 browserMIJIA_LOG_LEVEL:日志级别,支持 DEBUG / INFO / WARNING / ERROR推荐直接使用虚拟环境里的 Python,而不是 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"
}
}
}
}对于大多数 AI 客户端,建议优先这样使用:
prepare_loginget_service_statusrefresh_devicesget_home_overviewget_device_statuscontrol_by_intentlist_scenesexecute_scene如果客户端需要更稳定、更显式的路由,再补充:
list_homeslist_devicesget_deviceget_device_capabilitiescontrol_deviceprepare_login主动准备二维码登录。默认优先复用已有二维码页;如果需要重新走一轮扫码,可以传 force_reauth=true。
get_service_status返回服务连接状态、认证文件路径、日志路径、二维码页路径、下一步建议。
get_home_overview按家庭和房间输出设备总览,适合客户端先理解家庭结构。
get_device_status查看单个设备当前状态、可用操作和推荐下一步。
get_device_capabilities返回标准能力 schema 和 profile 驱动控制项,适合需要稳定路由的客户端。
control_by_intent自然语言式控制入口。适合大多数日常使用场景,例如“把卧室台灯亮度调到 30%”。
control_device统一结构化控制入口。适合客户端已经知道目标操作和参数时使用。
{
"name": "get_service_status",
"arguments": {}
}{
"name": "prepare_login",
"arguments": {
"reopen_qr": true
}
}{
"name": "refresh_devices",
"arguments": {}
}{
"name": "get_home_overview",
"arguments": {}
}{
"name": "get_device_status",
"arguments": {
"device_name": "吸顶灯",
"room": "客厅"
}
}{
"name": "get_device_capabilities",
"arguments": {
"device_name": "台灯",
"room": "卧室"
}
}{
"name": "control_by_intent",
"arguments": {
"query": "把卧室台灯亮度调到30%"
}
}{
"name": "control_device",
"arguments": {
"operation": "set_color_temperature",
"device_name": "台灯",
"room": "卧室",
"value": 4000
}
}{
"name": "execute_scene",
"arguments": {
"scene_name": "回家模式"
}
}这版 MCP 重点覆盖的是最常见的家庭控制路径:
已重点覆盖的典型能力包括:
更底层、更强定制的能力仍然可以继续往 control_device 扩展,但不再作为默认使用方式对外暴露。
当前服务内部主要有三层:
adapter/负责与 mijiaAPI 交互、登录、设备发现和二维码登录体验
mcp_server/core/负责结果封装、能力计算、意图路由、标准化
mcp_server/device_definitions/ 与 mcp_server/device_resources/负责标准能力定义、意图定义和产品化资源模型
当前能力和路由不依赖插件自动发现,而是显式导入定义表。这样更清晰,也更适合 AI 客户端稳定调用。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.