Skip to main content
Glama
nrvim

garmin-givemydata

by nrvim

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMIN_DATA_DIRNoAbsolute path to the garmin-givemydata directory containing garmin.db. Defaults to ~/.garmin-givemydata/.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
garmin_schemaA

Show table columns and row counts.

Called without tables, returns a compact index: row count per non-empty table, plus the names of the empty ones — no column lists. Pass a comma-separated list of table names (e.g. "sleep,stress") to get the columns of just those tables.

garmin_queryB

Run a read-only SELECT query against the Garmin database.

The database is opened in SQLite read-only mode at the engine level, so writes, ATTACH, and schema changes are impossible regardless of the SQL content. Results are capped at limit rows (default 1000).

garmin_health_summaryB

Health overview for a date range.

If start_date/end_date are omitted the most recent days days are used. Returns averages for steps, HR, stress, body battery, SpO2, respiration, calories (daily_summary), sleep metrics (sleep table), and training readiness score.

garmin_activitiesB

List activities with optional filters by type and date range.

Returns key fields: name, type, date, duration_min, distance_km, calories, avg_hr, elevation, power, training_load, location.

garmin_trendsB

Return trend data for a metric aggregated by week or month.

Supported metrics: resting_hr, stress, steps, sleep_hours, body_battery, spo2, training_readiness, floors, calories, active_minutes, respiration, weight, hrv, endurance_score, hill_score, race_5k, race_10k. period: 'week' or 'month'.

garmin_syncA

Sync the latest data from Garmin Connect.

The sync runs in the background (~2 minutes). The first call returns immediately with status "started"; follow up with garmin_sync(refresh=False) after ~2 minutes to see the final result. This avoids MCP client timeouts (Claude Desktop ~60s) that previously made synchronous sync unusable.

Set refresh=False to just check the current state and last sync result without triggering a new sync.

Use this when:

  • You just finished a run/ride and want to see the new data

  • You want to make sure today's health data is loaded

  • The data looks outdated

garmin_todayA

Complete snapshot of today's health: daily summary, last night's sleep, training readiness, HRV status, body battery, and most recent activity. Ideal as conversation context — call this first to ground any health question.

garmin_activity_detailA

Deep-dive into a single activity.

Pass activity_id, or set last=True for the most recent activity. Returns the activity summary plus splits, HR zones, weather, and exercise sets (if available).

garmin_activity_trackpointsA

GPS trackpoints for an activity — lat/lon, altitude, distance, speed, HR, cadence, power, temperature, in chronological order.

Trackpoints are sampled ~1/second, so a 1-hour activity has ~3600 points. Pass limit and offset to page through them; the response includes total_count so callers know the full size.

Best for: elevation profile, HR drift over time, GPS track inspection, pacing analysis, climb segmentation. For aggregate stats (splits, zones, weather), prefer garmin_activity_detail — much smaller output.

garmin_sleepB

Per-night sleep breakdown with stages, SpO2, stress, and Garmin feedback.

Returns each night individually (not averages) for pattern analysis.

garmin_training_loadB

Compute professional training periodization metrics from activity history.

Returns:

  • CTL (Chronic Training Load, 42-day EWMA) — long-term fitness proxy

  • ATL (Acute Training Load, 7-day EWMA) — short-term fatigue

  • TSB (Training Stress Balance = CTL - ATL) — form / readiness

  • Weekly volume summary (hours, km, sessions, load)

  • Training load distribution by sport

garmin_compareB

Side-by-side comparison of two date ranges across all health metrics.

Useful for week-over-week, month-over-month, or year-over-year analysis. Returns deltas and percentage changes for every metric.

garmin_recordsB

All personal records (PRs) with activity details and dates.

garmin_fitness_ageA

Fitness age vs chronological age trajectory over time.

Shows the gap between biological fitness and real age, aggregated by week or month. A widening gap means you're getting fitter relative to your age; a narrowing gap means fitness is declining.

garmin_hrvB

HRV (Heart Rate Variability) with clinical context.

Unlike raw HRV numbers, this returns your personal baseline range, how many consecutive days you've been BALANCED vs UNBALANCED, trend direction, and whether current values are above/below baseline.

garmin_body_batteryB

Body battery with charge efficiency and drain analysis.

Returns per-day values enriched with: how much you charged overnight vs how much you drained during the day, wake-up charge level, and whether sleep quality (deep sleep) correlated with better charging.

garmin_stressB

Stress with time-in-zone breakdown (low/medium/high).

Goes beyond the average — shows how many hours per day you spent in each stress zone, plus max stress spikes and the stress qualifier.

garmin_heart_rateB

Resting heart rate with trend analysis and anomaly detection.

Returns daily RHR plus a rolling 7-day average. Flags days where RHR jumped >5 bpm above your 7-day average (a sign of illness, overtraining, or poor recovery per sports science literature).

garmin_spo2B

Blood oxygen (SpO2) with clinical threshold analysis.

Flags days where average SpO2 dropped below 95% (clinical concern) or nocturnal lows dropped below 80% (possible sleep apnea indicator). Includes both daily_summary and dedicated spo2 table data.

garmin_body_compositionB

Weight, BMI, and body composition history with trend analysis.

garmin_devicesC

Connected Garmin devices with type and last sync time.

garmin_week_summaryA

Current week's health totals vs goals, with daily breakdown.

Shows steps, intensity minutes, floors, and calories for each day of the current week, plus totals vs weekly targets.

garmin_recoveryA

Analyze how your body recovers after hard training sessions.

For each activity with training_load > 80, shows RHR and HRV for the following days. Reveals your personal recovery curve and identifies which sports/intensities hit you hardest.

This is unique — no other Garmin MCP computes recovery signatures.

garmin_training_statusB

Training status history (Productive, Recovery, Detraining, Unproductive, etc).

Shows how Garmin classified your training state each day, with a breakdown of how many days you spent in each status and when transitions happened. Useful for spotting detraining before it deepens.

garmin_workoutsA

Workout library and upcoming schedule.

Returns saved workouts (training plans, custom workouts) and any scheduled workout dates. Useful for understanding planned vs executed training.

garmin_badgesB

Earned badges and achievements with dates.

Tracks milestones like distance PRs, consistency streaks, and special event completions. Shows progression over time.

garmin_hydrationB

Daily hydration intake vs goals.

Tracks fluid intake, compares against Garmin's calculated goal (which factors in activity, weather, and body weight), and flags days with significant under-hydration.

garmin_respirationC

Waking respiration rate with min/max range.

Elevated respiration at rest can indicate illness, stress, or cardiovascular strain. Normal adult range is 12-20 breaths/min.

garmin_intensity_minutesB

Weekly intensity minutes vs the WHO-recommended 150 min/week.

Breaks down moderate vs vigorous minutes (vigorous counts double per WHO guidelines). Shows weekly totals and goal attainment.

garmin_floorsC

Daily floors climbed vs goal, with ascent/descent breakdown.

garmin_stepsB

Daily step count with goal attainment and streaks.

Shows steps per day, percentage of goal, and identifies the longest consecutive streak of meeting your step goal.

garmin_caloriesB

Daily calorie breakdown: total, active, BMR, and consumed (if logged).

Combines daily_summary calorie data with the dedicated calories table for a complete energy picture.

garmin_blood_pressureB

Blood pressure readings (systolic/diastolic/pulse) if tracked.

Requires a compatible Garmin blood pressure monitor. Flags readings outside normal ranges (>140/90 mmHg per AHA guidelines).

garmin_goalsC

Active fitness goals and their current progress.

garmin_challengesB

Garmin Connect challenges (active and completed).

garmin_user_profileC

User profile and settings stored in Garmin Connect.

garmin_race_predictionsB

Predicted race finish times (5K, 10K, half marathon, marathon).

Shows daily predictions with human-readable times and trend direction. A rising prediction time means declining fitness; falling means improving.

garmin_endurance_scoreC

Endurance score and VO2max with classification and trend.

garmin_hill_scoreC

Hill score with endurance and strength sub-scores.

garmin_vo2maxB

VO2max estimates from activities and the dedicated vo2max table.

Pulls from both the activity-level VO2max estimates and the standalone vo2max tracking table.

garmin_health_snapshotA

On-demand health snapshot readings (2-minute wrist measurements).

These are manual measurements taken via the watch's Health Snapshot feature, capturing HR, HRV, SpO2, stress, and respiration simultaneously.

garmin_gearB

Tracked gear/equipment (shoes, bikes, etc) with usage stats.

garmin_daily_eventsC

Daily events detected by your Garmin (stress spikes, body battery events, etc).

garmin_activity_typesB

All Garmin activity type definitions with IDs and parent categories.

garmin_hr_zonesB

Heart rate zone definitions configured in your Garmin profile.

garmin_load_focusC

Training load distribution across aerobic and anaerobic zones.

Shows how your training load is split between low aerobic, high aerobic, and anaerobic zones, plus a focus_status indicating whether your training distribution is optimal.

garmin_lactate_thresholdA

Lactate threshold pace and heart rate by sport.

The lactate threshold is the highest intensity you can sustain aerobically. Used to set training zones and pace targets for races.

garmin_wellness_activityB

Wellness activity sessions detected by Garmin (yoga, breathwork, etc).

These are non-sport wellness sessions tracked separately from regular activities, including start/end times and activity type.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.1/5.0

Scored across 48 tools

Disambiguation3/5

Many tools have clearly distinct purposes, but significant overlap exists among metric-specific tools (e.g., garmin_heart_rate vs garmin_hrv vs garmin_hr_zones; garmin_body_battery vs garmin_stress vs garmin_respiration). The presence of catch-all tools like garmin_query and garmin_health_summary alongside specialized ones increases ambiguity about when to use which.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with the 'garmin_' prefix, making names predictable and easy to recognize as a cohesive set.

Tool Count2/5

48 tools is excessive for a personal health data server, likely overwhelming an agent and causing selection confusion. While the domain is broad, the surface is bloated with many highly specific metrics that could be consolidated.

Completeness4/5

The toolset covers nearly every Garmin Connect data type: activities, sleep, stress, body battery, training metrics, nutrition, gear, and more. Some gaps remain (e.g., no explicit write/update operations, but those may be out of scope for a read-only client), but overall coverage is extensive.

Maintenance

ActivityMaintained
ResponsivenessWithin a week