Skip to main content
Glama
jhoy1020

garmin-coach-mcp

by jhoy1020

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GARMINTOKENSNoWhere the Garmin OAuth token lives.~/.garminconnect
GARMIN_COACH_HOSTNoHTTP bind address.0.0.0.0
GARMIN_COACH_PORTNoHTTP port.8080
GARMIN_COACH_SECRETNoRequired for HTTP transport. Minimum 32 characters.
GARMIN_COACH_READONLYNoSet to '1' to hide write tools.off
GARMIN_COACH_CLIENT_IDNoEntra app ID; required audience on tokens.
GARMIN_COACH_TENANT_IDNoEntra tenant issuing tokens.
GARMIN_COACH_TRANSPORTNoTransport mode: stdio (default) or http.stdio
GARMIN_COACH_PUBLIC_URLNoThis server's public URL, for RFC 9728 metadata.
GARMIN_COACH_ALLOWED_OIDSNoObject IDs permitted to call the server.
GARMIN_COACH_ALLOWED_HOSTSNoHost headers the MCP SDK will accept.localhost only

Capabilities

Features and capabilities supported by this server

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

Tools

Functions exposed to the LLM to take actions

NameDescription
garmin_statusA

Check that the Garmin connection works and show whose account is connected.

Use this first to confirm authentication before other tools.

list_activitiesA

List your most recent Garmin activities.

Args: limit: How many recent activities to return (default 10). activity_type: Optional Garmin type key filter, e.g. "running", "strength_training", "cycling". Omit for all types.

get_activityA

Get detailed metrics for a single activity by its ID.

Args: activity_id: The activityId from list_activities.

get_exercise_setsA

Get the per-set strength breakdown (exercise, reps, weight, est. 1RM) for one activity.

Only meaningful for strength_training activities logged with sets on the watch.

Args: activity_id: The activityId of a strength workout.

get_strength_historyA

Progressive-overload view: strength sets grouped by session over recent weeks.

Walks your recent strength_training activities, pulls their sets, and returns per-session weight x reps so you can see whether a lift is going up.

Args: exercise_name: Optional case-insensitive substring to filter to one lift (e.g. "bench", "squat"). Omit to include all exercises. weeks: How many weeks back to look (default 8). max_sessions: Cap on how many strength sessions to fetch (default 20).

get_recoveryA

Get sleep, daily stats, and training readiness for one day (default today).

Args: date: YYYY-MM-DD. Defaults to today.

get_trendsA

Time series of a daily health metric to answer 'how am I trending?'.

Args: metric: One of resting_hr, steps, calories, stress, body_battery_high, body_battery_low, floors_climbed. weeks: How many weeks back to sample (default 8, max 26). sample_days: Sampling interval in days (default 7 = weekly). The series is capped at 60 points; a finer interval over a long window is widened automatically rather than making hundreds of requests.

suggest_next_weightA

Recommend the next weight & reps for a lift using progressive overload.

Reads your recent strength history for the exercise and applies a double-progression rule. This is read-only (it does not change anything on Garmin).

Args: exercise_name: Case-insensitive substring of the lift, e.g. "bench", "squat". reps_low: Bottom of your target rep range (default 8). reps_high: Top of your target rep range (default 12). increment_kg: Weight jump when you graduate the range (default 2.5). weeks: How many weeks of history to consider (default 8).

list_workoutsA

List saved Garmin workouts (name + id), newest first.

Args: limit: How many workouts to return (default 20).

create_strength_workoutA

Create a strength workout in Garmin Connect (and optionally schedule it).

EXPERIMENTAL: built from Garmin's unofficial workout schema. After creating, open the Garmin Connect app to confirm it looks right; use delete_workout to undo.

Args: name: Workout name shown on the watch / in Garmin Connect. exercises: List of exercises. Each item: {"name": "Bench Press", "sets": 3, "reps": 10, "weight_kg": 60, "rest_seconds": 90, "category": "BENCH_PRESS" (optional Garmin key)} schedule_date: Optional YYYY-MM-DD to place it on your Garmin calendar.

schedule_workoutA

Schedule an existing Garmin workout onto your calendar.

Args: workout_id: The workout's ID (from create_strength_workout or list_workouts). date: Target date, YYYY-MM-DD.

delete_workoutA

Delete a saved Garmin workout (undo a created workout).

Args: workout_id: The workout's ID from list_workouts / create_strength_workout.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhoy1020/garmin-coach-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server