Connect TrainingPeaks to Claude or ChatGPT With MCP
Give Claude and ChatGPT live access to your TrainingPeaks history, so you can interrogate TSS, CTL and your planned week instead of squinting at the PMC chart.


The PMC chart shows you the shape, not the reason
You open your Performance Management Chart on a Tuesday morning. Fitness is up, form is at minus 22, and fatigue has been climbing for two weeks. You already knew that from your legs. What the chart will not tell you is which sessions did it, whether the ramp is steeper than the last block you handled well, or whether the four workouts on this week's calendar are going to dig the hole deeper or start filling it in.
Those are all questions with answers sitting in your own data. They are just not questions a line chart is built to answer, and working them out by hand means exporting sessions and building a spreadsheet, which is exactly the kind of task you plan to do on Sunday and never do.
A language model is genuinely good at this sort of reasoning. The problem has always been that it cannot see any of it. That is the part MCP fixes.
What MCP does here
The Model Context Protocol is an open standard for letting AI assistants call external tools. A server advertises tools with names and schemas, the model decides when to call them, and structured results come back that the model can reason over. Claude, ChatGPT, Cursor and Perplexity all support it.
For training data the fit is unusually good, because the alternative is so bad. You do not want twelve weeks of sessions pasted into a context window where they go stale the moment you finish your next ride. You want the model to fetch a specific window when a specific question needs it, the same way you would click into a date range yourself.
Connecting TrainingPeaks means your completed sessions, their TSS values, your training load curves and your planned week all become things the model can look up. Ask "was last week harder than it looked?" and the answer comes from the actual numbers.
The two ways to connect, and why the difference matters
TrainingPeaks can be connected in one of two ways, and an account holds one or the other rather than both.
The standard bridge reads your completed activities and your planned sessions. It is read-only and it normalizes TrainingPeaks into the same shape as every other source, which is what makes cross-source questions work. It has one real limitation: it renders a planned workout as a step list, and it does not carry the free-text description your coach wrote on the session. If your coach types "keep this genuinely easy, we are backing off after Sunday" into the workout notes, the bridge does not see that sentence.
The community connector carries the descriptions and can write back. That means the model can read the coaching intent attached to a session rather than only its structure, and it can schedule a structured workout into your calendar rather than describing one at you.
For most people the bridge is enough. If you are coached by a human and the notes on your sessions carry real information, the second option is the one that matters, because a plan without its intent is a set of intervals with the reasoning removed.
One practical note on writing: TrainingPeaks Basic accounts can only schedule one day ahead. Today and tomorrow work, day after tomorrow does not. That is a TrainingPeaks account restriction rather than anything to do with the connector, and it applies equally to their own partner API. Pushing a full week back into your calendar needs Premium.
What you can actually ask
The tools that matter fall into two groups: your TrainingPeaks data, and analytics derived across everything you have connected.
From TrainingPeaks directly, the model can pull completed activities for any window, the detail of a single session, interval-by-interval breakdowns where the file supports it, and your planned workouts. On top of that sit the derived tools, which are the ones that change conversations: fitness and fatigue balance, power and pace curves showing your best efforts by duration, training trends, load balance across sports, readiness for today and injury-risk flags.
The useful questions are the comparative ones.
"How does this block compare to the one before my last good race?" This requires pulling two windows, computing weekly load for each, and comparing distribution rather than totals. It is a twenty minute spreadsheet job and a five second tool call.
"I did the sessions but my CTL is flat. Why?" Usually because completed TSS is running under planned TSS on the sessions that carry the load, which is invisible on a smoothed curve and obvious when you line up planned against actual session by session. If you want the underlying mechanics, the TSS guide covers how the score is constructed and where it misleads.
"Is my ramp rate reasonable?" A number by itself is not an answer. A number compared against your own history is. The model can pull every four-week ramp you have logged, find the ones that preceded a break or a bad race, and tell you where the current one sits in that distribution.
"Why does my normalized power keep drifting up on steady rides?" That one needs interval-level data rather than session summaries, which is why the breakdown tool exists. The normalized power guide explains what the metric is doing to your ride before you ask a model about it.
Setting it up
Five minutes, most of it waiting on an auth screen.
1. Connect TrainingPeaks. Sign in at athletedata.health and connect TrainingPeaks from the integrations page. Pick the bridge or the community connector depending on whether the written descriptions on your workouts matter to you.
2. Let the backfill run. History streams in over minutes rather than instantly. Unlike some device APIs there is no hard 30-day floor here: the backfill window reaches back five years, so a well-populated TrainingPeaks account arrives with the training history to answer year-over-year questions rather than a single month.
3. Copy your MCP URL. In the dashboard, use the Copy MCP URL button. It looks like https://mcp.athletedata.health/mcp?apiKey=sk_soma_.... The API key is embedded in it, so treat the whole URL like a password. It is revocable from the same page.
4. Add the connector. In Claude, open Settings, then Connectors, then Add custom connector. Name it athletedata, paste the URL, click Add. ChatGPT, Cursor and Perplexity have equivalent panels, and there are step-by-step pages for each in the MCP setup section.
5. Verify with something you cannot fake. Ask for your highest single-session TSS of the last 90 days. If the number matches TrainingPeaks, the connection is good. If the model hedges or produces something round and plausible, it is guessing and the connector is not attached.
Where this fits next to your coach
Worth being direct about, because it is the question people actually have: this does not replace a coach, and it is not trying to.
What it replaces is the analysis work that sits between you and your coach. The hour you spend building a spreadsheet before a check-in call. The Sunday evening where you try to work out whether the week went the way it was supposed to. The vague sense that something is off that you cannot articulate well enough to raise. Turning up to a coaching conversation with "my last four weeks averaged 12% under planned TSS and it is concentrated entirely in the long rides" is a better use of both of your time than "I have been feeling a bit flat".
If you are self-coached, the gap it fills is larger, because there is nobody else doing that analysis. The adaptive training plan guide covers what changes when the plan responds to what you actually did rather than what was written in January.
There is also a real limit here. The connector answers questions you ask it. It does not notice on its own that your HRV has been suppressed for six days and start a conversation about it, because nothing is running between your chats. That is the actual line between the two products: the MCP tier at $9/month or $69/year is for querying your own data in your own AI client, and the full coaching plan at $39/month adds a coach that watches continuously and messages you first. Both include a 7-day free trial.
The limits worth knowing about
Strava is not available over MCP. Strava's API terms do not permit serving Strava data to third-party AI platforms and tools, so it is excluded from the connector entirely. If TrainingPeaks is where your sessions live this changes nothing.
TrainingPeaks is one source among many. The same connection exposes Garmin, WHOOP, Oura, Hevy, Withings, Apple Health, Intervals.icu, Wahoo, COROS, Polar, Zwift and others. The cross-source questions are where this stops being a convenience and starts being something you cannot get anywhere else, because your sleep data and your training load live in different apps that will never talk to each other. The general guide to connecting training data to ChatGPT or Claude has the full list.
A model with tools can still be wrong. It is reading your real data, which removes the largest source of nonsense, but it will still occasionally reach past what the numbers support. Treat a surprising claim the way you would treat a surprising claim from a training partner: ask it which sessions it is looking at. With tools attached, it can tell you.
Multisport athletes should ask multisport questions. Load balance across three sports is a genuinely hard problem and one of the few places where per-sport tools beat a single number. The triathlon coaching guide goes into why a combined TSS figure hides interference between disciplines.
Putting it together: a TrainingPeaks MCP setup checklist
- Decide which connection you need. If a human coach writes notes on your workouts, take the community connector; if not, the bridge is simpler.
- Connect TrainingPeaks from the integrations page and let the backfill finish before you start asking historical questions.
- Copy your MCP URL from the dashboard and treat it as a credential.
- Add the connector to your AI client and confirm it reports as connected.
- Verify with a question that has one correct answer you can check, such as your highest single-session TSS in the last 90 days.
- Move to comparative questions, not lookups. "How does this block compare to the same phase last year?" is what the tooling is for; "what was my TSS yesterday?" is something the app already told you.
- If you plan to push sessions back into your calendar, check whether your TrainingPeaks account is Premium first, or scheduling past tomorrow will fail for reasons that have nothing to do with the connector.
The data has been sitting in your account for years, correctly recorded and almost entirely unexamined. The only thing missing was something willing to read all of it before answering.