intervals-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INTERVALS_API_KEY | Yes | Your Intervals.icu API key (available under Settings → Developer Settings). | |
| INTERVALS_ATHLETE_ID | Yes | Your Intervals.icu athlete ID (available under Settings → Developer Settings). |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_athlete_profileA | The athlete's profile: name, location, timezone, sex. |
| get_sport_settingsA | Training zones and thresholds per sport: FTP, LTHR, max HR, power, heart-rate and pace zones, sweet spot range. |
| list_activitiesB | Completed activities in a date range, newest first. |
| get_activityA | One activity by id, in the same shape as a list_activities entry. |
| get_activity_intervalsA | Laps and detected intervals inside one activity. |
| get_activity_streamsA | Time series inside one activity, downsampled. |
| get_wellnessB | Daily wellness and training-load history. |
| get_training_readinessA | Assess current form from CTL/ATL/ramp rate and recent HRV, coach-style. |
| get_training_load_chartA | A PNG chart of CTL (fitness), ATL (fatigue) and TSB (form) over time. Defaults to the last 90 days, the usual window for seeing a build and a taper. Use this when a shape -- a spike, a plateau, a steady climb -- says more than the numbers would on their own. |
| get_eventsA | Planned calendar entries: future workouts, races and goals. |
| get_best_effortsA | Best-effort curve for a sport: the athlete's peak sustained values. |
| get_best_effort_chartA | A PNG of the best-effort curve for a sport: HR, pace or power against duration or distance, log-scaled since a curve spans seconds to hours. |
| get_gearA | Registered gear such as shoes and bikes, with accumulated distance. Useful for mileage on a given pair of shoes. An empty list means the athlete tracks no gear. |
| list_workoutsA | The athlete's saved workout library and its folders. |
| intervals_get_rawA | Escape hatch: GET any intervals.icu v1 path and return it unshaped. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Every tool targets a distinct resource: profile, wellness, settings, activities (list vs single), intervals, streams, readiness, charts, events, best efforts, gear, workouts, and a raw fallback. Even closely related tools like get_activity_intervals and get_activity_streams are clearly separated by their descriptions.
The naming is mostly consistent with a get_/list_ + noun pattern. The notable outlier is intervals_get_raw, which reverses the convention, and minor singular/plural inconsistency between get_best_efforts and get_best_effort_chart, but the pattern is otherwise predictable.
15 tools sits right at the upper bound of a well-scoped set, and each tool maps cleanly to a meaningful part of the intervals.icu API. No redundant or filler tools; even the raw escape hatch serves a clear fallback role.
The surface thoroughly covers the read-only athlete analytics domain: profile, training load, wellness, activities with multiple detail levels, best efforts, charts, events, gear, and workout templates. The raw escape hatch closes any remaining gaps, making dead ends unlikely.