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:

pip install -e ".[dev]"
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:

pre-commit run --all-files
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.0.
  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.0.tar.gz (18.4 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.0-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: airq_mcp_timeseries-0.1.0.tar.gz
  • Upload date:
  • Size: 18.4 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.0.tar.gz
Algorithm Hash digest
SHA256 d348b9e6a3028f471b1d593fa7b36366a37cca7f56d4f3827f5ab4a62933e59d
MD5 1db15dc90dbf9777a371f2ecf2c20e4e
BLAKE2b-256 eaf521cc1bc61df42dfc81b203ab07192e93788f97f54db6983f7b14d6948df3

See more details on using hashes here.

Provenance

The following attestation bundles were made for airq_mcp_timeseries-0.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for airq_mcp_timeseries-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b1a10e222f9bf5dbbe2a81f5cc91b385c79b31ac8eaade9bc66bb4b6f3af9387
MD5 9bb18aba20c93117128492a3bc0e92dc
BLAKE2b-256 bfbef7602bcd665acdcf89aa714be24def9c9c84bd6b12046264ff2bdc8f4040

See more details on using hashes here.

Provenance

The following attestation bundles were made for airq_mcp_timeseries-0.1.0-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