garmin-coach-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GARMINTOKENS | No | Where the Garmin OAuth token lives. | ~/.garminconnect |
| GARMIN_COACH_HOST | No | HTTP bind address. | 0.0.0.0 |
| GARMIN_COACH_PORT | No | HTTP port. | 8080 |
| GARMIN_COACH_SECRET | No | Required for HTTP transport. Minimum 32 characters. | |
| GARMIN_COACH_READONLY | No | Set to '1' to hide write tools. | off |
| GARMIN_COACH_CLIENT_ID | No | Entra app ID; required audience on tokens. | |
| GARMIN_COACH_TENANT_ID | No | Entra tenant issuing tokens. | |
| GARMIN_COACH_TRANSPORT | No | Transport mode: stdio (default) or http. | stdio |
| GARMIN_COACH_PUBLIC_URL | No | This server's public URL, for RFC 9728 metadata. | |
| GARMIN_COACH_ALLOWED_OIDS | No | Object IDs permitted to call the server. | |
| GARMIN_COACH_ALLOWED_HOSTS | No | Host headers the MCP SDK will accept. | localhost only |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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