The Intervals.icu
MCP server.
IntervalSync is a hosted Model Context Protocol (MCP) server for Intervals.icu. Point Claude, ChatGPT, Gemini, Grok, Mistral Vibe, Claude Code, Cursor, Zed, or anything else that speaks remote MCP at one URL, sign in with Intervals.icu, and your assistant can read your activities, intervals, per-second streams, wellness, and training calendar.
There is nothing to install and no API key to paste into a config file. Authorization is OAuth, and each person who connects links only their own Intervals.icu account.
One server address, whichever assistant you use.
MCP is the protocol assistants use to reach outside tools. A remote MCP server is one they reach over HTTP rather than one you run on your own machine — so the same connection works in a phone app, a desktop app, and a browser tab, without a process running at home.
That matters here because the alternative to a connector is copying screenshots and numbers into a chat by hand. With the server connected, the assistant asks Intervals.icu for exactly the activity, range, or stream your question needs, at the moment you ask.
Training data is never stored here. It is read from Intervals.icu when an assistant asks and passed straight through. What IntervalSync keeps is your encrypted Intervals.icu credential and a minimal record of each request — tool name, a safe summary, outcome, and time.
Add it once per assistant.
Customize → Connectors → + → Add custom connector. Paste the server URL and leave the OAuth client ID and secret blank. Each step, and Claude Code.
On the web: Plugins → + → Add custom MCP server. Paste the server URL and choose OAuth. As of 14 October 2026, writes need a Business, Enterprise or Edu workspace and Pro reads only — see OpenAI’s page, and the ChatGPT guide for each step.
grok.com/connectors → New Connector → Custom. Paste the server URL and complete the IntervalSync sign-in. The Grok guide.
gemini.google.com → Settings → Connected Apps → Custom apps → Add a custom app. As of 14 October 2026, personal accounts in the US, 18 and over, with Keep Activity on — see Google’s page, and the Gemini guide for each step.
Connectors → + Add Connector → Custom MCP Connector. Paste the server URL and choose Connect. In the Vibe CLI, run /mcp add https://intervalsync.icu/mcp/v2 instead.
In ~/.cursor/mcp.json under mcpServers, add "intervalsync": { "url": "https://intervalsync.icu/mcp/v2" }, then complete the sign-in.
Settings → AI → MCP Servers → Add Server → Add Remote Server. Paste the server URL and complete the sign-in when Zed prompts you.
claude mcp add --transport http intervalsync https://intervalsync.icu/mcp/v2, then /mcp to sign in.
Use OAuth rather than an Intervals.icu API key, and do not paste credentials into an assistant. Each connected platform can be revoked individually from your IntervalSync settings.
Eighteen read tools, on every plan.
Which tools an assistant is offered depends on the plan and on what the account takes part in, and every tool is in one of the groups below. get_connection_status names every tool callable for the connection at that moment. Every list is paged, and a partial answer says so: date-range tools return a pagination block, and a response that had to be shortened carries an explicit omitted_items count rather than dropping rows silently.
| Tool | What it returns |
|---|---|
get_connection_status | Which capabilities the connection currently exposes, and every tool callable now |
get_athlete_profile | Athlete profile and current training metrics |
list_activities | Completed activities for a date range |
list_activity_fields | The catalogue of fields you can ask for, grouped by purpose |
get_review_protocol | Reviews to suggest and follow: weekly, a 42/90-day progress check, a block, one ride, readiness, an event |
get_training_context | What the athlete saved for all their assistants: goal, events, constraints, preferences, notes |
get_activity | Full summary and metadata for one activity |
get_activity_detail | Coaching view: summary, up to 100 intervals, group roll-ups |
get_activity_interval_stats | Interval-by-interval execution, compact or every raw field |
get_training_summary | Weekly, monthly and total distance, time, load, elevation, zone time |
get_activity_streams | Time-series streams, aggregated to any resolution or raw |
get_activity_blocks | Steady-state efforts detected from the power trace, with drift |
get_climb_segments | Sustained climbs from the elevation trace, with gradient and VAM |
get_power_curves | Best power at standard durations over a date range, or two compared, with CP, W′ and Pmax |
get_power_durability | Best power fresh and after your kJ thresholds of work, for one ride or a date range |
list_planned_workouts | Calendar events and planned workouts, soonest first, paged |
get_wellness | Sleep, resting HR, HRV, fatigue, notes, nutrition — newest first, paged |
list_sport_settings | Sport-specific zones and threshold values |
On Free, after the trial, each tool that reads Intervals.icu has one data pull per UTC day. Tools that answer from IntervalSync alone, such as list_activity_fields, get_review_protocol and get_training_context, are not counted.
Three more tools work on every plan and write nothing to Intervals.icu. Each is used only when you ask for it or agree to it, and your IntervalSync portal shows your training context and removes any of it.
| Tool | What it does |
|---|---|
update_training_context | Replaces one part of your training context, which every assistant you connect reads, and returns what it replaced |
send_feedback | Sends a report of a problem or a suggestion to the people who build IntervalSync |
list_feedback | Your reports and the replies to them |
Four write tools, in the trial, on Pro and on a Coach plan.
These change your Intervals.icu calendar and wellness records. They are offered during a new account's 14-day full-access trial, on Pro, and on Coach 5 and Coach 15, which include everything in Pro for the coach's own account. Every write is confirmation-gated: you see the exact change before it happens, the tool refuses to run without that confirmation, and nothing else on the workout is touched.
| Tool | What it does |
|---|---|
create_planned_workout | Creates or updates one planned workout on your calendar |
update_planned_workout | Changes selected fields of one planned workout, keeping the rest |
delete_planned_workout | Deletes one planned workout and returns it in full, since Intervals.icu keeps no trash |
update_wellness | Updates selected wellness fields for one day, including nutrition |
Reading someone else's training, by their agreement.
An athlete can let a coach's assistant read their training, and the members of a team read each other's. Nobody is read until they have approved it, every read is read-only, and each one appears in the read athlete's history with the reader's name. Who pays, what is shared and what each side keeps when it ends.
Every account is offered one more tool, and a parameter on fourteen of the read tools. The list is empty until somebody shares with you: an athlete who shares with you as their coach, or a member of your Pro Team. Every athlete who shares with you is listed, and your Coach plan or trial sets how many of them you can read: when more share than it covers, it covers the ones who shared first, and a read of anyone else is refused.
| Tool | What it returns |
|---|---|
list_athletes | The athletes and teammates who share with your account, each with an opaque id, and for a teammate which parts of their training they share |
Fourteen read tools take that id as an optional athlete parameter: get_athlete_profile, list_activities, get_activity, get_activity_detail, get_activity_interval_stats, get_training_summary, get_activity_streams, get_activity_blocks, get_climb_segments, get_power_curves, get_power_durability, list_planned_workouts, get_wellness and list_sport_settings. Leave it out to read your own. No write tool takes it, and nobody's saved training context or feedback is shared.
An account in a coach's one-to-one space or a team gets six tools for the shared context, a brief and the updates members publish. None of them calls Intervals.icu, and the three that publish or remove words need the member's agreement to the exact change.
| Tool | What it does |
|---|---|
list_team_spaces | The shared spaces your account belongs to |
get_team_context | A space's current goal, focus, priorities and constraints, and a team's events |
list_team_updates | The updates members published, in order, with who wrote each |
post_team_update | Publishes an update, after you agree to the exact text |
update_team_context | Replaces the brief, after you agree to the exact change |
delete_team_update | Removes an update, after you agree |
Five tools for a paired bike computer, not available yet.
IntervalSync apps for the Hammerhead Karoo 3 and for Garmin Edge computers are in testing with a small group of athletes, and pairing a device is not open to other accounts. An account in the test with a device paired is offered five more tools. They read and write nothing at Intervals.icu, and an assistant saves a note for the device only when the athlete asks for it or agrees to it.
| Tool | What it does |
|---|---|
get_coach_notes | The comments, the ride brief and the ride targets saved for the device |
add_coach_comment | Saves a comment on a ride or a week for the device to show; the ten newest are kept |
set_ride_brief | Sets the brief for one day's ride, shown on that date only |
set_ride_targets | Sets upper limits for power and heart rate on one day's ride, which the device warns about during the ride |
list_ride_reports | The reports sent from the paired device after rides: the figures it measured and, if the athlete rated the ride, how they felt |
Hammerhead, Karoo and Garmin are trademarks of their owners. IntervalSync is an independent service and is not affiliated with, endorsed by, or sponsored by Hammerhead or Garmin.
When a self-hosted server is the better answer.
Open-source Intervals.icu MCP servers exist that you run yourself, and if you are comfortable running a process and keeping an API key in a config file, they are a perfectly good answer — free, inspectable, and yours.
This one is hosted, which buys three specific things. It works in assistants that can only reach a server over the internet, so ChatGPT on your phone and Claude in a browser both work with no machine of yours running. It authorizes with OAuth against Intervals.icu rather than a long-lived API key sitting in a file. And it is one URL to add rather than a runtime, a clone, and a config to maintain per device.
If you want the connection to keep working while your laptop is shut, that is the difference. Self-hosted or hosted compares this one with two open-source servers, from their own READMEs.
Free to start, and honest about the limit.
Every new account gets 14 days of full access — supported reads plus confirmation-gated writes, up to 300 calls to Intervals.icu per UTC day. After that, Free allows one Intervals.icu data pull per tool per UTC day, so a background calendar refresh does not consume the question you actually wanted to ask. Free is read-only.
Pro is $5 a month or $49 a year: reads and confirmed writes, up to 300 calls to Intervals.icu a day, as the terms set out. Coach 5 is $15 a month or $149 a year and Coach 15 is $29 a month or $289 a year: Pro for the coach, and reads of up to five or fifteen athletes who share with them, up to 800 or 1,800 calls a day. A team costs nothing of its own. Claude and Grok work on any paid plan of theirs.
ChatGPT is the one to check before you start. As of 14 October 2026, OpenAI’s page says a custom MCP server and full MCP — the part that carries write tools, so planned workouts and wellness updates — are for Business, Enterprise and Edu workspaces, and that ChatGPT Pro can connect one to read only; it does not mention Plus, Go or Free. Reading your training can work on a plan where writing back to Intervals.icu does not. OpenAI moves this, so read their page on connecting custom MCP servers for where it stands rather than taking our word for it.
Connect your training · Your AI as a training analyst · Pricing · How it works · Questions the charts do not answer · Support