Skip to main content

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

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

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

mseep_intervals_mcp_server-0.1.1.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

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

mseep_intervals_mcp_server-0.1.1-py3-none-any.whl (20.0 kB view details)

Uploaded Python 3

File details

Details for the file mseep_intervals_mcp_server-0.1.1.tar.gz.

File metadata

File hashes

Hashes for mseep_intervals_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9a1855570db3832fe50a65e75a210d360e7c367b1d487833be46335e68d38b39
MD5 de913273a35a24a2b8c3655d3801264c
BLAKE2b-256 95056d705c8a31b5c1e3413d705234b5f46cf6abe407c77bd84d877d5ece0da0

See more details on using hashes here.

File details

Details for the file mseep_intervals_mcp_server-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mseep_intervals_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a3fe2472baeffe966cfabd80c9182fe644487582c3154efc9a1cd0316f011e25
MD5 396f2f9cc1242cad0038f8ab6bc86a00
BLAKE2b-256 fa591c96451c791a6afa31f0a5354ac24f42726955a5aa4c8fed347e28876cb9

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