Skip to main content

A Model Context Protocol server for connecting Claude with the Intervals.icu API

Project description

Intervals.icu MCP Server

smithery badge

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.

If you find the Model Context Protocol (MCP) server useful, please consider supporting its continued development with a donation.

Requirements

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

  1. Log in to your Intervals.icu account
  2. Go to Settings > API
  3. 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/... where i12345 is your athlete ID

Updating

This project is actively developed, with new features and fixes added regularly. To stay up to date, follow these steps:

1. Pull the latest changes from main

⚠️ Make sure you don’t have uncommitted changes before running this command.

git checkout main && git pull

2. Update Python dependencies

Activate your virtual environment and sync dependencies:

source .venv/bin/activate
uv sync

Troubleshooting

If Claude Desktop fails due to configuration changes, follow these steps:

  1. Delete the existing entry in claude_desktop_config.json.
  2. Reconfigure Claude Desktop from the intervals_mcp_server directory:
mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env

Usage

1. Configure Claude Desktop

To use this server with Claude Desktop, you need to add it to your Claude Desktop configuration.

  1. Run the following from the intervals_mcp_server directory to configure Claude Desktop:
mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env
  1. 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
  1. 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 activities
  • get_activity_details: Get detailed information for a specific activity
  • get_activity_intervals: Get detailed interval data for a specific activity
  • get_wellness_data: Fetch wellness data
  • get_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

Intervals.icu Server MCP server

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

iflow_mcp_intervals_mcp_server-0.1.0.tar.gz (24.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_intervals_mcp_server-0.1.0-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_intervals_mcp_server-0.1.0.tar.gz.

File metadata

File hashes

Hashes for iflow_mcp_intervals_mcp_server-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7113f86cb08be50a47e5a705909c0f5038366eea672a7170afa42e9d2ffb70e1
MD5 fa120eeb9d68515f8d6e1b8deec72709
BLAKE2b-256 a4cdcabce5f8007039bfbab21d8bff874edc849a296e0d563cc0bcdfd05991d7

See more details on using hashes here.

File details

Details for the file iflow_mcp_intervals_mcp_server-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for iflow_mcp_intervals_mcp_server-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 816a3799d882d31ba3f8701291e0fbde9bacf048078c8ac1726d79f518b50216
MD5 d7892af6e0996ac23cefd695bbd2f101
BLAKE2b-256 621f7fc18a644c409e69e67f0180628d65fa4b289d02585543d0d649a7974022

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page