# 技术文档摘要
<div align="center" style="display: flex; align-items: center; justify-content: center; ">
<img src="/readme/img/logo.png" alt="Aqara Logo" height="120">
<h1>Aqara MCP 服务器</h1>
</div>
<div align="center">
English | [中文](/readme/README_CN.md) | [繁體中文](/readme/README_CHT.md) | [Français](/readme/README_FR.md) | [한국어](/readme/README_KR.md) | [Español](/readme/README_ES.md) | [日本語](/readme/README_JP.md) | [Deutsch](/readme/README_DE.md) | [Italiano](/readme/README_IT.md)
[](https://github.com/aqara/aqara-mcp-server)
[](https://golang.org/dl/)
[](https://github.com/aqara/aqara-mcp-server/releases)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
</div>
**Aqara MCP 服务器** 是基于 [模型上下文协议 (MCP)](https://modelcontextprotocol.io/introduction) 构建的智能家居自动化控制服务。该平台实现了 AI 助手(如 Claude、Cursor 等)与 Aqara 智能家居生态系统之间的无缝集成。
## 目录
- [目录](#目录)
- [特性](#特性)
- [工作原理](#工作原理)
- [快速开始](#快速开始)
- [前提条件](#前提条件)
- [步骤 1:账户认证](#步骤-1账户认证)
- [步骤 2:如何使用](#步骤-2如何使用)
- [选项 A:远程 MCP 服务器(推荐)](#选项-a远程-mcp-服务器推荐)
- [选项 B:本地 MCP 服务器](#选项-b本地-mcp-服务器)
- [步骤 3:验证](#步骤-3验证)
- [API 参考](#api参考)
- [核心工具概述](#核心工具概述)
- [设备控制 API](#设备控制-api)
- [`device_control`](#device_control)
- [设备查询 API](#设备查询-api)
- [`device_query`](#device_query)
- [`device_status_query`](#device_status_query)
- [`device_log_query`](#device_log_query)
- [场景管理 API](#场景管理-api)
- [`get_scenes`](#get_scenes)
- [`run_scenes`](#run_scenes)
- [家庭管理 API](#家庭管理-api)
- [`get_homes`](#get_homes)
- [`switch_home`](#switch_home)
- [自动化配置 API](#自动化配置-api)
- [`automation_config`](#automation_config)
- [项目结构](#项目结构)
- [目录结构](#目录结构)
- [核心文件描述](#核心文件描述)
- [开发与贡献](#开发与贡献)
- [开发环境设置](#开发环境设置)
- [代码质量标准](#代码质量标准)
- [贡献指南](#贡献指南)
- [许可证](#许可证)
## 特性
- ✨ **全面的设备控制**:对 Aqara 智能设备的各种属性进行细粒度控制,包括开关、亮度、色温及模式等。
- 🔍 **灵活的设备查询**:能够按房间或设备类型查询设备列表及其详细状态。
- 🎬 **智能场景管理**:支持查询和执行用户预定义的智能家居场景。
- 📈 **设备历史记录**:查询指定时间段内设备的历史状态变更记录。
- ⏰ **自动化配置**:支持配置定时或延时的设备控制任务。
- 🏠 **多家庭支持**:支持查询并切换用户账户下的不同家庭。
- 🔌 **MCP 协议兼容性**:完全符合 MCP 规范,便于与各种 AI 助手集成。
- 🔐 **安全认证**:采用登录授权 + 基于签名的安全机制,保护用户数据和设备安全。
- 🌐 **跨平台**:用 Go 开发,可编译成适用于多个平台的可执行文件。
- 🔧 **易于扩展**:模块化设计允许方便地添加新工具和功能。
## 工作原理
Aqara MCP 服务器作为 AI 助手和 Aqara 智能家居平台之间的桥梁:
```mermaid
graph LR
A[AI 助手 - MCP 主机] --> B[MCP 客户端]
B --> C[Aqara MCP 服务器]
C --> D[Aqara 云 API]
D --> E[AIOT 设备]
device_control)。无论部署模式如何,首先需要获取 Aqara 认证凭证:
完成登录过程:
api_key 和 base_url。安全存储凭证:
⚠️ 请妥善保管您的
api_key信息,不要泄露给他人。

选择适合您需求的部署方式:
适用对象:希望快速启动而无需本地环境设置的用户。
优点:
配置 MCP 客户端:
打开设置:

添加服务器配置:
{
"mcpServers": {
"aqara": {
"type": "http",
"url": "https://[mcp-server-domain]/echo/mcp", // base_url
"headers": {
"Authorization": "Bearer [YOUR_API_KEY_HERE]" // api_key
}
}
}
}
重启应用程序:
适用对象:需要数据主权、自定义配置或离线使用的用户。
优点:
安装步骤:
下载程序(选择一种):
推荐:下载预编译版本
访问 GitHub 发布 下载适用于您操作系统的最新版本。
或者:从源码构建
git clone https://github.com/aqara/aqara-mcp-server.git
cd aqara-mcp-server
go mod tidy
go build -ldflags="-s -w" -o aqara-mcp-server
设置环境变量:
export aqara_api_key="your_api_key_here"
export aqara_base_url="your_base_url_here"
配置 MCP 客户端(例如,Claude for Desktop):
打开设置:

编辑配置文件:

添加服务器配置(claude_desktop_config.json):
{
"mcpServers": {
"aqara": {
"command": "/path/to/aqara-mcp-server",
"args": ["run", "stdio"],
"env": {
"aqara_api_key": "your_api_key_here",
"aqara_base_url": "your_base_url_here"
}
}
}
}
重启应用程序:
使用以下测试命令来验证配置是否成功:
用户: "显示我家中的所有设备"
助手: [通过 MCP 查询设备列表]
用户: "打开客厅灯"
助手: [通过 MCP 执行设备控制]
用户: "运行傍晚场景"
助手: [通过 MCP 执行场景]
如果看到类似“🔧 已连接到 Aqara MCP 服务器”的消息,则配置成功!
| 工具类别 | 工具 | 描述 |
|---|---|---|
| 设备控制 | device_control | 直接设备操作 |
| 设备查询 | device_query, device_status_query, device_log_query | 综合设备信息 |
| 场景管理 | get_scenes, run_scenes | 自动化场景控制 |
| 家庭管理 | get_homes, switch_home | 多家庭环境支持 |
| 自动化 | automation_config | 定时任务配置 |
device_control控制智能家居设备的状态或属性(例如,开关、温度、亮度、颜色、色温)。
参数:
endpoint_ids (整数数组,必需): 需要控制的设备 ID 列表。control_params (对象,必需): 包含具体动作的控制参数对象:
action (字符串,必需): 要执行的动作(例如,"on","off","set","up","down","cooler","warmer")。attribute (字符串,必需): 要控制的设备属性(例如,"on_off","brightness","color_temperature","ac_mode")。value (字符串或数字,可选): 目标值(当 action 为 "set" 时必需)。unit (字符串,可选): 值的单位(例如,"%","K","℃")。返回值: 表明设备控制操作结果的消息。
device_query根据指定的位置(房间)和设备类型检索设备的综合列表,支持过滤(不包含实时状态信息)。
参数:
positions (字符串数组,可选): 房间名称列表。空数组查询所有房间。device_types (字符串数组,可选): 设备类型列表(例如,"Light","WindowCovering","AirConditioner","Button")。空数组查询所有类型。返回值: 以 Markdown 格式列出的设备,包括设备名称和 ID。
device_status_query获取设备的当前状态信息(用于查询实时状态,如颜色、亮度、开关状态)。
参数:
positions (字符串数组,可选): 房间名称列表。空数组查询所有房间。device_types (字符串数组,可选): 设备类型列表。与 device_query 选项相同。空数组查询所有类型。返回值: 以 Markdown 格式列出的设备状态信息。
device_log_query查询设备的历史日志信息。
参数:
endpoint_ids (整数数组,必需): 需要查询历史的日志设备 ID 列表。start_datetime (字符串,可选): 查询起始时间,格式为 YYYY-MM-DD HH:MM:SS(例如,"2023-05-16 12:00:00")。end_datetime (字符串,可选): 查询结束时间,格式为 YYYY-MM-DD HH:MM:SS。attributes (字符串数组,可选): 需要查询的日志设备属性名称列表(例如,["on_off", "brightness"])。如果没有提供,查询所有已记录的属性。返回值: 以 Markdown 格式列出的历史设备状态信息。
get_scenes查询用户家中的所有场景或指定房间的场景。
参数:
positions (字符串数组,可选): 房间名称列表。空数组查询整个家的场景。返回值: 以 Markdown 格式列出的场景信息。
run_scenes通过场景 ID 执行指定场景。
参数:
scenes (整数数组,必需): 需要执行的场景 ID 列表。返回值: 表明场景执行结果的消息。
get_homes获取用户账户下所有家庭的列表。
参数: 无
返回值: 逗号分隔的家庭名称列表。如果没有数据,返回空字符串或相应的消息。
switch_home切换用户当前激活的家庭。切换后,后续的设备查询、控制等都将针对新切换的家庭。
参数:
home_name (字符串,必需): 目标家庭的名称。返回值: 表明切换操作结果的消息。
automation_config配置自动化(目前仅支持定时或延迟的设备控制任务)。
参数:
scheduled_time (字符串,必需): 定时执行时间,标准 Crontab 格式 "min hour day month week"。例如,"30 14 * * *"(每天 14:30 执行),"0 9 * * 1"(每周一 9:00 执行)。endpoint_ids (整数数组,必需): 需要在指定时间控制的设备 ID 列表。control_params (对象,必需): 设备控制参数,与 device_control 工具的格式相同(包括动作、属性、值等)。task_name (字符串,必需): 该自动化任务的名称或描述(用于识别和管理)。execution_once (布尔值,可选): 是否仅执行一次。
true: 在指定时间仅执行一次任务(默认)。false: 定期执行任务(例如,每日、每周)。返回值: 表明自动化配置结果的消息。
.
├── cmd.go # 基于 Cobra 框架的 CLI 命令定义和程序入口点(包含主函数)
├── server.go # 核心 MCP 服务器逻辑,工具定义及请求处理
├── smh.go # Aqara 智能家居平台 API 接口封装层
├── middleware.go # 中间件:用户认证、超时控制、异常恢复
├── config.go # 全局配置管理和环境变量处理
├── go.mod # Go 模块依赖管理文件
├── go.sum # Go 模块依赖校验和文件
├── readme/ # README 文档和图像资源
│ ├── img/ # 图像资源目录
│ └── *.md # 多语言 README 文件
├── LICENSE # MIT 开源许可
└── README.md # 主项目文档
cmd.go: 基于 Cobra 框架实现的 CLI,定义了 run stdio 和 run http 启动模式以及主入口函数。server.go: 核心 MCP 服务器实现,负责工具注册