livetrack-mcp
livetrack-mcp
Автономный MCP-сервер, который опрашивает Garmin LiveTrack, сохраняет временные ряды в SQLite и запускает анализ Claude каждые 10 минут через claude-runner.
Архитектура
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Ключевая особенность: livetrack-mcp полностью автономен — во время гонки не требуется поддерживать активную сессию Claude. Claude вызывается как функция анализа без сохранения состояния каждые 10 минут. Если claude-runner временно недоступен, следующий цикл анализа автоматически повторит попытку.
Related MCP server: Garmin-Strava-mcp
Инструменты MCP
Инструмент | Описание |
| Начать опрос URL-адреса LiveTrack |
| Остановить опрос (также автоматически останавливается по окончании гонки) |
| Активное состояние, прошедшее время, время простоя, ошибки опроса |
| Последние данные из SQLite |
| Обновление пороговых значений ЧСС/мощности во время гонки |
| Ручной анализ по запросу, в обход расписания |
Пользовательские HTTP-эндпоинты
Эндпоинт | Метод | Описание |
| POST | Обновление пороговых значений во время гонки (вызывается Claude через curl в инструменте Bash) |
| GET | Проверка работоспособности — состояние отслеживания + статистика хранилища |
Использование /control (из промпта анализа Claude)
curl -sf -X POST http://localhost:38100/control \
-H 'Content-Type: application/json' \
-d '{"power_max": 150}'Допустимые поля: hr_max, hr_min, power_max, power_min, cadence_min, run_hr_max, run_hr_min, run_cadence_min
Поля race_config
Поле | Тип | По умолчанию | Описание |
| int | — | Верхний предел ЧСС на велосипеде (уд./мин) |
| int | — | Нижний предел ЧСС на велосипеде |
| int | — | Верхний предел мощности ERG (ватт) |
| int | — | Нижний предел мощности ERG |
| int | — | Минимальный каденс на велосипеде (об./мин) |
| int | — | Верхний предел ЧСС при беге |
| int | — | Нижний предел ЧСС при беге |
| int | — | Минимальный каденс при беге (шагов/мин) |
| int | 60 | Частота опроса LiveTrack |
| int | 600 | Частота запуска анализа Claude |
| int | 10 | Окно данных, передаваемое в Claude (минуты) |
Пример race_config для полного триатлона
{
"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
}Определение окончания гонки
Сервер автоматически останавливается, когда:
Нет новых точек трека в течение ≥ 15 минут (
STALE_STOP_MIN)И общее прошедшее время ≥ 30 минут (
MIN_ELAPSED_MIN)
Это учитывает задержку URL-адреса Garmin 24-часового формата: URL остается действительным после гонки, но новые точки трека перестают поступать, когда спортсмен финиширует. 30-минутный минимум предотвращает ложные остановки в начале, когда GPS-данные поступают редко.
Конфигурация (переменные окружения)
Переменная | По умолчанию | Описание |
|
| Порт сервера |
|
| Адрес привязки |
|
| Путь эндпоинта MCP |
|
| Путь к базе данных SQLite |
|
| Базовый URL claude-runner |
|
| Рабочая область для задач claude-runner |
|
| Уровень логирования |
| — | URL коллектора OpenTelemetry (опционально) |
Развертывание
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Типичная сессия (через Claude в рабочей области training)
# 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Структура проекта
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 + /healthThis server cannot be deployed
Maintenance
Related MCP Connectors
Adaptive running coach MCP server — training data, plans, and recovery for AI assistants.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP 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.21MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that gives Claude access to real-time Garmin Connect and Strava data for analyzing training and suggesting sessions.-
- AlicenseNot gradedqualityDmaintenanceSelf-hosted MCP server that exposes 90+ Garmin Connect tools to Claude and includes a live triathlon dashboard.MIT
- AlicenseAqualityBmaintenanceLocal 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.22MIT