LLM-agnostic MCP server for Garmin Connect data, with optional provider demo agents.
Server has 10 tools with consistent naming (all start with 'get_') and basic descriptions. However, critical gaps exist: NO input schemas are visible in the provided source code for any tool. Parameter descriptions exist for some tools (e.g., 'days' in get_recent_activities) but output schemas are completely undocumented. Descriptions are adequate (50-150 chars) but lack actionable context for LLM selection. No error handling guidance, no recovery paths, and no indication of pagination support despite tools that likely return large datasets.
Detailed activity data: splits, laps, samples, and all metrics.
Fitness age and VO2 max estimate.
Heart rate zones: thresholds and zone distribution.
Personal records and achievements: fastest times, longest distances, and best efforts.
Power zones: thresholds and zone distribution.
Recent activities: sport, distance, duration, heart rate, and pace/power.
Current recovery state: readiness, HRV, sleep, body battery, and status.
No input schemas visible in source code. Tools with parameters (get_recent_activities, get_activity_detail, get_training_load, get_stress, get_steps) show parameter names and descriptions but no JSON Schema type definitions, constraints, or validation rules.
Output schemas completely undocumented. No tool describes what fields it returns, data types, or structure. LLMs cannot plan downstream calls or extract required data without seeing response format.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
Step count: daily steps and goal progress.
Stress levels: daily stress, stress duration, and rest.
Training load: aerobic, anaerobic, and focus by sport.
No pagination support documented. Tools returning lists (get_recent_activities, get_personal_records) lack limit, offset, or cursor parameters and do not document result caps. Large datasets risk context window exhaustion.
No error handling or recovery guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next (e.g., 'authentication failed, check credentials').
Parameter 'days' lacks constraints. Tools accept 'days' (default 7, max 365) but no minimum is specified, no enum, and no validation guidance. LLMs may pass 0, negative, or absurd values.