Claude Cycling Coach: Using Claude and ChatGPT With Your Power Data
Claude and ChatGPT know power training well, but without your ride files they prescribe watts against a guessed FTP. Here is how to fix that with MCP.
You ask Claude for a sweet spot session and it guesses your FTP
You open Claude and type: build me a sweet spot session for Tuesday, about an hour, I have been riding around eight hours a week.
The answer is good. A proper warm-up, three by twelve minutes at 88-93% of FTP, five minutes easy between reps, a cool-down. Then it asks what your FTP is, or worse, it assumes one. You type 250 because that is what Zwift said in March.
Your real FTP right now is closer to 230. You had a sick week and a work trip. So Claude prescribes 225 watts for those reps, which is 98% of your actual threshold. That is not sweet spot anymore. That is three twelve-minute threshold reps on a Tuesday, and you will either crack on the third one or grind it out and wonder why Thursday feels awful.
Nothing in the model's reasoning was wrong. The physiology was right. The structure was right. The single number it was all built on was wrong, and it had no way of knowing.
That is the whole problem with using Claude or ChatGPT as a cycling coach, and it is fixable.
What Claude and ChatGPT already know about power training
Ask either model to explain power-based training and you will get a solid answer. The standard power levels from Hunter Allen and Andrew Coggan's Training and Racing with a Power Meter are well represented in what these models learned: endurance around 56-75% of FTP, tempo 76-90%, threshold 91-105%, VO2 max 106-120%, anaerobic capacity above that. Sweet spot, the band straddling the top of tempo and the bottom of threshold, is a concept both models explain fluently.
They also know intensity distribution. Seiler's 2010 review in the International Journal of Sports Physiology and Performance described how successful endurance athletes spend most of their training time at low intensity, and Stöggl and Sperlich's 2014 study in Frontiers in Physiology found that a polarized distribution produced larger gains than threshold-heavy or high-volume approaches in trained endurance athletes. Ask Claude whether you are riding too much in the grey zone and it will explain the concept correctly.
They know the load models too. Chronic training load as a roughly 42-day weighted average of daily stress, acute load as roughly 7 days, form as the gap between them. They can explain training stress score and normalized power better than most forum threads.
So knowledge is not the bottleneck. A Claude cycling coach fails in exactly one place: it has never seen a single one of your rides.
Why better prompting does not fix it
The usual advice is to write a longer prompt. Paste your FTP, your weekly hours, your goal event, your last few sessions. Some people maintain a "coach context" document they paste at the start of every chat.
That helps, and it has three limits you will hit fast.
It goes stale after every ride. The moment you finish tomorrow's session, the document is out of date. Either you update it by hand every day or the model works from last week's picture.
It is your summary, not the file. You type "4x8 at 320, felt hard". The ride file knows the reps went 322, 318, 309, 301 and that heart rate drifted eleven beats across them. Fading power at rising heart rate is the actual signal, and it does not survive your summary.
It cannot see what you did not think to include. You would not paste your intensity split over the last six weeks, because you do not know it. The model cannot point out that you have been riding 30% of your time in tempo if nobody gave it the time in zone.
The fix is to stop describing your training and let the model read it. That is what the Model Context Protocol (MCP) does: it lets Claude, ChatGPT and other assistants call tools that fetch your data on demand, so the model goes and looks when it needs a number instead of trusting the one you remembered.
Six ways to give Claude your cycling data
There are several routes, and they differ on two axes that matter: how much history the model can read without you doing work, and whether it can write anything back. For the wider landscape across every sport, see our comparison of fitness MCP servers.
1. Paste a CSV or upload a FIT file
Export rides from your platform and drop them into the chat. Claude can parse a CSV of activities or a single ride's data and do real analysis on it.
It is free and it works for a one-off question. It does not scale: every new ride means a new export, long per-second files eat your context window fast, and the model forgets everything when you start a new chat.
2. Strava's official MCP connector
Strava launched its own MCP connector on 1 June 2026, available to Strava subscribers and starting with Claude (Strava's announcement). If your rides live on Strava and you pay for a subscription, it is the sanctioned way to let Claude read them.
It is read-only. Claude can look at your activities but cannot put a workout on your calendar or your head unit. Strava's API terms also prohibit third parties from exposing Strava API data to AI tools, which is why our connector does not serve Strava data over MCP.
3. Community intervals.icu MCP servers
Intervals.icu offers an official personal API key, and several open-source MCP servers on GitHub wrap it. Some are read-only, others can also create and edit calendar events. Intervals.icu is a strong base for cyclists because it already computes power curves, fitness and fatigue, and per-rep interval analysis.
The cost is running it yourself: installing the server, keeping it updated, wiring it into your MCP client. Our intervals.icu MCP guide covers what that connection exposes.
4. Community TrainingPeaks MCP servers
TrainingPeaks does not offer a personal API key, so the community servers authenticate with your browser session cookie. They work, and they can be useful if a human coach writes your plan there. They are unofficial and break when the session expires or the site changes. Our guide on connecting TrainingPeaks to Claude goes into the tradeoffs.
5. Claude skills for cycling
A Claude skill is a packaged set of instructions Claude loads when relevant. People have published cycling-coach skills that encode a periodization method, a plan template and a set of workout formats.
A good skill makes Claude a more consistent plan writer. It does not give Claude any data. A skill plus a guessed FTP still produces a well-formatted plan built on a guessed FTP. Use one alongside a data connection, not instead of it.
6. A hosted connector: athletedata
athletedata runs a hosted MCP server: one personal URL you add to Claude, ChatGPT, Cursor, Perplexity or another MCP client. You connect your platforms once on a dashboard and the model can read them all through the same connector.
For cyclists, the sources that matter are Garmin, Wahoo, Intervals.icu, TrainingPeaks, Zwift, Rouvy, MyWhoosh, TrainerRoad, Hammerhead Karoo, COROS, Polar and Suunto, plus recovery data from Oura, WHOOP, Apple Health and others if you want the model to weigh last night's sleep against today's session. In total 39 apps are queryable over MCP. It also writes back, which is the next section.
What a Claude cycling coach can do once it reads your rides
This is where the conversation changes. Here is what the athletedata connector exposes that matters on a bike.
Your real FTP and power curve
The power curve tool returns your best average power over 1, 5, 10, 20, 30, 45, 60 and 90 minutes for a 30-day, 90-day, one-year or all-time window. Where a ride has a per-second stream, the peak is a true rolling best found anywhere inside the ride, so a hard 20 minutes buried in a long ride counts. You do not need to have recorded a test as its own activity.
From that curve the model can see whether your threshold has moved. If you have done a proper test (a ramp, a 20-minute test, a lab test), you can tell Claude your FTP and it stores it with the set_ftp tool as your confirmed value. From then on, zones, intensity factor, TSS and every workout target use that number, and the automatic estimate never overwrites it. That matters if you mostly ride easy, because a curve built only on zone 2 rides tends to underestimate threshold. Our guide on FTP versus critical power explains why the two can disagree.
Fitness, fatigue and form
The model can read your current chronic load (fitness), acute load (fatigue) and form, plus the trend. Ask whether you can handle a hard weekend and it answers from the number, not from your feeling about the number. It knows when today has no recorded ride yet, so it will not tell you your fitness is falling at 8am.
Rep by rep interval breakdown
For a structured session, the model can pull the per-rep table: average power, heart rate and cadence for every work and recovery segment. This is where fade shows up. "Did my threshold reps hold up better than three weeks ago?" becomes a comparison of two tables instead of two memories. If your rides come through Zwift, our Zwift MCP guide shows what that looks like on indoor sessions.
Intensity distribution
The intensity distribution tool splits your endurance time into easy, moderate and hard, overall and week by week, for any window up to a year. "Am I actually training polarized during this build?" gets a direct answer with percentages, which is exactly the question the prompt-pasting approach cannot answer.
Writing the workout, with real watts
Once the model has read your data, it can act on it.
- Intervals.icu calendar: create, move or delete a structured workout. Intervals.icu then syncs it to the devices it supports.
- TrainingPeaks calendar: create, edit, move or delete a planned session, with the intervals landing as TrainingPeaks' own structured steps. If a human coach writes your plan there, the tool is built to add sessions only when you explicitly ask.
- Straight to a device: push a structured workout to Garmin, COROS, Apple Watch (rides and runs, delivered through the athletedata iPhone app) or directly to Zwift for rides and virtual rides.
Cycling power targets resolve to absolute watts using your FTP when it is known. So the sweet spot session from the opening lands on your head unit as 202-214 watts, computed from 230, not from the 250 you remembered. For the Garmin side specifically, see how pushing workouts to a Garmin watch works.
Example prompts that work
Once connected, short prompts do the work long context documents used to do. A few that cyclists use:
- "Look at my power curve for the last 90 days against the year before. Has my FTP moved, and where on the curve did I gain or lose?"
- "What is my fitness, fatigue and form today? I want to do a hard group ride Saturday and a long ride Sunday. Is that sensible?"
- "Compare the reps from my last two 3x15 sweet spot sessions. Did power hold better, and how did heart rate behave?"
- "What was my easy, moderate and hard split over the last six weeks? Am I riding too much tempo?"
- "Build me a 75-minute VO2 session for Thursday, 5x4 minutes at 110-115% of FTP, and push it to my Garmin."
- "I did a ramp test on Zwift today and got 241. Set that as my FTP and update the workouts on my calendar this week."
- "My last three long rides faded in the final hour. Check power and heart rate across those hours and tell me whether it looks like pacing or fueling."
Notice none of them include numbers about you. The model fetches those.
Claude vs ChatGPT as a cycling coach
Both models handle cycling physiology well, and with the same MCP connector they read the same rides, the same curve and the same fitness numbers. The practical differences are about access, not intelligence.
Claude supports MCP connectors in its apps and in Claude Code, and athletedata is listed in Anthropic's Claude Connectors Directory. ChatGPT supports custom MCP apps on paid plans (Plus, Pro, Business, Enterprise and Education), added on chatgpt.com in a browser. Setup for each is a few minutes; our MCP page has the steps per client.
Use whichever one you already talk to every day. A cycling coach you open daily beats a slightly better one you forget about.
What it cannot do
Being honest about the limits saves you a bad surprise.
It cannot read Strava over our connector. Strava's terms prohibit it. If Strava is your only source, use Strava's own connector, or connect the device or platform that records your rides (Garmin, Wahoo, Zwift and others), which usually holds richer data anyway.
It does not push to Wahoo or Hammerhead head units directly. Direct device push covers Garmin, COROS, Apple Watch and Zwift. Wahoo riders can still get a structured workout to their unit by having Claude write it to Intervals.icu, which syncs onward on its side.
It does not coach you unprompted. On the MCP tier, the model answers when you ask. It will not message you on Tuesday morning because your form dropped. That is what the coaching tier is for.
It is only as good as the data it can see. A ride with no power meter gives it heart rate and speed, not watts. Recent history arrives when you connect a platform, but years of older rides may need an export upload to show up.
It is not a doctor. It reads training data. Chest pain on a climb is a medical question, not a power curve question.
Pricing
The MCP tier costs $9 per month or $69 per year and includes every tool described above: the analytics, the power curve, set_ftp, and the calendar and device writes. You bring your own Claude or ChatGPT.
The coaching tier is $39 per month. It adds a proactive coach that messages you on WhatsApp, Telegram or iMessage, a plan that adapts itself as your rides and recovery come in, and downloadable .zwo and .erg files for indoor training. If you want the coach without thinking about prompts, the AI cycling coach page shows what that looks like.
Both start with a 7-day free trial.
Putting it together: a Claude cycling coach setup
- Decide where your rides are recorded. If it is Strava only and you subscribe, start with Strava's own connector for reading. If it is Garmin, Wahoo, Zwift, Intervals.icu, TrainingPeaks or another platform, connect that source.
- Add one MCP connector to the assistant you already use, Claude or ChatGPT.
- Ask for your power curve over 90 days and over a year. Check the FTP estimate against your last real test.
- If you have a recent tested FTP, tell the model to set it. Every zone and workout target follows from that one number.
- Ask for your fitness, fatigue and form, and for your intensity split over the last six weeks. Now you know where you are before anyone prescribes anything.
- Have the model build the next session from that picture, with power targets in watts, and push it to your calendar or device.
- After the ride, ask it to compare the reps against the last time you did that session. That comparison is the feedback loop that makes the next prescription better.
Claude already knows how to coach a cyclist. Give it your rides and it stops coaching the rider you described and starts coaching the one who showed up.