Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Aqara

FreeNot checked

Aqara's official MCP Server

GitHubEmbed

About

Aqara's official MCP Server

README

Aqara Logo

Aqara MCP Server

Aqara MCP Server is a remote MCP service provided by Aqara Agent. It lets MCP-enabled AI applications securely connect to Aqara smart home capabilities. When you need MCP integration, configure the remote MCP URL provided by Aqara Agent.

[!TIP] Recommended: Official Aqara Agent Skills

If your application supports Agent Skills (such as Codex App, Cursor, or OpenClaw), we recommend using the official Aqara Agent Skills first. You can query and control homes/spaces, devices, scenes, automations, energy consumption, and more in natural language—without configuring an MCP server.

Table of Contents

Overview

The recommended MCP integration today centers on Aqara Agent:

  • Remote MCP: For applications that support Streamable HTTP via https://agent.aqara.com/open/mcp.
  • Aqara Agent Skills: For applications with Agent Skills—install skills without manually configuring an MCP server.
  • MCP Tool capabilities: Cover smart home operations across homes/spaces, devices, scenes, automations, energy consumption, lighting effects, and firmware.

Features

  • 🔍 Flexible device queries: Query device basics, real-time status, and control logs by home/space, device type, or device ID.
  • Comprehensive device control: Control power, brightness, color temperature, temperature, fan speed, mode, curtain percentage, and more on Aqara devices.
  • 🎬 Smart scene management: Query and run scenes, and review scene execution history.
  • Automation queries: Query automation rules and their execution history.
  • 📈 Energy statistics: Query electricity usage and cost by room/space or device, with aggregated and detailed views.
  • 💡 Lighting effect management: Query lighting scenarios/effects, apply specified effects, and query effect configuration parameters.
  • 🔄 Firmware management: Query current and available firmware versions, and start device firmware upgrades.
  • 🏠 Multiple homes and spaces: List homes on your Aqara account and rooms/spaces in the current home.
  • 🔌 Remote MCP integration: Connect via an MCP URL for apps such as Cursor and Codex App.
  • 🔐 Secure authentication: Obtain aqara_api_key after signing in to Aqara Agent—keep credentials safe when configuring.

How It Works

In remote MCP mode, the application connects over HTTP to Aqara Agent’s MCP service and includes the bearer token generated on the login page. Aqara Agent validates credentials, executes tool calls, and returns results to the application:

graph LR
    A[AI App / MCP host] --> B[Aqara Agent]
    B --> C[Aqara Cloud API]
    C --> D[Aqara Devices / Scenes / Automations]
  1. AI App / MCP host: The user sends natural-language instructions from Cursor, Codex App, and similar apps.
  2. Aqara Agent: Validates user credentials, interprets, and runs the corresponding Tools.
  3. Aqara Cloud API: Performs data queries or control actions for devices, scenes, automations, energy consumption, lighting effects, firmware, and more.

Quick Start

Prerequisites

  • An Aqara account with registered smart devices.
  • An application that supports remote MCP, such as Cursor or Codex App.
  • Aqara Agent credentials: aqara_api_key and aqara_mcp_url from the login page.

Step 1: Account Authentication

  1. Open the login page: https://agent.aqara.com/login

  2. Complete sign-in:

    • Sign in with your Aqara account.
    • After sign-in, copy the aqara_api_key shown on the page.
    • For MCP configuration, use the aqara_mcp_url on the page—typically https://agent.aqara.com/open/mcp.
  3. Store credentials securely:

    Keep your aqara_api_key safe. Do not commit it to a repository, publish it in screenshots, or share it with others.

    Configuration information after Aqara Agent sign-in

Step 2: Configure Remote MCP

Cursor

  1. Open Cursor Settings, go to Tools & MCPs, and click New MCP Server.

    Cursor MCP settings entry

  2. Add the remote MCP configuration. Use the aqara_mcp_url from the login page; if entering manually, use the /open/mcp path.

    {
      "mcpServers": {
        "aqara": {
          "type": "http",
          "url": "https://agent.aqara.com/open/mcp",
          "headers": {
            "Authorization": "Bearer <YOUR_AQARA_API_KEY>"
          }
        }
      }
    }
    
  3. Save the configuration and restart Cursor for MCP settings to take effect.

Codex App

  1. Save the aqara_api_key from the login page as an environment variable. For macOS with zsh, add the following to ~/.zshrc:

    export AQARA_API_KEY="<YOUR_AQARA_API_KEY>"
    
  2. Restart Codex App, then connect to a custom MCP in Settings.

  3. Select Streamable HTTP.

  4. Enter the aqara_mcp_url from the login page, e.g. https://agent.aqara.com/open/mcp.

  5. In Bearer token env var, enter the environment variable name AQARA_API_KEY, not the API key itself. Codex App reads the token from this variable.

Codex App custom MCP settings

Step 3: Verification

After configuration succeeds, you can test with natural-language requests such as:

User: Show all devices in my home
Assistant: Query the device list via MCP

User: Turn on the living room light
Assistant: Run device control via MCP

User: Run the movie night scene
Assistant: Run the scene via MCP

If the app’s MCP panel shows Aqara as connected and Aqara Tools are visible, the configuration is active.


Configuration Notes

  • Use https://agent.aqara.com/open/mcp or the aqara_mcp_url from the login page as the MCP URL—do not use the login page URL as the MCP URL.
  • Tools for device control, scene execution, and firmware upgrades affect real home devices. On first use, run query Tools first to confirm home, space, device, and scene information.
  • If connection fails, check: MCP type is Streamable HTTP, URL includes /open/mcp, credentials are not expired, and the app was restarted or MCP reloaded after configuration changes.

MCP Tool Reference

The Tool list below is based on function definitions registered on the current Aqara Agent service. Applications may display different Tool names in the UI, but parameter semantics and capability scope stay the same.

Core Tools Overview

Tool Category Tool Description
Home and Positions all_homes_inquiry, position_base_inquiry Query home and room/space information
Device Query and Control device_base_inquiry, device_status_inquiry, device_status_control, fuzzy_device_batch_control, device_log_inquiry Query device basics and real-time status, control devices, and view control logs
Scenes scene_base_inquiry, scene_run, scene_execution_history_inquiry Query and run scenes, and query scene execution history
Automations automation_base_inquiry, automation_execution_history_inquiry Query automation rules and execution history
Energy Consumption energy_consumption_inquiry_for_position, energy_consumption_inquiry_for_device Query electricity usage/cost by room/space or device
Lighting Effects lighting_effect_inquiry, device_lighting_effect_inquiry, lighting_effect_control, lighting_effect_config_params_inquiry Query and apply lighting effects, and query effect configuration parameters
Firmware device_firmware_inquiry, device_firmware_upgrade Query and upgrade device firmware

Home and Positions

all_homes_inquiry

Query all homes under the current Aqara account.

Parameters: none

Returns: A list of homes with home name, home ID, and related fields.

position_base_inquiry

Query basic information for all rooms/spaces in the current home.

Parameters: none

Returns: A list of rooms/spaces with position name, position ID, and related fields.

Device Query and Control

device_base_inquiry

Query device basic information by room/space and device type, without real-time status.

Parameters:

  • position_ids (Array<String>, optional): List of room/space IDs. When empty, no position filter is applied.
  • device_types (Array<String>, optional): Device types, e.g. Light, Switch, Outlet, AirConditioner, WindowCovering, Camera. When empty, no device type filter is applied.

Returns: A list of device basics including device name, device ID, position, and device type.

device_status_inquiry

Query real-time device status such as power, brightness, color temperature, temperature, fan speed, and mode.

Parameters:

  • device_ids (Array<String>, optional): Device IDs. When provided, query prioritizes device ID.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_types (Array<String>, optional): Device types.

Returns: A list of device states with current readable values.

device_status_control

Control state or attributes of specified devices, such as power, brightness, color temperature, temperature, fan speed, mode, and curtain percentage.

Parameters:

  • device_ids (Array<String>, required): Target device IDs.
  • attribute (String, required): Attribute to control, e.g. on_off, brightness, color_temperature, temperature, percentage, mode.
  • action (String, required): Control action, e.g. on, off, set, up, down, warmer, cooler, start, stop.
  • value (String, optional): Target value, e.g. 50, max, min, cool, heat, red.

Returns: Device control execution result.

fuzzy_device_batch_control

Batch-control devices by room/space and device type—for example, “turn off all lights,” “turn off everything in the living room,” or “set all AC units to 26°.”

Parameters:

  • position_ids (Array<String>, optional): Room/space IDs. When empty, may mean the entire home.
  • device_types (Array<String>, optional): Device types.
  • attribute (String, required): Attribute to control.
  • action (String, required): Control action.
  • value (String, optional): Target value.

Returns: Batch control execution result.

device_log_inquiry

Query device control logs within a time range, including control time, content, and result.

Parameters:

  • time_range (Array<String>, optional): Time interval, e.g. ["2026-01-01 00:00:00", "2026-01-01 23:59:59"].
  • device_ids (Array<String>, optional): Device IDs. When provided, query prioritizes device ID.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_types (Array<String>, optional): Device types.

Returns: Control log list and the actual queried time range.

Scenes

scene_base_inquiry

Query scene basic information, filterable by scene ID, position ID, or device ID.

Parameters:

  • scene_ids (Array<String>, optional): Scene IDs. When provided, query prioritizes scene ID.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_ids (Array<String>, optional): Device IDs for device-related scenes.

Returns: A list of scene basic information.

scene_run

Run one or more specified scenes.

Parameters:

  • scene_ids (Array<String>, required): Scene IDs to run.

Returns: Scene execution result.

scene_execution_history_inquiry

Query scene execution history within a time range.

Parameters:

  • time_range (Array<String>, optional): Time interval.
  • scene_ids (Array<String>, optional): Scene IDs.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_ids (Array<String>, optional): Device IDs.

Returns: Scene execution history and the actual queried time range.

Automations

automation_base_inquiry

Query automation rule basics, filterable by automation ID, position ID, or device ID.

Parameters:

  • automation_ids (Array<String>, optional): Automation IDs. When provided, query prioritizes automation ID.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_ids (Array<String>, optional): Device IDs for device-related automations.

Returns: A list of automation rules.

automation_execution_history_inquiry

Query automation execution history within a time range.

Parameters:

  • time_range (Array<String>, optional): Time interval.
  • automation_ids (Array<String>, optional): Automation IDs.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_ids (Array<String>, optional): Device IDs.

Returns: Automation execution history and the actual queried time range.

Energy Consumption

energy_consumption_inquiry_for_position

Query electricity usage or cost by home/room/space, with aggregated and detailed views.

Parameters:

  • data_type (String, required): Query type—1 for electricity usage, 2 for electricity cost, 3 for both.
  • time_range (Array<String>, required): Time interval.
  • time_gradient (String, optional): Granularity: 30min, 1hour, 1day, 1week, 1month.
  • data_aggregation_mode (String, optional): total = aggregated summary, detail = detail view.
  • positions (Array<String>, optional): Room/space IDs. When empty, queries all valid rooms.

Returns: Electricity usage/cost statistics by room/space.

energy_consumption_inquiry_for_device

Query electricity usage or cost by device, filterable by position or device, with aggregated and detailed views.

Parameters:

  • data_type (String, required): 1 = electricity usage, 2 = electricity cost, 3 = both.
  • time_range (Array<String>, required): Time interval.
  • time_gradient (String, optional): 30min, 1hour, 1day, 1week, 1month.
  • data_aggregation_mode (String, optional): total = aggregated summary, detail = detail view.
  • positions (Array<String>, optional): Room/space IDs.
  • device_ids (Array<String>, optional): Device IDs. When provided, query prioritizes device.

Returns: Electricity usage/cost statistics by device.

Lighting Effects

lighting_effect_inquiry

Query available lighting scenarios/effects in the home.

Parameters: none

Returns: A list of effects with names and applicable scope for control.

device_lighting_effect_inquiry

Query supported lighting effect names per device.

Parameters:

  • device_ids (Array<String>, required): Device IDs to query for effects.

Returns: Device-to-effect name mapping list.

lighting_effect_control

Apply the specified lighting effect to target devices or rooms/spaces.

Parameters:

  • effect_name (String, required): Effect name.
  • device_ids (Array<String>, optional): Target device IDs. When provided, control prioritizes device.
  • position_ids (Array<String>, optional): Room/space IDs.

Returns: Lighting effect control execution result.

lighting_effect_config_params_inquiry

Query parameters required to configure lighting effects on light devices.

Parameters:

  • device_ids (Array<String>, required): Target light device IDs.

Returns: Effect configuration parameters, including configurable items, value ranges, and saved user effects.

Firmware

device_firmware_inquiry

Batch-query current firmware version and available upgrade version for devices.

Parameters:

  • device_ids (Array<String>, optional): Device IDs. When provided, query prioritizes device.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_types (Array<String>, optional): Device types.

Returns: Firmware information including device name, online status, current version, and available version.

device_firmware_upgrade

Start firmware upgrades for eligible devices after filtering by device, position, or type.

Parameters:

  • device_ids (Array<String>, optional): Device IDs. When provided, upgrades those devices first.
  • position_ids (Array<String>, optional): Room/space IDs.
  • device_types (Array<String>, optional): Device types.

Returns: Firmware upgrade submission result.

Parameter Conventions

  • position_ids / positions: Room/space ID lists; when omitted, query or control scope follows each Tool’s description.
  • device_ids: Device ID or device endpoint ID lists, resolved via client-side identification and server mapping.
  • device_types: Device types, e.g. Light, Switch, Outlet, AirConditioner, WindowCovering, Camera, TemperatureSensor.
  • attribute: Control attributes, e.g. on_off, brightness, color_temperature, temperature, wind_speed, mode, percentage, volume, color.
  • action: Control actions, e.g. on, off, set, up, down, warmer, cooler, start, stop, pause, resume.
  • value: Target values, e.g. 50, 100, max, min, red, cool, heat, lighting effect names.
  • time_range: Time interval array, usually ["YYYY-MM-DD HH:MM:SS", "YYYY-MM-DD HH:MM:SS"].
  • data_type: Energy query type—1 = electricity usage, 2 = electricity cost, 3 = both.
  • time_gradient: Energy statistics granularity: 30min, 1hour, 1day, 1week, 1month.
  • data_aggregation_mode: Energy aggregation mode—total = aggregated summary, detail = detail view.

License

This project is licensed under the MIT License. See the LICENSE file for details.


Copyright © 2025 Aqara-Agent. All rights reserved.

from github.com/aqara/aqara-mcp-server

Installing Aqara

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/aqara/aqara-mcp-server

FAQ

Is Aqara MCP free?

Yes, Aqara MCP is free — one-click install via Unyly at no cost.

Does Aqara need an API key?

No, Aqara runs without API keys or environment variables.

Is Aqara hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Aqara in Claude Desktop, Claude Code or Cursor?

Open Aqara on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Aqara with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs