Drive your Garmin from Claude Code: the MCP server for personal use
Want to read your Garmin activities and write workouts to your watch from the terminal, without applying for Garmin API access nor writing the OAuth client? The Running Workout MCP server adds to Claude Code in one command. Here is the install, the exposed tools and automation examples.
Last updated: 2026-09-28
Your Garmin in the terminal
Free · official Garmin connection · workouts sent to your watch
Why an MCP server rather than the Garmin API
The Garmin API is not open to individuals: you need a developer account, an application approved by Garmin, and a server receiving data through webhooks. For personal use, that is out of proportion. Running Workout did that work and exposes it through an MCP server: Claude Code, like Claude, ChatGPT or Gemini CLI, reaches it with a simple OAuth authorization on your account.
MCP (Model Context Protocol) is the open standard that describes tools to an assistant: here, reading your activities and profile, creating workouts, scheduling them, managing a plan. The server is read-only on your activities and only writes scheduled workouts to Garmin Connect.
Try it with your own Garmin
Free, nothing to install: connect your Garmin, then ask Claude or ChatGPT for your first workout. It lands on your watch within a minute.
One-command install
First create your Running Workout account by connecting your Garmin (turn on "Historical Data" on the Garmin screen). Then, in a terminal where Claude Code is installed:
claude mcp add --transport http running-workout https://www.runningworkout.fr/mcp
Start Claude Code, type "/mcp", select running-workout and authenticate: the browser opens on runningworkout.fr, you approve the authorization screen, and the tools appear. The authorization is an OAuth token specific to Claude Code, revocable from your Running Workout settings.
To share it with a project, the same configuration can live in the repository's .mcp.json file, with the http transport and this address; each member authenticates with their own Garmin account.
The exposed tools
| Tool | What it does |
|---|---|
| get_athlete_profile | MAS, max HR, FTP, acute and chronic load (ACWR), declared values, latest notes |
| list_activities, get_activity_details | Imported activities, then one run's detail: summary, laps, computed metrics |
| create_workout | A structured workout (run, bike, swim) sent to Garmin Connect, with pace, HR, power or cadence targets |
| list_scheduled_workouts, move_scheduled_workout, delete_workout | The training calendar: list, move, delete |
| set_athlete_data, set_athlete_goal, set_athlete_constraint, add_athlete_note | Athlete memory: measured MAS, race goal, constraints (days, injuries), notes |
| start_training_plan, get_plan_week, review_plan_week, schedule_plan_week | 5K to marathon plans: start, read the week, review it afterwards, push it to the watch |
Each tool returns model-readable text, in your account's units (min/km or min/mile). Errors are explicit: a target Garmin cannot accept is refused before sending, with the fix to apply.
Automation examples
The morning check
claude -p "Read my latest Garmin activity. Summarize it in 5 lines: distance, average pace, average HR, cardiac drift, and one tip for the next session."
The week on the watch
claude -p "I'm preparing a 10K on November 15. Build my next week (3 sessions: intervals, threshold, long run) from my profile, then send each workout to my Garmin on its date."
A weekly script
Claude Code's non-interactive mode ("claude -p") runs from cron or a shortcut. One line on Sunday evening is enough to get the week's review and the next week's proposal. Keep human validation for sending to the watch: ask for the proposal, read it, then send.
The MCP server is the same one used by Claude on the web, ChatGPT and Gemini CLI. Everything you create from Claude Code shows up in your Running Workout calendar and in Garmin Connect.
Limits and good practices
- Activities arrive through Garmin webhooks: a run shows up a few minutes after the watch syncs.
- The server never modifies your past activities, only scheduled workouts.
- One main target per step for running; cycling accepts a secondary target (cadence, HR).
- The Garmin format imposes bounds: the server's validation applies them before sending and explains refusals.
- Revoke a token from your Running Workout settings; each client (Claude Code, Claude web, ChatGPT) has its own.
Frequently asked questions
Do I need a Garmin developer account?
No. Running Workout holds the Garmin API access and lends it to your account through an OAuth authorization. You have nothing to request from Garmin.
Can I call the MCP server from my own code, without Claude?
The server follows the MCP standard (JSON-RPC over HTTP with OAuth 2.1): any compliant MCP client can connect. It is designed for assistants, not as a documented public API; the "Write a workout to Garmin via API" page describes the workout format.
Do Cursor, Codex or other agents work?
Any agent accepting a remote MCP server with OAuth authentication can connect to the same address. Claude Code, Claude, ChatGPT and Gemini CLI are the ones Running Workout tests.
Your Garmin in the terminal
Free account, one command in Claude Code, and your activities are readable, your workouts sendable.
Get started