Labsco
MCP SERVER

Intervals.icu

by mvilanova

Ask about your training — last week's rides, your power curve, tomorrow's workout — and edit the calendar.

Health, Fitness & Wearables
Summary
It reads and writes — the calendar tools are what make it more than a dashboard.

Most fitness integrations stop at reading. Here planned events can be created, updated, deleted individually or cleared across a date range, so a conversation about restructuring next month's training block ends with the calendar changed. Raw streams and power curves are on the read side, which is where the analysis questions actually get answered.

What it is

An Intervals.icu bridge for Claude and ChatGPT: activities, events, wellness data, power curves and custom items.

What you get
  • get_activities, get_activity_details, get_activity_intervals and get_activity_streams — the list, one activity in detail, its intervals, and raw streams like power and heart rate
  • get_athlete_power_curves — best power for the durations and periods you choose
  • get_wellness_data — the wellness side of the record
  • get_events, get_event_by_id, add_or_update_event, delete_event and delete_events_by_date_range — planned workouts, races and notes, created, changed or cleared
  • get_custom_items, get_custom_item_by_id, create_custom_item, update_custom_item and delete_custom_item — charts, custom fields and zones
  • An SSE mode that exposes /sse and /messages/ for ChatGPT's custom MCP connectors
Requirements

Python 3.12 or higher and uv. Two values in a .env file: API_KEY from Intervals.icu Settings > API, and ATHLETE_ID, which is the i-prefixed identifier in your Intervals.icu URL. Register with Claude Desktop through mcp install, or write the config by hand — on Windows use the full path to uv.exe and double backslashes. For ChatGPT, start it with MCP_TRANSPORT set to sse and expose the port publicly.