A Model Context Protocol server for Intervals.icu
Project description
Intervals.icu MCP Server
Model Context Protocol (MCP) server for connecting Claude with the Intervals.icu API. It provides tools for authentication and data retrieval for activities, events, and wellness data.
Requirements
- Python 3.10 or higher
- Model Context Protocol (MCP) Python SDK
- httpx
- python-dotenv
Setup
1. Install uv (recommended)
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Clone this repository
git clone https://github.com/mvilanova/intervals-mcp-server.git
cd intervals-mcp-server
3. Create and activate a virtual environment
# Create virtual environment with Python 3.12
uv venv --python 3.12
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate
4. Sync project dependencies
uv sync
5. Set up environment variables
Make a copy of .env.example and name it .env by running the following command:
cp .env.example .env
Then edit the .env file and set your Intervals.icu athlete id and API key:
API_KEY=your_intervals_api_key_here
ATHLETE_ID=your_athlete_id_here
Getting your Intervals.icu API Key
- Log in to your Intervals.icu account
- Go to Settings > API
- Generate a new API key
Finding your Athlete ID
Your athlete ID is typically visible in the URL when you're logged into Intervals.icu. It looks like:
https://intervals.icu/athlete/i12345/...wherei12345is your athlete ID
Usage
1. Configure Claude Desktop
To use this server with Claude Desktop, you need to add it to your Claude Desktop configuration.
- Run the following from the
intervals_mcp_serverdirectory to configure Claude Desktop:
mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env
- If you open your Claude Desktop App configuration file
claude_desktop_config.json, it should look like this:
{
"mcpServers": {
"Intervals.icu": {
"command": "/Users/<USERNAME>/.cargo/bin/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with-editable",
"/path/to/intervals-mcp-server",
"mcp",
"run",
"/path/to/intervals-mcp-server/src/intervals_mcp_server/server.py"
],
"env": {
"INTERVALS_API_BASE_URL": "https://intervals.icu/api/v1",
"ATHLETE_ID": "<YOUR_ATHLETE_ID>",
"API_KEY": "<YOUR_API_KEY>",
"LOG_LEVEL": "INFO"
}
}
}
}
Where /path/to/ is the path to the intervals-mcp-server code folder in your system.
If you observe the following error messages when you open Claude Desktop, include the full path to uv in the command key in the claude_desktop_config.json configuration file. You can get the full path by running which uv in the terminal.
2025-04-28T10:21:11.462Z [info] [Intervals.icu MCP Server] Initializing server...
2025-04-28T10:21:11.477Z [error] [Intervals.icu MCP Server] spawn uv ENOENT
2025-04-28T10:21:11.477Z [error] [Intervals.icu MCP Server] spawn uv ENOENT
2025-04-28T10:21:11.481Z [info] [Intervals.icu MCP Server] Server transport closed
2025-04-28T10:21:11.481Z [info] [Intervals.icu MCP Server] Client transport closed
- Restart Claude Desktop.
2. Use the MCP server with Claude
Once the server is running and Claude Desktop is configured, you can use the following tools to ask questions about your past and future activities, events, and wellness data.
get_activities: Retrieve a list of activitiesget_activity_details: Get detailed information for a specific activityget_activity_intervals: Get detailed interval data for a specific activityget_wellness_data: Fetch wellness dataget_events: Retrieve upcoming events (workouts, races, etc.)get_event_by_id: Get detailed information for a specific event
Development and testing
Install development dependencies and run the test suite with:
uv sync --all-extras
pytest -v tests
Running the server locally
To start the server manually (useful when developing or testing), run:
mcp run src/intervals_mcp_server/server.py
License
The GNU General Public License v3.0
Featured
Glama.ai
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mseep_intervals_mcp_server-0.1.1.tar.gz.
File metadata
- Download URL: mseep_intervals_mcp_server-0.1.1.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a1855570db3832fe50a65e75a210d360e7c367b1d487833be46335e68d38b39
|
|
| MD5 |
de913273a35a24a2b8c3655d3801264c
|
|
| BLAKE2b-256 |
95056d705c8a31b5c1e3413d705234b5f46cf6abe407c77bd84d877d5ece0da0
|
File details
Details for the file mseep_intervals_mcp_server-0.1.1-py3-none-any.whl.
File metadata
- Download URL: mseep_intervals_mcp_server-0.1.1-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3fe2472baeffe966cfabd80c9182fe644487582c3154efc9a1cd0316f011e25
|
|
| MD5 |
396f2f9cc1242cad0038f8ab6bc86a00
|
|
| BLAKE2b-256 |
fa591c96451c791a6afa31f0a5354ac24f42726955a5aa4c8fed347e28876cb9
|