Skip to main content
Glama
moxus

Intervals.icu MCP Server

by moxus
README.md
# Intervals.icu MCP Server

This is a Model Context Protocol (MCP) server for [Intervals.icu](https://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                                    |
| :--------------------- | :--------------------------------------------- |
| `INTERVALS_ATHLETE_ID` | Your Intervals.icu Athlete ID (e.g., `i12345`) |
| `INTERVALS_API_KEY`    | 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`).

```bash
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)

```cmd
set INTERVALS_ATHLETE_ID=your_athlete_id
set INTERVALS_API_KEY=your_api_key
```

Note: This sets the variables for the current session only. To set them permanently, use the System Properties dialog or `setx`.

#### Windows (PowerShell)

```powershell
$env:INTERVALS_ATHLETE_ID="your_athlete_id"
$env:INTERVALS_API_KEY="your_api_key"
```

To set them permanently:

```powershell
[System.Environment]::SetEnvironmentVariable('INTERVALS_ATHLETE_ID', 'your_athlete_id', [System.EnvironmentVariableTarget]::User)
[System.Environment]::SetEnvironmentVariable('INTERVALS_API_KEY', 'your_api_key', [System.EnvironmentVariableTarget]::User)
```

## Usage

Run the server using the package:

```bash
npx @moxus/intervals-mcp
```

Or if running from source:

```bash
node dist/index.js
```

### Verify Command

You can verify your configuration and connection to Intervals.icu using the `verify` command. This will attempt to fetch your athlete profile.

```bash
npx @moxus/intervals-mcp verify
```

If 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:

```bash
gemini extension install https://github.com/moxus/intervals-icu-gemini
```

For more details, refer to the [Intervals.icu Gemini Extension repository](https://github.com/moxus/intervals-icu-gemini).

### 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):

```json
{
  "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:

```json
{
  "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.

TDQS

A3.6/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct resource and action (create, read, list, update, delete) with clear boundaries. No overlap; get vs list are well-differentiated.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., create_event, list_activities) using lowercase snake_case with no mixing of conventions.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues