Skip to main content
Glama
coldchain-mcp

coldchain-mcp

by MatuZale

Cold-Chain MCP Server

PyPI version License: MIT

Analyze cold-chain sensor data with AI agents. Connect your temperature/humidity logger to Claude, Cursor, or any MCP client and ask in plain language: "did this shipment breach the cold chain?", "find the anomalies in this log", "split this file into separate journeys."

🔒 Privacy: all analysis runs locally. Your data never leaves your machine. No external APIs, no cloud. Suitable for compliance-sensitive environments.


What is this? (start here if you're new to MCP)

MCP (Model Context Protocol) is a standard way to give an AI assistant access to external tools. This project is an MCP server — a small program that runs on your computer and gives an AI agent four specialized tools for analyzing sensor time-series data.

The idea: instead of pasting thousands of temperature readings into a chat and hoping the AI does the math right, the AI calls these tools, which compute the answer deterministically (same input, same result, every time). You ask a question in plain language; the agent runs the right tool and gives you a structured report.


Related MCP server: PiQrypt MCP Server

Why use it

Language models are unreliable at statistics over large numeric series. They confuse a one-off sensor glitch with a real breach, lose track of timestamps, and produce different answers on re-runs. This server hands the agent deterministic, repeatable tools that get it right every time.


Tools

Tool

What it does

summary_stats

Summary statistics: min / max / mean / median / standard deviation, time range and duration.

detect_threshold_breaches

Detects threshold breaches (e.g. 2-8 degrees C) with minimum duration and hysteresis — separates a real breach from a momentary spike.

detect_anomalies

Flags outliers (global z-score, or deviation from a rolling mean).

segment_journey

Splits a continuous log into separate journeys based on time gaps (START/STOP).


Key distinction: a breach is not an anomaly

A sensor spiking to 40 degrees C for a single sample is an anomaly (a sensor glitch) — not a breach of the cold chain. A door left open, pushing the temperature to 12 degrees C for 20 minutes, is a breach, even though every individual reading looks plausible. This server distinguishes the two cases — exactly what a compliance audit requires.


Installation

The easiest way is with pip:

pip install coldchain-mcp

This installs the server and a command called coldchain-mcp. It's now ready to connect to any MCP client.

Alternative: from source

If you want to modify the server locally:

git clone https://github.com/matuzale/coldchain-mcp
cd coldchain-mcp
pip install -e .

Connecting to Claude Desktop

An MCP client (like Claude Desktop) needs to know how to start your server. You tell it through a small configuration file. Open Claude Desktop, go to Settings -> Developer -> Edit Config, and add a cold-chain entry.

If you installed with pip (recommended), the config is short — you just name the command:

{
  "mcpServers": {
    "cold-chain": {
      "command": "coldchain-mcp"
    }
  }
}

This works because pip install created a coldchain-mcp command that already knows where the code lives — so you don't have to point at any file.

If you're running from source instead, point at the script directly:

{
  "mcpServers": {
    "cold-chain": {
      "command": "python",
      "args": ["/full/path/to/coldchain-mcp/server.py"]
    }
  }
}

Windows note: if the short "command": "coldchain-mcp" form doesn't start the server, the install directory may not be on your system PATH. Either add Python's Scripts folder to PATH, or use the full path to coldchain-mcp.exe as the command.

After editing, fully restart Claude Desktop (quit from the system tray, not just the window). The tools appear automatically.


Data format

CSV with a header, or JSON. Column names are configurable via the ts_field and value_field parameters, and the parser recognizes common aliases (temp, temperature, time, value).

timestamp,value
2026-07-20T08:00:00,5.1
2026-07-20T08:05:00,4.9

JSON is also accepted:

[
  {"timestamp": "2026-07-20T08:00:00", "value": 5.1},
  {"timestamp": "2026-07-20T08:05:00", "value": 4.9}
]

Example (talking to the agent)

"Load sample_data.csv and check whether the shipment breached the 2-8 degrees C range. A breach only counts after 10 minutes."

The agent calls detect_threshold_breaches(min_temp=2, max_temp=8, min_duration_minutes=10) and returns a structured report of any breaches, with start time, end time, duration, and peak value.


Roadmap

  • PDF report export

  • MKT (Mean Kinetic Temperature) — pharmaceutical standard

  • Humidity support and temperature/humidity correlation

  • Multi-zone detectors for a single shipment


License

MIT — see LICENSE. You're free to use, modify, and distribute this, including commercially, as long as the copyright notice is retained.

Available Tools

4 tools
detect_anomaliesA

Wykrywa anomalie w szeregu czasowym (punkty odstające od normy).

Model językowy słabo liczy odchylenia statystyczne na tysiącach punktów — użyj tego narzędzia, by uzyskać deterministyczny, powtarzalny wynik.

Args: data: dane CSV lub JSON. method: "zscore" (globalny z-score) lub "rolling" (odchylenie od średniej kroczącej). sensitivity: próg w liczbie odchyleń standardowych (domyślnie 3.0). window: rozmiar okna dla metody "rolling" (liczba próbek). 0 = auto (~5% danych). ts_field, value_field: nazwy kolumn.

Returns: JSON z listą anomalii (czas, wartość, odchylenie) i podsumowaniem.

Inputs: data (required), method, window, ts_field, +2 more. Returns: result

detect_threshold_breachesA

Wykrywa przekroczenia progów temperatury (naruszenia łańcucha chłodniczego).

Kluczowe dla compliance: krótkie, chwilowe skoki często NIE liczą się jako naruszenie — dopiero przekroczenie utrzymane przez min_duration_minutes. Histereza zapobiega fałszywym wielokrotnym alarmom przy wahaniach wokół progu.

Args: data: dane CSV lub JSON. min_temp: dolny próg (np. 2.0 dla produktów 2-8°C). None = brak dolnego progu. max_temp: górny próg (np. 8.0). None = brak górnego progu. min_duration_minutes: minimalny czas trwania przekroczenia, by liczyło się jako naruszenie. hysteresis: margines histerezy; przekroczenie kończy się dopiero gdy wartość wróci o hysteresis poniżej/powyżej progu. ts_field, value_field: nazwy kolumn.

Returns: JSON z listą naruszeń (typ, początek, koniec, czas trwania, wartość szczytowa) oraz podsumowaniem.

Inputs: data (required), max_temp, min_temp, ts_field, +3 more. Returns: result

segment_journeyA

Dzieli ciągły log na osobne "przejazdy" (journeys) na podstawie przerw czasowych.

Logger transportowy często rejestruje wiele przejazdów w jednym pliku. Przerwa dłuższa niż gap_minutes oznacza granicę między przejazdami.

Args: data: dane CSV lub JSON. gap_minutes: przerwa czasowa (w minutach) traktowana jako granica przejazdu. ts_field, value_field: nazwy kolumn.

Returns: JSON z listą segmentów (numer, start, koniec, czas trwania, liczba próbek, min/max/średnia temperatura w segmencie).

Inputs: data (required), ts_field, gap_minutes, value_field. Returns: result

summary_statsA

Zwraca statystyki podsumowujące dla szeregu czasowego z czujnika.

Użyj tego narzędzia zamiast samodzielnego liczenia statystyk na surowych danych — jest szybsze i deterministyczne dla dużych plików.

Args: data: dane CSV (z nagłówkiem) lub JSON (lista {timestamp, value}). ts_field: nazwa kolumny/pola czasu (domyślnie "timestamp"). value_field: nazwa kolumny/pola wartości (domyślnie "value").

Returns: JSON ze statystykami: liczba odczytów, min, max, średnia, mediana, odchylenie standardowe, zakres czasowy, czas trwania.

Inputs: data (required), ts_field, value_field. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 4 tools

    Disambiguation4/5

    Each tool targets a distinct operation: summary_stats computes aggregate measures, detect_threshold_breaches finds compliance violations, detect_anomalies finds statistical outliers, and segment_journey splits logs into trips. The purposes are clearly differentiated by domain function, though summary_stats and detect_anomalies both operate on raw series and could theoretically be confused—but their outputs are clearly different.

    Naming Consistency4/5

    All tools use snake_case and follow a consistent verb_first pattern: summary_stats (slightly verb-less), detect_threshold_breaches, detect_anomalies, segment_journey. The naming is coherent and predictable, with only 'summary_stats' deviating slightly from the verb-object convention used by the others.

    Tool Count5/5

    Four tools is a reasonable, focused scope for a cold-chain analytics server. Each tool addresses a distinct, valuable analysis task and none feels like filler. The count is on the lean side but entirely appropriate for the narrow domain.

    Completeness4/5

    The set covers core cold-chain analysis workflows: summary stats, threshold breach detection (key for compliance), anomaly detection, and journey segmentation. However, there are notable gaps—no tool for loading/filtering raw data, no visualization/serialization of results, and no export or alerting tools. For a cold-chain MCP server, CRUD-style operations aren't expected, but a data-cleaning or filtering tool would be a natural addition.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables AI agents to sign decisions with post-quantum cryptographic proofs and maintain secure audit trails for compliance. It provides tools for stamping events, verifying chain integrity, and exporting audit data across industries like finance and healthcare.
      4
      73 npm
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI agents to seal, open, verify, and ingest verifiable agri-traceability data by description, with credentials and private keys kept out of the model's flow.
      16 npm
      MIT