Coach MCP logo

Coach MCP

Local AI training coach using Garmin Connect data for planning, load management, injury gates, and coaching memory.

Install Coach MCP

Pick your client, then add it in one click or paste the config.

STDIOPython
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "coach-mcp": {
      "command": "uvx",
      "args": [
        "garmin-coach-mcp"
      ],
      "env": {
        "GARMIN_EMAIL": "YOUR_VALUE_HERE",
        "GARMIN_PASSWORD": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

uvx garmin-coach-mcp

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 6d ago.

Overview

Garmin Connect data powers the coach-mcp MCP server, which gives an AI coach access to athlete metrics, activities, plans, injuries, races, and training history. It exposes 49 tools, five prompts, and six local resources through MCP, while storing coaching data and credentials on the user’s machine. Planning follows a coaching snapshot, ACWR and CTL checks, sleep and injury gates, and persistent decision memory. Reach for it when you want conversational endurance-training guidance tied to Garmin data rather than a general-purpose fitness chatbot.

Use cases

  • Build and review weekly training plans from Garmin data
  • Check training load, readiness, sleep, and plan adherence
  • Enforce injury restrictions before saving or pushing sessions
  • Track races, strength work, and athlete responses
  • Review coaching decisions and unresolved training anomalies

Key features

  • Garmin Connect activity and fitness-data access
  • ACWR, CTL, readiness, sleep, and injury gates
  • Persistent local coaching memory
  • Weekly planning and Garmin plan delivery
  • Race, strength, injury, and exercise workflows
  • MCP tools, prompts, and local resources

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 1d ago

Recent health check succeeded.

5/5 checks healthy over the last 44d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 9d ago via OSV.dev · garmin-coach-mcp (PyPI)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars2Stargazers on the source repository.
Last commit18d agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity2 viewsConfig copies, upvotes, and views on AllMCPs.

How Coach MCP works

What coach-mcp does

The coach-mcp MCP server connects an MCP client to Garmin Connect and a local set of athlete and coaching records. It supports training-plan creation and review, activity and fitness-data queries, race planning, strength programming, injury tracking, and interactive check-ins. The project is designed around an opinionated coaching workflow: it evaluates current context before prescribing work and can reject plan changes that violate recorded injury restrictions.

Garmin data can include the athlete profile, weight, age, heart-rate data, activities, fitness history, sleep-related information, readiness, and personal records. Local JSON files hold the profile, training configuration, plans, coaching decisions, response patterns, and other persistent state.

How it works

Each coaching conversation begins with a current snapshot containing time context, a seven-day schedule, fitness metrics, adherence, anomalies, injuries, and a sleep gate. The load hierarchy checks overall ACWR first, then sport-specific ACWR, followed by sport-specific CTL for race readiness. The documented overall ACWR target range is 0.8–1.3.

Plan writes are subject to code-level checks. Sessions that conflict with an active injury restriction are rejected by update_weekly_plan and push_plan_to_garmin, and non-rest sessions need a purpose before they can be saved. Planned-versus-actual discrepancies become anomalies with an open, asked, and resolved lifecycle, allowing the coach to ask about missed or mismatched training instead of silently interpreting it.

Setup and configuration

Use Python 3.12 or newer, a free Garmin Connect account, and an MCP client. The recommended launch method is uvx garmin-coach-mcp; source installation uses a virtual environment, requirements.txt, and python server.py. The README provides configuration examples for Claude Code, Claude Desktop, and Cursor.

Set GARMIN_EMAIL and GARMIN_PASSWORD in the MCP client configuration or a local .env file. COACH_DATA_DIR can point to the directory containing coaching data. A setup wizard creates the athlete profile, training configuration, and empty plan and memory files. The first Garmin baseline refresh starts onboarding for goals, constraints, injury history, and races.

Garmin sessions use cached tokens. If authentication expires or a tool returns AUTH_REQUIRED, run the provided login script, complete MFA if requested, and restart the MCP server.

Tools and capabilities

The coach-mcp MCP server provides 49 tools grouped around:

  • Coaching snapshots, compliance, and scores
  • Weekly planning, periodization, constraints, and Garmin plan delivery
  • Garmin metrics and activity ranges
  • Athlete profiles, thresholds, FTP analysis, and baseline refreshes
  • Races, strength sessions, exercises, injuries, and research
  • Coaching decisions, athlete responses, anomalies, and approvals
  • Morning briefs, check-ins, and other interactive workflows

Five prompts cover weekly planning, morning briefs, injury assessment, week review, and onboarding. Six resources expose the athlete profile, current plan, training configuration, coaching decisions, current context, and coaching doctrine.

Limitations and notes

The server is intended for one athlete per data directory. Supporting multiple athletes requires separate instances and separate COACH_DATA_DIR values. Credentials, Garmin tokens, health data, and coaching records remain local apart from requests sent to Garmin and content passed by the MCP client to its LLM. Optional public web-page requests may occur during race, injury, or exercise research.

The optional standalone daily_loop.py --llm script sends one request to the Anthropic API and requires ANTHROPIC_API_KEY; that key is not needed for normal MCP operation. The project does not provide a backend, telemetry, or analytics service. Garmin MFA and expired sessions may require manual token recovery.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Coach MCP

coach-mcp is an MCP server that connects an AI coaching client to Garmin Connect and local athlete records. Its main tools retrieve activities and metrics, build and validate weekly plans, enforce injury restrictions, manage races and strength work, and persist coaching decisions, anomalies, and adaptation patterns between conversations.

Install it with `uvx garmin-coach-mcp`, or clone the repository, create a Python 3.12+ environment, install `requirements.txt`, and run `python server.py`. Configure `GARMIN_EMAIL` and `GARMIN_PASSWORD` in your MCP client or a local `.env` file.

Yes, coach-mcp works with Cursor through its project or global `.cursor/mcp.json` configuration. Add the server with `uvx garmin-coach-mcp` and provide the Garmin email and password environment variables.

Run `python scripts/garmin_login.py` to perform a fresh Garmin login, enter the MFA code if prompted, and save new tokens. Restart the MCP server after login so tools can use the refreshed session.

It stores health and coaching data as local JSON in the configured data directory. Set `COACH_DATA_DIR` to choose that location; Garmin tokens use a local token store, with `COACH_TOKEN_DIR` available to override its location.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewCoach MCP AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/coach-mcp?style=directory)](https://allmcps.com/mcp/coach-mcp)
HTML Embed
<a href="https://allmcps.com/mcp/coach-mcp"><img src="https://allmcps.com/api/badge/coach-mcp?style=directory" alt="Coach MCP on AllMCPs" /></a>