Skip to main content

Shared time-series domain layer and Plotly renderer for air-Q MCP providers

Project description

airq-mcp-timeseries

PyPI Python License Tests Publish to PyPI pre-commit enabled

Shared time-series domain layer and Plotly renderer for air-Q MCP providers.

This project is not an MCP server. It is the shared package that consolidates time-series querying, normalization, resampling, summarization and plotting so that mcp-airq and mcp-airq-cloud can reuse the same business logic.

Features

  • shared query, series, summary and plotting data models
  • source-agnostic TimeSeriesProvider protocol
  • metric normalization and query validation
  • resampling and peak-preserving downsampling
  • renderer-independent plot model
  • Plotly rendering for HTML, PNG, SVG and WebP
  • CSV and Excel export for processed time-series data
  • async high-level orchestration with plot_history(), summarize_history() and export_history()

Installation

pip install airq-mcp-timeseries

For development:

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

Usage

from datetime import datetime, timedelta

from airq_mcp_timeseries import HistoryQuery, PlotRequest, Selector, export_history, plot_history

request = PlotRequest(
    selector=Selector(devices=["Living Room"]),
    metric="co2",
    start=datetime.now().astimezone() - timedelta(hours=6),
    end=datetime.now().astimezone(),
)

result = await plot_history(provider, request)

export = await export_history(
    provider,
    HistoryQuery(
        selector=request.selector,
        metric=request.metric,
        start=request.start,
        end=request.end,
    ),
    output_format="csv",
)

provider must implement the shared TimeSeriesProvider protocol.

Development

Run the full local validation stack:

uv run pre-commit run --all-files
uv run ruff check .
uv run ruff format --check .
uv run pyright
uv run pytest --exitfirst -n auto

Release Process

  1. Update version in pyproject.toml.
  2. Commit the change and create a matching Git tag such as v0.1.2.
  3. Publish a GitHub Release from that tag.

The publish workflow validates that the release tag matches pyproject.toml, builds the package and publishes it to PyPI.

License

Apache License 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

airq_mcp_timeseries-0.1.4.tar.gz (96.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

airq_mcp_timeseries-0.1.4-py3-none-any.whl (29.9 kB view details)

Uploaded Python 3

File details

Details for the file airq_mcp_timeseries-0.1.4.tar.gz.

File metadata

  • Download URL: airq_mcp_timeseries-0.1.4.tar.gz
  • Upload date:
  • Size: 96.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for airq_mcp_timeseries-0.1.4.tar.gz
Algorithm Hash digest
SHA256 34c46be2c2e42a0149b1f561af98508619c7c51751f1d26495b3bceffec68429
MD5 df57552a1d6aa61fcb59c0ca519c2b11
BLAKE2b-256 bc816e769fc28f3097f42dd16de0db6b760f93020a78de7bd55228db26250bbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for airq_mcp_timeseries-0.1.4.tar.gz:

Publisher: publish.yml on CorantGmbH/airq-mcp-timeseries

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file airq_mcp_timeseries-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for airq_mcp_timeseries-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f4e822c836e7a27d84904fa8fed48f3c4e925be1608ca6957ea9a8a78a046019
MD5 37cd697b416e6b94ec626adeae4b9b90
BLAKE2b-256 d4a00574caae2e2bfdba101e6e0b0fa6c11901c2a62cd49c55064c250dd391f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for airq_mcp_timeseries-0.1.4-py3-none-any.whl:

Publisher: publish.yml on CorantGmbH/airq-mcp-timeseries

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page