Skip to main content
Glama
OneMoeLine

Intervals.icu MCP Server

by OneMoeLine

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
INTERVALS_API_KEYYesYour Intervals.icu API key
INTERVALS_BASE_URLNoOptional. API root, for pointing the client at a local fake server. Defaults to https://intervals.icu/api/v1.https://intervals.icu/api/v1
INTERVALS_ATHLETE_IDYesYour athlete ID, e.g. i12345

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_athleteA

Get the athlete profile: identity, physiology and account info. Returns a compact subset by default - pass fields ["sportSettings"] for per-sport FTP, thresholds and zones (~10 KB), or ["*"] for everything including per-vendor sync configuration. Credential fields are always withheld, and email and date of birth are available only on explicit request.

get_athlete_profileB

Get public profile info for the athlete (name, bio, location, etc.).

list_activitiesA

List activities for a date range. Returns a compact summary of each activity by default; use fields to choose exactly what you need.

get_activityB

Get detailed information about a specific activity by its ID. Returns a compact summary by default; pass fields for other metrics.

search_activitiesC

Search for activities by name or tag.

get_activity_intervalsA

Get the lap/interval breakdown for an activity. Each lap carries 84 fields, so a compact subset is returned by default; fields applies to the individual laps inside icu_intervals and icu_groups.

get_activity_streamsA

Get time-series data streams for an activity (power, HR, cadence, speed, altitude, GPS, etc.). Streams are large, so each channel is downsampled to 500 evenly spaced points by default. Pass types to fetch only the channels you need, and raise max_points only when you genuinely need finer resolution.

get_activity_power_curveB

Get the mean maximal power curve for a specific activity.

get_activity_best_effortsA

Find best efforts within an activity - e.g. peak 5-min power, fastest 1km. Requires a stream to measure and exactly one of duration or distance.

get_activity_weatherC

Get the weather summary for an activity.

get_power_curvesA

Get the athlete's best mean maximal power curves across activities of one sport. secs and values on each curve are the curve itself. The bulk activities lookup map is omitted unless you pass fields ["*"].

list_wellnessA

List wellness records for a date range: fitness model (CTL/ATL), HRV, resting HR, sleep, weight, mood and the other subjective scores.

get_wellnessB

Get the wellness record for a specific date.

update_wellnessA

Update the wellness record for a specific date. Only supply the fields you want to change.

list_eventsA

List events on the athlete's training calendar for a date range. Returns a compact summary of each event by default, omitting the structured-workout document; pass fields to change that.

get_eventA

Get a specific calendar event by ID. Returns a compact summary by default - pass fields ["*"] (or name workout_doc) to get the structured workout.

create_eventB

Create an event on the athlete's training calendar (planned workout, race, note, etc.).

list_workoutsB

List all workouts in the athlete's workout library.

get_workoutB

Get a specific workout from the library by ID.

list_gearA

List all gear (bikes, shoes, etc.) for the athlete.

list_routesB

List saved routes for the athlete.

get_routeC

Get a specific route by ID.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target distinct resource/action pairs, especially the many activity-specific getters. The main overlap is between get_athlete and get_athlete_profile, which could be confused despite descriptions clarifying public versus full athlete data.

Naming Consistency5/5

Tool names consistently use snake_case verb_noun patterns such as get_event, list_activities, create_event, and update_wellness. The use of search_activities instead of list_activities is semantically appropriate rather than a naming inconsistency.

Tool Count4/5

With 22 tools, the surface is slightly heavy but reasonable for a sports-training API covering activities, streams, intervals, wellness, events, workouts, gear, and routes. Most tools correspond to distinct operations, though some activity-detail tools could feel numerous.

Completeness3/5

The server covers reading and analyzing activities, wellness, events, workouts, gear, and routes, plus a few write operations. However, notable gaps exist: no update/delete for events, and no create/update/delete for workouts, gear, or routes, limiting lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessNo issues