analyze_training_load
Evaluate training load metrics by analyzing Strava activities. Use this tool to assess workout intensity and monitor fitness progress effectively.
Instructions
Анализ тренировочной нагрузки
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| activities | Yes |
Implementation Reference
- src/server.py:401-448 (handler)Implementation of the analyze_training_load tool handler. This function takes a list of Strava activities and computes summary statistics including total distance (in km), total moving time (in hours), count of activities by type, and distribution by heart rate intensity zones. Registered via @mcp.tool() decorator.@mcp.tool() def analyze_training_load(activities: List[Dict]) -> Dict: """Анализ тренировочной нагрузки""" if not activities: return { "error": "Нет активностей для анализа", "activities_count": 0 } summary = { "activities_count": len(activities), "total_distance": 0, "total_time": 0, "activities_by_type": {}, "heart_rate_zones": { "easy": 0, # ЧСС < 120 "medium": 0, # ЧСС 120-150 "hard": 0, # ЧСС > 150 }, } for activity in activities: activity_type = activity.get("type") # Обновляем счетчик типа активности if activity_type not in summary["activities_by_type"]: summary["activities_by_type"][activity_type] = 0 summary["activities_by_type"][activity_type] += 1 # Суммируем дистанцию и время summary["total_distance"] += activity.get("distance", 0) summary["total_time"] += activity.get("moving_time", 0) # Анализируем зоны ЧСС hr = activity.get("average_heartrate", 0) if hr: if hr < 120: summary["heart_rate_zones"]["easy"] += 1 elif hr < 150: summary["heart_rate_zones"]["medium"] += 1 else: summary["heart_rate_zones"]["hard"] += 1 # Конвертируем единицы измерения summary["total_distance"] = round(summary["total_distance"] / 1000, 2) # в километры summary["total_time"] = round(summary["total_time"] / 3600, 2) # в часы return summary