list_devicesLABSCO SUMMARY
Location and group make several sensors behave like one question.
Tagging each device with a location and a group means "how is the air in the living room" resolves across every sensor in that room, and a chart gets one series per device automatically — the part that usually takes a script. Note the two write tools at the end of the list: restart_device costs about 30 seconds of downtime and shutdown_device needs a manual restart, so they are worth being deliberate about.
What it is
A Python server for air-Q air quality devices, built on aioairq, the official async library. It talks to the devices on your local network rather than to a cloud service, and covers both reading — live values, history off the device's SD card, charts, exports — and configuration, including LED themes, brightness, night mode and network settings. The same executable also works as a plain CLI when you pass a tool name as a subcommand.
What you get
- Reading:
list_devices,get_air_quality,get_air_quality_historyas column-oriented JSON,get_device_info,get_config,get_logs - Charts and exports:
plot_air_quality_historyrenders one chart per sensor aspng,webp,svgor interactivehtml;export_air_quality_historywrites onecsvorxlsxper request - Multi-device queries:
get_air_qualityaccepts exactly one ofdevice,locationorgroup, so "the living room" or "home" fans out across matching devices and charts get one series each - Configuration:
set_device_name,set_led_theme,set_night_mode,set_brightness,configure_networkfor static IP or DHCP - LED state:
get_led_theme,get_possible_led_themes,get_night_mode,get_brightness_config, andidentify_deviceto make one blink - Control:
restart_deviceandshutdown_device - History defaults you can override: 1 hour for raw history, 24 for plots, downsampled to at most 300 points, timestamps in UTC unless you name a timezone
Requirements
One or more air-Q devices reachable on your network, and a JSON file listing them — address, password, and optionally name, location and group. Point the server at it with AIRQ_CONFIG_FILE, or pass the list inline through AIRQ_DEVICES. The file holds device passwords, so chmod 600 it. Install from PyPI as mcp-airq, version 1.6.5, or run it with uvx mcp-airq; transport is stdio. If your client cannot find uvx, give it the absolute path — MCP subprocesses do not inherit your shell's PATH.
Setup effort
One command — pip install mcp-airq
USE CASES
Asking whether a room needs airing
Query by location and get every sensor in that room, not just the one you named.
Showing a CO₂ trend to someone
Render the last day as a chart in the format you want, with one line per device.
Getting the data into a spreadsheet
Export one sensor's history across matching devices as CSV or XLSX for a chosen window.
Making the device stop glowing at night
Set a night-mode schedule and brightness by describing it, rather than working through the device UI.
20 tools
Listed in project docs. Your client may show a different list.
get_air_qualityget_air_quality_historyplot_air_quality_historyexport_air_quality_historyget_device_infoget_configget_logsidentify_deviceget_led_themeget_possible_led_themesget_night_modeget_brightness_configset_device_nameset_led_themeset_night_modeset_brightnessconfigure_networkrestart_deviceshutdown_deviceBEFORE YOU INSTALL
What to know first
Tools you get
20 tools named in the project's documentation.
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install mcp-airqMCP Clients
Claude Code
claude mcp add airq -e AIRQ_CONFIG_FILE=~/.config/airq-devices.json -- uvx mcp-airqCodex
codex mcp add airq --env AIRQ_CONFIG_FILE=~/.config/airq-devices.json -- uvx mcp-airq