Intervals.icu MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Intervals.icu MCP Server list my activities from last week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Intervals.icu MCP Server
This is a Model Context Protocol (MCP) server for Intervals.icu. It allows you to interact with your Intervals.icu data, including activities, wellness data, and calendar events.
Configuration
You need an API Key and your Athlete ID from Intervals.icu.
Environment Variables
Variable | Description |
| Your Intervals.icu Athlete ID (e.g., |
| Your Intervals.icu API Key |
Setting Environment Variables
macOS / Linux
You can set environment variables in your terminal session or add them to your shell configuration file (e.g., .bashrc, .zshrc).
export INTERVALS_ATHLETE_ID="your_athlete_id"
export INTERVALS_API_KEY="your_api_key"To make them permanent, add the lines above to your ~/.zshrc or ~/.bashrc file and run source ~/.zshrc (or source ~/.bashrc).
Windows (Command Prompt)
set INTERVALS_ATHLETE_ID=your_athlete_id
set INTERVALS_API_KEY=your_api_keyNote: This sets the variables for the current session only. To set them permanently, use the System Properties dialog or setx.
Windows (PowerShell)
$env:INTERVALS_ATHLETE_ID="your_athlete_id"
$env:INTERVALS_API_KEY="your_api_key"To set them permanently:
[System.Environment]::SetEnvironmentVariable('INTERVALS_ATHLETE_ID', 'your_athlete_id', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('INTERVALS_API_KEY', 'your_api_key', [System.EnvironmentVariableTarget]::User)Related MCP server: intervals.mcp
Usage
Run the server using the package:
npx @moxus/intervals-mcpOr if running from source:
node dist/index.jsVerify Command
You can verify your configuration and connection to Intervals.icu using the verify command. This will attempt to fetch your athlete profile.
npx @moxus/intervals-mcp verifyIf successful, you will see your athlete details. If it fails, check your API key and Athlete ID.
Gemini Installation
The simplest way to install this MCP server for Gemini is using the extension:
gemini extension install https://github.com/moxus/intervals-icu-geminiFor more details, refer to the Intervals.icu Gemini Extension repository.
Manual Configuration (Alternative)
To add this MCP server to a CLI agent like gemini-cli (or similar agents that support MCP) manually, you typically need to configure the agent to spawn this server process.
Assuming gemini-cli supports an MCP configuration file (like mcp_config.json or command line arguments), you would add an entry for @moxus/intervals-mcp.
Example configuration (conceptual):
{
"mcpServers": {
"intervals": {
"command": "npx",
"args": ["-y", "@moxus/intervals-mcp"],
"env": {
"INTERVALS_ATHLETE_ID": "your_athlete_id",
"INTERVALS_API_KEY": "your_api_key"
}
}
}
}Or if you are running it locally from source:
{
"mcpServers": {
"intervals": {
"command": "node",
"args": ["/path/to/intervals-icu-mcp-ts/dist/index.js"],
"env": {
"INTERVALS_ATHLETE_ID": "your_athlete_id",
"INTERVALS_API_KEY": "your_api_key"
}
}
}
}Consult the documentation of the specific agent you are using for the exact configuration format.
Tools
get_athlete_profile: Get athlete details.list_activities: Get activities within a date range.get_activity: Get full details of an activity.list_wellness: Get wellness logs.list_workouts: Get workouts from the library.create_workout: Create a workout in the library.list_events: Get calendar events.create_event: Create an event (workout, note, etc.) on the calendar.update_event: Update an existing event.delete_future_event: Delete an event.
Available Tools
10 toolscreate_eventC
Create a new event on the calendar (must be in the future).
Inputs: start_date_local (required), name, category, description, +1 more.
create_workoutC
Create a new workout in the library.
Inputs: name (required), description, folder_id, type, +1 more.
delete_future_eventB
Delete a future event from the calendar.
Inputs: id (required).
get_activityA
Get FULL details of a specific activity by ID. Returns 100+ fields far beyond what list_activities provides, including: power (avg, weighted, FTP, W', joules), cadence, pace/GAP, zone times (HR/power/pace), performance metrics (efficiency factor, variability index, decoupling, polarization index), weather conditions, temperature, RPE/feel, intervals summary, achievements, gear, and tags. Always use this when answering questions about a specific activity.
Inputs: id (required).
get_athlete_profileB
Get the profile of the configured athlete.
Inputs: no named parameters.
list_activitiesA
List activity summaries for a date range. Returns ONLY compact identification data (id, date, name, type, distance, moving_time, elevation, heart rate, speed, training load, fitness/fatigue, calories, source). To analyze an activity in depth, you MUST call get_activity — it returns 100+ fields including power, cadence, zones, weather, performance metrics, intervals, and more.
Inputs: oldest (required), newest (required).
list_eventsA
List calendar events (planned workouts, notes, races, etc.) within a date range. Returns event details including workout descriptions/steps.
Inputs: oldest (required), newest (required).
list_wellnessA
List wellness data (sleep, fatigue, etc.) for the athlete within a date range.
Inputs: oldest (required), newest (required).
list_workoutsA
List all workouts in the athlete's library.
Inputs: no named parameters.
update_eventC
Update a future event on the calendar.
Inputs: id (required), start_date_local, name, description, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct resource and action (create, read, list, update, delete) with clear boundaries. No overlap; get vs list are well-differentiated.
All tools follow a consistent verb_noun pattern (e.g., create_event, list_activities) using lowercase snake_case with no mixing of conventions.
10 tools is within the ideal range for a domain-specific server, covering key operations on activities, events, workouts, wellness, and athlete profile without unnecessary bloat.
Covers CRUD for events and read for most resources, but missing update/delete for workouts and update/delete for activities. Minor gaps that agents can work around.
Maintenance
Related MCP Connectors
Connect Intervals.icu to Claude and ChatGPT: read training, plan workouts. Training never stored.
Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.
Ask your AI about your fitness: activities and data from Garmin, COROS, Strava, GPX and more
Your endurance training data in your AI assistant: activities, recovery, plan, workout edits.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to interact with Intervals.icu fitness tracking and wellness data, allowing users to fetch, filter, and group activities or health metrics. It provides structured summaries of workouts and physical well-being through natural language queries.4-
- FlicenseAqualityDmaintenanceEnables AI assistants to access and analyze intervals.icu training data including activities, fitness metrics (CTL/ATL/TSB), wellness stats, and calendar events. Supports natural language querying of athletic performance for training insights and workout planning.6-
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to access and manage intervals.icu training data, including workouts, wellness, and fitness trends, through natural language conversation.MIT
- AlicenseNot gradedqualityCmaintenanceConnects to Intervals.icu to let users query training data, create workouts, manage calendar events, and coach athletes through natural language in Claude Desktop.133 npmMIT