Claude Running Coach: Make Claude or ChatGPT Coach You
Claude and ChatGPT can coach a runner well, but only once they can read your runs. How to connect Garmin, COROS or Apple Watch data, plus prompts to paste.
Claude can coach a runner. It has just never seen you run.
You ask Claude to build you a 16-week marathon plan. You tell it you run about 40 km a week and want to go under 3:30. Thirty seconds later you have a beautiful plan: base phase, threshold work, long runs climbing to 32 km, a three-week taper. It reads like something a good coach would write.
Then you look closer. Your easy pace is a guess. The threshold sessions assume a fitness level it invented from one goal time. The long run in week 3 is longer than anything you have run since spring, and it has no idea you have been sleeping badly for a fortnight.
That is the whole problem with using Claude as a running coach, and with ChatGPT running plans in general. The model is good at the coaching. It is blind to the runner.
Why the plan looks right and still fits nobody
Large language models have read the running literature. Ask Claude about polarized training, lactate threshold, the long run in marathon preparation or why your heart rate drifts in the heat, and the answer is usually solid. That is not the bottleneck.
The bottleneck is input. A human coach asks for your last 8 to 12 weeks of training before writing a single session, because the plan has to start from where you actually are. A chat window starts from whatever you remember to type. So when people ask "are ChatGPT running plans good?", the honest answer is that the structure is fine and the sizing is fiction.
You can see it in three places:
- Paces. Without a recent race or threshold effort, the model back-solves your training paces from a goal time. If the goal is ambitious, every easy run comes out too fast.
- Volume. It cannot see that your "40 km a week" was 40 km twice in the last two months and 25 km the rest of the time.
- Feedback. It never finds out how the session went. You ran the intervals 10 seconds per km slower than prescribed with your heart rate pinned, and the plan keeps marching.
The fix is not a cleverer prompt. It is giving the model your data, in a form it can query on its own.
What MCP changes
The Model Context Protocol is an open standard that lets an AI client call external tools. A server lists its tools (get my runs from this window, compute my pace curve, push this workout to my watch), and the model decides when to call them. Claude speaks it, ChatGPT speaks it, and so do Cursor and Perplexity.
For running, that means you stop describing your training and the model starts reading it. "How did my long runs go this block?" becomes a tool call that returns the actual runs, with pace, heart rate and distance, and the answer is about you. Our overview of fitness MCP servers covers the wider landscape; here is what matters for runners.
Five ways to give Claude or ChatGPT your runs
There is no single right route. They trade setup effort against what the model can see and do.
1. Paste it or upload a CSV
Export your activities from your watch platform and drop the file into the chat. It costs nothing and works today.
It also goes stale the moment you finish your next run, only covers what you exported, and asks the model to do arithmetic over a large table of text, which is where mistakes creep in. Fine for a one-off question about a single block. Tiring as a weekly habit.
2. Strava's official MCP connector
Strava launched its own MCP connector on June 1, 2026, read-only, for Strava subscribers, with Claude support at launch. If Strava is where your runs live and you already pay for a subscription, this is the clean way to get Strava data into an AI client.
It reads Strava and nothing else, so sleep, HRV and resting heart rate from other devices are not in the picture, and being read-only it cannot put a workout on your watch. It is also the only sanctioned route for Strava data: Strava's API agreement does not allow third-party tools to serve Strava data to AI clients, which is why athletedata does not serve Strava over MCP. A Strava export you upload yourself stays readable.
3. A self-hosted Garmin MCP server
Open-source projects such as Taxuspt/garmin_mcp (MIT licensed, around 1.4k GitHub stars, 110+ tools, read and write) run on your own machine and talk to Garmin Connect. They are free and capable.
The catch is authentication. They log in with your Garmin email and password, plus MFA, by mimicking the Garmin mobile app, with tokens that last around six months. It is unofficial, so a change on Garmin's side can break it, and the process has to be running whenever you want to ask a question. Our Garmin MCP server guide compares this approach with a hosted one in detail.
4. Garmin's Personal API, built yourself
Since October 2026 Garmin lets individuals create a Personal API key for their own data. It is official and covers activities, FIT files and health data. It is also pull-only with no Training API, so nothing goes back to the watch, and Claude cannot call a key directly: you write and host the MCP server that holds the key and turns it into tools. The Garmin Personal API guide walks through what that build involves.
5. A hosted connector
athletedata is a hosted MCP server: you connect your apps once on the dashboard, paste one personal URL into Claude or ChatGPT, and the model can query 39 apps through it. For runners that means Garmin, COROS, Polar, Suunto, Apple Health, Intervals.icu, TrainingPeaks and Zwift for running, plus Oura, WHOOP, Withings and others for sleep and recovery, all deduplicated into one history. It also ships the write tools the read-only routes lack. It is listed in Anthropic's Claude Connectors Directory and has setup pages for Claude, ChatGPT and other clients on the MCP page.
Two limits worth knowing. Strava is excluded, for the reason above. And Garmin's Health API only backfills about 30 days when you first connect, so for a longer history you request Garmin's Export Your Data archive and upload the ZIP.
What a running coach in Claude can do with your data
Raw activity lists are a start, but the useful part is the analysis tools. These are the ones runners lean on, by their tool names, so you know what to ask for.
Predict a race time as a range, not a fantasy
get_race_prediction returns a finish-time band for a 5k, 10k, half, marathon or any distance in km, along with what it rests on: a recent race at the distance, your stored threshold pace, or an estimate from your pace curve. For the marathon, the slow end of the band widens when your longest recent run is short, because a 3:20 fitness level on a 21 km longest run is not a 3:20 marathon. Ask "can I run sub-3:30 in Berlin?" and you get a range with its reasoning, not a number pulled from a goal.
See your real pace curve
get_pace_curve returns your best average pace for each duration, computed from per-second data where your files have it. An effort buried inside a longer run counts, so you do not need to have run a time trial. It is the honest input for setting training paces with something like Jack Daniels' VDOT system.
Check whether your easy runs are easy
This is the question most self-coached runners get wrong. Seiler and Kjerland (2006, Scandinavian Journal of Medicine and Science in Sports) described elite endurance athletes doing the large majority of their sessions at low intensity, the observation behind the 80/20 rule. Plenty of amateurs drift the other way, into moderate efforts that are too hard to be easy and too easy to be quality.
get_intensity_distribution splits your running time into easy, moderate and hard, overall and week by week. It counts endurance sessions only (walks and strength are excluded by design) and reports how many sessions had no zone data rather than scoring them as easy. Pair it with the zone 2 training guide if the answer comes back "mostly moderate".
Track fitness, fatigue and the long run
get_pmc_status returns your fitness, fatigue and form numbers (CTL, ATL and TSB), with a note when today is still in progress so the model does not tell you your fitness is falling at 7am. reality_check_goal grounds a numeric goal with a timeframe against your recent volume and trend, and lays out what is realistic at your current weekly hours versus a higher one. That is the sanity check every ambitious marathon goal deserves before week one.
Put the session on your wrist
push_workout_to_watch sends a structured run (warmup, repeats, recoveries, cooldown, with pace or heart rate targets) to Garmin through Garmin's native Training API, to COROS through its connected account, and to Apple Watch through the athletedata iPhone app, which pulls Run and Ride workouts. If you run with a Stryd pod, power targets come through as the watch's native power alert. The guide to pushing workouts to your watch covers the device side.
Pull official marathon splits
race_results_lookup fetches official results from public databases, including the Berlin, Boston, Chicago, London and New York marathons. Marathon results carry every timing mat with the cumulative time, the segment split and the pace, which is exactly what you need to answer "where did I lose it last year?" Your watch has the GPS file. It does not have the chip splits or your placement.
Claude running coach prompts you can paste
These assume your data is connected. Without a connection the model will still answer, confidently, from nothing, which is the failure this whole guide is about.
Block review:
Pull my runs from the last 8 weeks. Give me weekly volume, the longest run each week, and my intensity split week by week. Then tell me in three sentences what this block was actually training.
Are my easy runs easy:
Check my intensity distribution for the last 6 weeks. If less than three quarters of my running time was easy, list the five runs that pulled it up, with their pace and average heart rate, and tell me what my easy pace should be instead.
Goal check before a plan:
I want to run a sub-3:30 marathon on [date]. Get my race prediction for the marathon, my fitness and fatigue numbers, and my longest run in the last 6 weeks. Tell me whether the goal is realistic, what time range is honest today, and what would have to change to make 3:30 likely.
Session to the watch:
Build tomorrow's session: 15 minutes easy, 5 x 1 km at my current threshold pace with 90 seconds jog recovery, 10 minutes easy. Use my pace curve to set the threshold pace, show me the workout, and push it to my watch once I confirm.
Post-race debrief:
Look up my official result for the [year] Berlin Marathon under [full name]. Compare my 5 km splits against my training in the 10 weeks before it and tell me whether the fade in the second half looks like pacing, fuelling or fitness.
If you build a Claude Skill for running, use it for your coaching philosophy: how you like plans laid out, your preferred session types, the rules you want followed. The Skill holds instructions. The MCP connection holds the data. A running coach needs both.
Claude vs ChatGPT as a running coach
Both are capable. For running, the deciding factor is rarely the model and almost always what it can see and do.
What is the same: both speak MCP, so the same connector gives both the same tools against the same history. A race prediction or intensity split comes from the tool, not the model's memory, so the numbers match whichever client you ask.
What differs is access. ChatGPT supports custom MCP apps on paid plans (Plus, Pro, Business, Enterprise and Education), added on chatgpt.com in a browser rather than the phone app; on the free plan you cannot add one. Claude adds connectors from its connectors settings, and athletedata is listed in Anthropic's Claude Connectors Directory. Strava's official connector launched with Claude support, so if Strava is your main source, check Claude first. The ChatGPT setup page and our guide on connecting training data to ChatGPT and Claude cover the steps for each.
Use whichever assistant you already live in. Switching assistants does not fix a missing data connection; adding the connection does.
Where MCP in your own AI stops and a coach starts
An MCP connection is reactive. It answers what you ask, when you ask, as well as you ask. For a lot of runners that is exactly right: you plan your own training, you want a sharp analyst on call, and you enjoy the conversation. That is athletedata's MCP tier at $9/month or $69/year, with every analysis and write tool above included.
What it does not do is notice things on its own. It will not message you that your easy runs crept up 15 seconds per km this week, move Thursday's intervals because you slept four hours, or rebuild the plan after a missed long run. That is a coach, and it is a different product: a proactive coach on WhatsApp, Telegram or iMessage that reads every session as it lands, keeps an adapting plan, and pushes each day's workout to your watch. Coaching is $39/month. Both start with a 7-day free trial, and the AI running coach page and AI marathon coach page show what the coaching side looks like for each.
A simple rule: if you would happily open Claude three times a week and ask, the MCP tier is enough. If you want someone else watching, you want the coach.
Putting it together: a Claude running coach in six steps
- Pick your data route. Strava-only runner with a subscription: Strava's official connector. Tinkerer who wants free and local: a self-hosted Garmin MCP server. Multiple devices, or you want sessions pushed to your watch: a hosted connector.
- Load your history. Connect your watch platform, then upload an export archive if you want more than the roughly 30 days Garmin backfills on its own.
- Connect your AI client. Add the MCP URL to Claude, or to ChatGPT on a paid plan from chatgpt.com in a browser.
- Start with a block review, not a plan. Ask for 8 weeks of volume, long runs and intensity split before you ask for anything new.
- Set paces from evidence. Use the pace curve and race prediction band, not your goal time, to set easy, threshold and race paces.
- Close the loop weekly. Every week, ask how the key sessions went against their targets, and push the next quality session to your watch.
The model was never the weak link. Give it your runs and it stops coaching an average runner and starts coaching you.