mcpField
A
air-Q Cloud

air-Q Cloud

Local
github.com/CorantGmbHHealth0Updated 12w ago

About air-Q Cloud

air-Q Cloud is an MCP server and CLI that retrieves sensor data through the air-Q Cloud REST API, for users who need remote access to cloud-connected devices. Its tools are read-only and include historical charts and exports.

Key features

  1. 01List configured cloud devices
  2. 02Read current air quality
  3. 03Query historical sensor data
  4. 04Create historical charts
  5. 05Export CSV or XLSX

Use cases

  1. 01Check device readings remotely
  2. 02Aggregate readings by location or group
  3. 03Chart sensor trends over time
  4. 04Export data for further analysis

MCP support

Exposes read-only tools for the air-Q Cloud API to MCP clients, covering device lists, air quality and history queries, charts, and exports.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"corantgmbh-mcp-airq-cloud": {
"command": "uvx",
"args": [
"mcp-airq-cloud"
],
"env": {
"AIRQ_CLOUD_CONFIG_FILE": "<AIRQ_CLOUD_CONFIG_FILE>",
"AIRQ_CLOUD_DEVICES": "<AIRQ_CLOUD_DEVICES>",
"AIRQ_CLOUD_API_KEY": "<AIRQ_CLOUD_API_KEY>"
}
}
}
}
Run commanduvx mcp-airq-cloud
Environment variables to set
AIRQ_CLOUD_CONFIG_FILEPath to the air-Q Cloud device configuration JSON file
AIRQ_CLOUD_DEVICESSecretInline JSON array with configured air-Q Cloud devices
AIRQ_CLOUD_API_KEYSecretGlobal fallback API key (used when per-device api_key is omitted)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypimcp-airq-cloud1.4.6

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

mcp-airq-cloud

MCP PyPI Total Downloads Python License Tests Coverage

MCP server for the air-Q Cloud API — access air quality data from anywhere.

Unlike mcp-airq (which communicates directly with devices on the local network), this server uses the air-Q Cloud REST API to retrieve sensor data remotely.

The same mcp-airq-cloud executable also works as a direct CLI when you pass a tool name as a subcommand.

Tools

ToolDescription
list_devicesList configured air-Q Cloud devices
get_air_qualityGet latest sensor readings (supports device/location/group selection)
get_air_quality_historyGet historical data within a time range as column-oriented JSON
plot_air_quality_historyRender one historical chart per sensor across all matching devices
export_air_quality_historyExport one historical sensor as one csv or xlsx across matching devices

All tools are read-only — the Cloud API does not support device configuration or control.

Installation

pip install mcp-airq-cloud

Or install from source:

git clone https://github.com/CorantGmbH/mcp-airq-cloud.git
cd mcp-airq-cloud
uv sync --frozen --extra dev

CLI Usage

Use the same command directly from the shell:

mcp-airq-cloud list-devices
mcp-airq-cloud get-air-quality --device "Living Room"
mcp-airq-cloud get-air-quality-history --device "Living Room" --last-hours 24 --sensors co2 pm2_5
mcp-airq-cloud plot-air-quality-history --sensor co2 --output-format png --output co2.png
mcp-airq-cloud export-air-quality-history --sensor co2 --output-format xlsx --output co2.xlsx

For historical plots and exports:

  • omit device, location, and group to combine all configured devices into one artifact
  • use location or group to combine only the matching devices
  • plot_air_quality_history returns one file per requested sensor, with one series per matching device
  • export_air_quality_history returns one CSV/XLSX file per request, with rows for all matching devices

The CLI subcommands mirror the MCP tool names. Both styles work:

mcp-airq-cloud list-devices
mcp-airq-cloud list_devices

To force MCP server mode from an interactive terminal, run:

mcp-airq-cloud serve

The CLI is pipe-friendly: successful command output goes to stdout, while tool errors go to stderr with exit code 1. Plot commands can also stream directly to stdout.

mcp-airq-cloud get-air-quality --device "Living Room" | jq '.co2'
mcp-airq-cloud get-air-quality-history --device "Living Room" --compact-json | jq '.columns.co2'
mcp-airq-cloud get-air-quality-history --device "Living Room" --yaml | yq '.columns.co2'
mcp-airq-cloud plot-air-quality-history --sensor co2 --device "Living Room" --output - > co2.png
mcp-airq-cloud export-air-quality-history --sensor co2 --device "Living Room" --output - > co2.xlsx

Historical Data

Three tools provide access to historical sensor data via the air-Q Cloud API:

Plotting charts

plot_air_quality_history renders a chart for one sensor. When multiple devices match, each device becomes a separate series in the same chart.

CO₂ area chart — single device

Single device (24 h, area chart, PNG)

CO₂ area chart — multiple devices

Multiple devices at one location (24 h, area chart, PNG)

# Single device, last 24 hours (default), PNG output (default)
mcp-airq-cloud plot-air-quality-history --sensor co2 --device "Living Room"

# All devices at a location, custom time range, SVG output
mcp-airq-cloud plot-air-quality-history --sensor co2 --location "Living Room" \
  --from-datetime "2026-03-16T00:00:00" --to-datetime "2026-03-17T00:00:00" \
  --output-format svg --output co2.svg

# All configured devices, dark mode, line chart
mcp-airq-cloud plot-air-quality-history --sensor co2 --dark --chart-type line

# Save to file
mcp-airq-cloud plot-air-quality-history --sensor co2 --output co2_chart.png

Output formats: png (default), webp, svg, html (interactive Plotly chart with hover tooltips and zoom)

Customization: --title, --x-axis-title, --y-axis-title, --chart-type (line/area), --dark, --timezone-name

Exporting data

export_air_quality_history produces one CSV or Excel file containing all matching devices.

# CSV export (default)
mcp-airq-cloud export-air-quality-history --sensor co2 --device "Living Room" --last-hours 48

# Excel export for all devices at a location
mcp-airq-cloud export-air-quality-history --sensor co2 --location "Home" \
  --output-format xlsx --output co2.xlsx
Common parameters
ParameterDefaultDescription
--last-hours1 (history) / 24 (plot)Hours of data to retrieve
--from-datetime / --to-datetime—ISO 8601 time range (overrides --last-hours)
--max-points300Downsample to at most N evenly spaced points
--timezone-nameUTCIANA timezone for timestamps (e.g. Europe/Berlin)

Configuration

You need a Cloud API key and the 32-character device ID for each device. Both can be obtained at my.air-q.com.

Option 1: Environment variable (inline JSON)
export AIRQ_CLOUD_DEVICES='[{"id": "de45d2ed777780c96c0deae7a220b745", "api_key": "your-api-key", "name": "Living Room"}]'
Option 2: Default config file (recommended)

Place a JSON file at ~/.config/airq-cloud-devices.json — no environment variable needed:

[
  {"id": "de45d2ed777780c96c0deae7a220b745", "api_key": "your-api-key", "name": "Living Room"}
]
Option 3: Custom config file path
export AIRQ_CLOUD_CONFIG_FILE=/path/to/devices.json
Option 4: Global API key

If all devices share the same API key, set it once:

export AIRQ_CLOUD_API_KEY="your-api-key"
export AIRQ_CLOUD_DEVICES='[{"id": "de45d2ed777780c96c0deae7a220b745", "name": "Living Room"}]'
Device config fields
FieldRequiredDescription
idyes32-character cloud device ID
api_keynoPer-device API key (falls back to AIRQ_CLOUD_API_KEY)
namenoFriendly name (defaults to first 8 chars of ID)
locationnoLocation for grouping (e.g. "Wohnzimmer")
groupnoGroup for grouping (e.g. "zu Hause")

Usage with Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "air-Q Cloud": {
      "command": "mcp-airq-cloud",
      "env": {
        "AIRQ_CLOUD_DEVICES": "[{\"id\": \"<device-id>\", \"api_key\": \"<key>\", \"name\": \"Living Room\"}]"
      }
    }
  }
}

Usage with Claude Code

claude mcp add air-Q-Cloud mcp-airq-cloud \
  -e AIRQ_CLOUD_DEVICES='[{"id":"<ID>","api_key":"<KEY>","name":"<Name>"}]'

Development

uv sync --frozen --extra dev
uv run pre-commit install
uv run pytest

The repository uses a project-local .venv plus uv.lock for reproducible tooling. Run developer commands through uv run, for example:

uv run ruff check .
uv run ruff format --check .
uv run pyright
uv run pre-commit run --all-files

License

Apache 2.0 — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.