Exposes Garmin Connect data as MCP tools so Claude Desktop can fetch real fitness metrics on demand: recovery, fitness markers, training load, recent activities, running dynamics, stress data, and personal records.
13 tools with consistent naming (all get_* verbs) and basic descriptions (avg ~100 chars). However, critical gaps: NO input schemas visible in source code, all tools show only parameter names and descriptions, missing type definitions, enums, and constraints. Output schemas completely undocumented. No error handling guidance. Parameter descriptions lack format/range constraints (e.g., date format stated but no validation rules). No pagination support despite tools returning lists (get_recent_activities). Descriptions are generic and do not explain WHEN to use each tool vs. similar ones (e.g., get_heart_rate vs. get_stress both fetch daily metrics). Security: credentials injected via .env (correct), but no audit logging or permission gates visible.
Fetch Garmin Body Battery data for a given date (or today if not specified). Returns body battery level and status.
Fetch Garmin calorie data for a given date (or today if not specified). Returns total calories burned, active calories, and resting calories.
Fetch Garmin fitness markers for a given date (or today if not specified). Returns VO2 max, fitness age, and other fitness metrics.
Fetch Garmin heart rate data for a given date (or today if not specified). Returns resting heart rate, average heart rate, and max heart rate.
Fetch Garmin heart rate variability (HRV) data for a given date (or today if not specified). Returns HRV value and status.
Fetch Garmin personal records (PRs) for running, cycling, swimming, and other sports. Returns best times, distances, and dates achieved.
No input schemas visible in source code. All 13 tools show parameter names and descriptions only; missing type definitions, min/max constraints, enums, and format patterns.
Output schemas completely undocumented. No tool description states what fields are returned, their types, or structure. LLMs cannot plan downstream calls or extract data reliably.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | <=2025-11-25 | v2 |
Fetch recent Garmin activities (last N days). Returns a list of activities with sport type, duration, distance, calories, and other metrics.
Fetch Garmin recovery metrics for a given date (or today if not specified). Returns recovery status, recovery percentage, and recovery metrics.
Fetch Garmin running dynamics for a given date (or today if not specified). Returns cadence, stride length, ground contact time, and vertical oscillation.
Fetch Garmin sleep data for a given date (or today if not specified). Returns sleep duration, sleep stages, and sleep quality.
Fetch Garmin step count for a given date (or today if not specified). Returns total steps and step goal.
Fetch Garmin stress data for a given date (or today if not specified). Returns stress level, stress percentage, and stress metrics.
Fetch Garmin training load metrics for a given date (or today if not specified). Returns training load status and metrics.
No pagination support for list-returning tools (get_recent_activities, get_personal_records). No limit, offset, or cursor parameters visible.
Parameter descriptions lack actionable constraints. 'ISO date (YYYY-MM-DD). Defaults to today.' is stated but no validation rules, error messages, or range limits (e.g., 'max 365 days in past') are documented.
No error handling guidance. No tool description explains what happens on auth failure, rate limit, missing data, or invalid date.