snoozelieb avatar

Coach Mcp

snoozelieb/coach-mcp

Connects to your Garmin Connect account and exposes 48 tools for AI-driven training prescription with hard enforcement gates. It pulls real fitness data (ACWR, CTL, HR zones, sleep, personal records) and won't let you or the LLM approve plans that violate injury restrictions or load management rules. Everything persists locally: athlete profile, weekly plans, coaching decisions, anomaly tracking (missed sessions, rest day violations), and adaptation patterns across conversations. You'd reach for this if you want an opinionated coach that actually says no when your enthusiasm exceeds capacity, not just a chatbot that agrees with whatever you propose. Includes strength progression tracking, race calendar integration, and Garmin workout sync.

GitHub stars
3
tools
53
auth
Secret needed
transport
STDIO
env vars
3
last updated
Nov 6, 2026

Tools

53 tools

Public tool metadata for what this MCP can expose to an agent.

get_coaching_snapshotCanonical, sectioned coaching snapshot.

Canonical, sectioned coaching snapshot.

No parameter schema in public metadata yet.

get_compliance_report

No parameter schema in public metadata yet.

get_coaching_score

No parameter schema in public metadata yet.

get_weekly_plan

No parameter schema in public metadata yet.

update_weekly_plan

No parameter schema in public metadata yet.

preview_workoutRender one session the way the watch will show it, or fetch the session contract.

Render one session the way the watch will show it, or fetch the session contract.

No parameter schema in public metadata yet.

push_plan_to_garminPreview with the step tree per session, then confirm.

Preview with the step tree per session, then confirm.

No parameter schema in public metadata yet.

training_programMulti-week programs, capacity-anchored and injury-gated (action=get/set).

Multi-week programs, capacity-anchored and injury-gated (action=get/set).

No parameter schema in public metadata yet.

get_week_constraints

No parameter schema in public metadata yet.

get_weekly_prescription

No parameter schema in public metadata yet.

get_periodization_status

No parameter schema in public metadata yet.

update_phase

No parameter schema in public metadata yet.

query_metricskind=fitness/sport_history/intensity/daily/readiness/personal_records.

kind=fitness/sport_history/intensity/daily/readiness/personal_records.

No parameter schema in public metadata yet.

get_activities_range

No parameter schema in public metadata yet.

get_athlete

No parameter schema in public metadata yet.

update_athlete

No parameter schema in public metadata yet.

set_ftp

No parameter schema in public metadata yet.

set_threshold_pace

No parameter schema in public metadata yet.

analyze_ftp_test

No parameter schema in public metadata yet.

refresh_athlete_baseline

No parameter schema in public metadata yet.

refresh_fitness_history

No parameter schema in public metadata yet.

backfill_history

No parameter schema in public metadata yet.

get_onboarding_guide

No parameter schema in public metadata yet.

get_methodology

No parameter schema in public metadata yet.

update_methodology

No parameter schema in public metadata yet.

racesRace management (action=list/add/update/research).

Race management (action=list/add/update/research).

No parameter schema in public metadata yet.

remove_race

No parameter schema in public metadata yet.

sync_strength_session

No parameter schema in public metadata yet.

get_strength_baseline

No parameter schema in public metadata yet.

approve_progression

No parameter schema in public metadata yet.

set_exercise_preference

No parameter schema in public metadata yet.

generate_strength_workout

No parameter schema in public metadata yet.

add_exercise

No parameter schema in public metadata yet.

diagnose_injury

No parameter schema in public metadata yet.

research_injury

No parameter schema in public metadata yet.

update_injury_status

No parameter schema in public metadata yet.

research_exercise

No parameter schema in public metadata yet.

list_exercises

No parameter schema in public metadata yet.

research_sport

No parameter schema in public metadata yet.

log_coaching_decision

No parameter schema in public metadata yet.

get_active_decisions

No parameter schema in public metadata yet.

update_decision_status

No parameter schema in public metadata yet.

record_athlete_response

No parameter schema in public metadata yet.

get_response_patterns

No parameter schema in public metadata yet.

resolve_anomaly

No parameter schema in public metadata yet.

propose_coaching_action

No parameter schema in public metadata yet.

list_pending_approvals

No parameter schema in public metadata yet.

approve_proposal

No parameter schema in public metadata yet.

reject_proposal

No parameter schema in public metadata yet.

get_weather_outlookWind, gusts, rain and daylight at the profile location (Open-Meteo, no key).

Wind, gusts, rain and daylight at the profile location (Open-Meteo, no key).

No parameter schema in public metadata yet.

set_location

No parameter schema in public metadata yet.

generate_smart_brief

No parameter schema in public metadata yet.

interactive_check_in

No parameter schema in public metadata yet.

Sponsors

Configuration

GARMIN_EMAIL*

Garmin Connect account email

GARMIN_PASSWORD*secret

Garmin Connect account password

COACH_DATA_DIR

Directory for athlete data files (defaults to the git-checkout data/ dir when run from a checkout, otherwise a per-user data directory)

Readme

coach-mcp

CI License: MIT

An opinionated AI training coach as an MCP server. It pulls your real data from Garmin Connect and prescribes with authority — science-based load management (ACWR), code-enforced injury gates (the server rejects plans that violate an active injury restriction, no matter what the LLM says), and persistent coaching memory so decisions, rationale, and your adaptation patterns survive between conversations. It will tell you "no" when your enthusiasm exceeds your capacity.

All health data and credentials stay on your machine — see Security & Privacy.

Quickstart

You need Python 3.12+, a free Garmin Connect account, and an MCP client (Claude Code, Claude Desktop, or Cursor).

Option A: uvx (recommended)

No install step — your MCP client runs the server on demand:

uvx garmin-coach-mcp

View the full README on GitHub

Details

Repository
github.com/snoozelieb/coach-mcp
Package
garmin-coach-mcp
Transport
STDIO
Auth
Required
Registry
MCP registry, active