Skip to main content
Glama

livetrack-mcp

Autonomer MCP-Server, der Garmin LiveTrack abruft, Zeitreihen in SQLite speichert und alle 10 Minuten via claude-runner eine Claude-Analyse auslöst.

Architektur

Garmin LiveTrack URL
    │
    │  (poll every 60 s)
    ▼
livetrack-mcp (port 38100)
    ├── poller.py      — fetch trackpoints from Garmin API
    ├── store.py       — SQLite time-series persistence (/data/livetrack.db)
    ├── tracker.py     — asyncio scheduling + race-end detection
    └── analyzer.py    — build prompt, call claude-runner
         │
         │  POST /run (fire-and-forget)
         ▼
    claude-runner (port 38095)
         │
         │  claude -p <analysis prompt>
         ▼
    Claude (sonnet)
         ├── analyze timeseries
         ├── curl POST /control if thresholds need adjustment
         └── mcp__telegram__send_message → coaching push

Hauptdesign: livetrack-mcp ist vollständig autonom — während des Rennens muss keine Claude-Sitzung aktiv bleiben. Claude wird alle 10 Minuten als zustandslose Analysefunktion aufgerufen. Sollte claude-runner vorübergehend nicht verfügbar sein, wird der nächste Analysezyklus automatisch wiederholt.

Related MCP server: Garmin-Strava-mcp

MCP-Tools

Tool

Beschreibung

start_tracking(url, race_config)

Startet das Abrufen einer LiveTrack-Freigabe-URL

stop_tracking()

Stoppt das Abrufen (wird auch bei Rennende automatisch gestoppt)

get_tracking_status()

Aktiver Status, verstrichene Zeit, Stagnationszeit, Abruffehler

get_timeseries(minutes=10)

Aktuelle Daten aus SQLite

update_thresholds(updates)

Aktualisiert HR/Leistungsschwellen während des Rennens

trigger_analysis()

Manuelle Analyse auf Abruf, umgeht den Zeitplan

Benutzerdefinierte HTTP-Endpunkte

Endpunkt

Methode

Beschreibung

/control

POST

Aktualisiert Schwellenwerte während des Rennens (aufgerufen von Claude via curl im Bash-Tool)

/health

GET

Gesundheitsprüfung — Tracking-Status + Speicherstatistiken

/control Verwendung (aus dem Analyse-Prompt von Claude)

curl -sf -X POST http://localhost:38100/control \
  -H 'Content-Type: application/json' \
  -d '{"power_max": 150}'

Zulässige Felder: hr_max, hr_min, power_max, power_min, cadence_min, run_hr_max, run_hr_min, run_cadence_min

race_config Felder

Feld

Typ

Standard

Beschreibung

hr_max

int

Radsport-HF-Obergrenze (bpm)

hr_min

int

Radsport-HF-Untergrenze

power_max

int

ERG-Leistungsobergrenze (Watt)

power_min

int

ERG-Leistungsuntergrenze

cadence_min

int

Minimale Trittfrequenz (U/min)

run_hr_max

int

Lauf-HF-Obergrenze

run_hr_min

int

Lauf-HF-Untergrenze

run_cadence_min

int

Minimale Laufschrittfrequenz (spm)

poll_interval_secs

int

60

Häufigkeit des LiveTrack-Abrufs

analyze_interval_secs

int

600

Häufigkeit der Claude-Analyse

analyze_window_min

int

10

Datenfenster, das an Claude übergeben wird (Minuten)

Beispiel race_config für einen kompletten Triathlon

{
  "race_name": "CT2026",
  "race_type": "triathlon",
  "hr_max": 144,
  "hr_min": 115,
  "power_max": 165,
  "cadence_min": 82,
  "run_hr_max": 152,
  "run_hr_min": 125,
  "run_cadence_min": 165,
  "poll_interval_secs": 60,
  "analyze_interval_secs": 600,
  "analyze_window_min": 10
}

Erkennung des Rennendes

Der Server stoppt automatisch, wenn:

  • Keine neuen Trackpoints für ≥ 15 Minuten vorhanden sind (STALE_STOP_MIN)

  • UND die gesamte verstrichene Zeit ≥ 30 Minuten beträgt (MIN_ELAPSED_MIN)

Dies berücksichtigt die 24-Stunden-URL-Verzögerung von Garmin: Die URL bleibt nach dem Rennen gültig, aber neue Trackpoints kommen nicht mehr an, wenn der Athlet das Ziel erreicht hat. Das 30-Minuten-Minimum verhindert falsche Stopps zu Beginn, wenn GPS-Daten spärlich sind.

Konfiguration (Umgebungsvariablen)

Variable

Standard

Beschreibung

PORT

38100

Server-Port

HOST

0.0.0.0

Bind-Adresse

MCP_PATH

/mcp

MCP-Endpunktpfad

DB_PATH

/data/livetrack.db

SQLite-Datenbankpfad

CLAUDE_RUNNER_URL

http://localhost:38095

claude-runner Basis-URL

RUNNER_WORKSPACE

training

Arbeitsbereich für claude-runner-Aufgaben

LOG_LEVEL

INFO

Protokollierungsebene

OTEL_EXPORTER_OTLP_ENDPOINT

OpenTelemetry-Collector-URL (optional)

Bereitstellung

cd ~/ai-platform/mcps

# Build and start
docker compose up -d --build livetrack-mcp

# Logs
docker compose logs -f livetrack-mcp

# Restart
docker compose restart livetrack-mcp

# Health check
curl http://localhost:38100/health

Typische Sitzung (via Claude im Trainings-Arbeitsbereich)

# Start tracking
use_mcp_tool livetrack-mcp start_tracking \
  url="https://livetrack.garmin.com/session/.../token/..." \
  race_config={"hr_max": 144, "power_max": 165, "run_hr_max": 152}

# Check status
use_mcp_tool livetrack-mcp get_tracking_status

# Manual analysis trigger
use_mcp_tool livetrack-mcp trigger_analysis

# Stop (or let it auto-stop)
use_mcp_tool livetrack-mcp stop_tracking

Projektstruktur

livetrack_mcp/
├── Dockerfile
├── pyproject.toml
├── README.md
└── src/livetrack_mcp/
    ├── __init__.py
    ├── __main__.py
    ├── otel.py        # OpenTelemetry setup
    ├── poller.py      # Garmin LiveTrack URL parsing + HTTP fetch
    ├── store.py       # SQLite time-series (sqlite3 + asyncio.to_thread)
    ├── tracker.py     # Scheduling (asyncio.create_task) + race-end detection
    ├── analyzer.py    # Prompt builder + claude-runner caller
    └── server.py      # FastMCP tools + /control + /health
A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    MCP server that connects Garmin Connect data to Claude, enabling training analysis, recovery checks, and personalized plans based on real metrics like HRV, training load, and activities.
    12
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Local MCP server that connects Claude Desktop with Garmin and Apple Health data to read training and recovery, estimate heart rate and pace zones, analyze performance, and create structured workouts.
    22
    MIT

View all related MCP servers

Related MCP Connectors

  • Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.

  • Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.

  • MCP server for Withings health data — sleep, activity, heart, and body metrics.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aviman1109/livetrack_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server