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 |
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
| 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