Skip to content

Releases: endurancetools/garmin-mcp

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 17:00

0.3.0 (2026-10-13)

Claude Desktop extension

  • The extension is called Garmin MCP in Claude Desktop, not "Garmin Connect", which is Garmin's own service. Its description says it is an unofficial, open-source server, not affiliated with Garmin.
  • Every release also carries the extension as garmin-mcp.mcpb, so releases/latest/download/garmin-mcp.mcpb always downloads the newest one.

Morning readiness

  • REST needs two signals that agree. By default (decision_rule: "pairs") the decision is REST only when both signals of a pair are red: HRV with resting heart rate, HRV with sleep, or load with HRV, resting heart rate or sleep. A single red signal gives MODIFY. One short night lowers HRV, raises resting heart rate and shortens sleep together, so the old counting rule could cancel a key session on one event. rules: {"decision_rule": "count"} restores it.
  • The decision uses HRV, resting heart rate, sleep hours and load only. Sleep is rated by hours; the sleep score stays in the answer. Body Battery and stress are shown for reference (info), like Garmin's Training Readiness, and do not vote. The rules sleep_score_red, sleep_score_yellow, bb_red, bb_yellow and stress_yellow are gone and are ignored with a note.

Training load

  • Aerobic decoupling (Pa:Hr for running, Pw:Hr for power) per session in get_load activities, and its monthly mean in the efficiency trend: the efficiency of the first and second half of a steady session of at least an hour, from the laps of the activity.
  • flags.intensity_sports chooses which sport groups the intensity distribution counts (default run, bike, nordic, row). Add hike to include mountain walking; it then also gets an efficiency trend from grade adjusted speed.

Documentation

  • New pages: Methods and evidence (what fitness, fatigue, form and HRV readiness mean and where the methods come from) and an FAQ.
  • Every npm package has its own README; SECURITY.md, CONTRIBUTING.md and issue and pull request templates in the repository.

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 20:24

0.2.0 (2026-10-12)

Training analytics

A new package, garmin-mcp-analytics, computes training metrics on your machine from the data already in the local database. Every formula, default and limit is described on the Training analytics page.

  • get_load: an own load model. Each activity gets one training stress from the first source available: power (cycling, TSS), pace (running, rTSS), swim pace against CSS (sTSS), heart rate (hrTSS from the time in HR zones, else from average heart rate) or session RPE. From it: fitness, fatigue and form (CTL, ATL, TSB), ACWR, monotony and strain, weekly volume per sport, a three-zone intensity split against LT1 and LTHR, load flags, an optional form per sport and a monthly efficiency factor trend over aerobic sessions.
  • get_readiness: a morning GO, MODIFY or REST decision from overnight HRV, resting heart rate, sleep, Body Battery, stress and load, each compared with your own recent baseline. Garmin's Training Readiness is shown next to it for reference and does not vote.
  • get_thresholds: LTHR, LT1, HRmax, FTP, resting heart rate and the other thresholds in effect on a date, with their history, per-sport values, and the heart rate and power zones of every sport in the Garmin profile.
  • set_threshold: record a field test result. Every metric is computed with the thresholds that applied on the activity's own date, so a new test changes the numbers from its date on.
  • Thresholds start from the Garmin profile, which is downloaded before an analytics read when it is not stored yet. Without a tested value, documented approximations are used and the answer says so.
  • Every flag and readiness rule can be overridden per call (flags, rules), and every answer returns the values it used.

CLI

  • garmin load, garmin readiness and garmin thresholds (list, add, export, import) give the same results in the terminal, as Markdown or --json. They never download; a missing range is reported with the garmin sync command to run.
  • garmin import-activities <file.csv...> reads the Activities CSV export of Garmin Connect (English or Polish headers), so load history older than the synced range counts too. Imported activities count only on dates the synced activities do not cover.
  • garmin status shows the number of stored thresholds and imported activities.

Changed

  • preview_workout is merged into create_workout. Call create_workout with dry_run: true to see the readable steps and the estimated duration without saving anything; the same input without dry_run saves the workout. The tool count stays at 20.
  • get_training_status and get_period_summary: the CTL/ATL/TSB computed from Garmin's per-activity training load is now one field, garmin_load_model (formerly computed_load and load_at_end), and the descriptions say when to use it and when get_load.
  • The server (serverInfo.version) and garmin --version report the version from package.json instead of a fixed 0.1.0.

Release

  • The Claude Desktop extension garmin-mcp-<version>.mcpb is attached to every GitHub release.

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 12 Oct 11:08

0.1.1 (2026-10-12)

🩹 Fixes

  • config: test expandPath niezależny od platformy, pełny check przy wydaniu (E0-6) (8d0a983)
  • repo: better-sqlite3 z gotowych binarek zamiast node-gyp (E0-6) (0c24a86)
  • repo: testy serwera i doctor na Windows (E0-6) (8ada121)

❤️ Thank You

  • Marcin Milewicz