← Back to directory
I

Intervals.icu MCP Server

Community
Connect Claude and ChatGPT to the Intervals.icu API through MCP.
Category
Other #131 of 230
Stars
★ 377 Very popular
Transport
stdio (local process) · SSE
Runtime
Python 3.12+ · Prebuilt binary
Credentials
API key / credential required
License
GPL-3.0
Last commit
Tools
16
52FMRS · D

This third-party MCP server targets Intervals.icu users and covers training activities, wellness data, events, power curves, and custom items. The README documents stdio configuration for Claude Desktop and SSE configuration for ChatGPT, but no server manifest is cached. Because the toolset includes write and delete operations, protect the API key and carefully control data-modification access.

Strongest · Documentation 13/20 Weakest · Reliability 8/20

Reliability
8/20
Security and permissions
8/20
Maintenance
11/20
Documentation
13/20
Setup experience
12/20
Why each score
Reliability 8/20
The README specifies Python 3.12, the MCP SDK, dependencies, startup commands, a tool list, and a test command, so a normal startup path is plausible. However, no manifest, source files, CI workflow, or verifiable test coverage is supplied; handshake behavior, tool fidelity, error handling, and dependency control cannot be confirmed. This warrants a deduction and stays within the static-calibration cap of 12.
Security and permissions 8/20
The README places the Intervals.icu API key in environment variables and identifies the external API boundary; examples use placeholders rather than real secrets. However, the server exposes event and custom-item creation, update, and deletion tools without documented confirmation, granular permissions, input scoping, deletion safeguards, or data-flow/logging disclosures. Without source or manifest evidence, least privilege and secure failure behavior cannot be verified, so points are deducted. No explicit red-line risk is shown in the supplied material.
Maintenance 11/20
The repository is not archived, the README describes ongoing development, and it provides a main-branch update path and dependency synchronization instructions. It also states GPL-3.0 licensing, giving some ownership and legal clarity. There is no evidence of releases, commit cadence, issue response, dependency-update policy, or a security-response channel. Stars and open-issue counts are discovery signals only and add no points, resulting in a moderate score.
Documentation 13/20
The README covers runtime requirements, installation, environment-variable authentication, Claude Desktop and ChatGPT SSE configuration, Windows differences, the tool inventory, debug logging, testing commands, and troubleshooting. It is therefore fairly usable. It lacks per-tool parameters, return schemas, limits, rate or cost information, error semantics, permission boundaries, and verified execution results; the missing manifest also prevents capability cross-checking, so points are deducted.
Setup experience 12/20
The README gives an end-to-end path from installing uv and Python 3.12 through cloning, environment setup, dependency synchronization, and Claude or ChatGPT configuration, with macOS/Linux and Windows examples. The process remains dependent on local paths, environment variables, manual client configuration, Windows sandbox-path details, and a public tunnel such as ngrok for ChatGPT. No source, CI, or test evidence verifies the setup, so the score is conservative.

Static review · not runListed 2026-08-14

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkChanges third-party account data

Best for

  • Athletes who use Intervals.icu for training data.
  • Users who want to query and manage Intervals.icu data through Claude Desktop or ChatGPT.
  • Development or analysis workflows involving activity, wellness, event, and power data.

Not for

  • Users who do not use Intervals.icu.
  • Users unwilling to provide an Intervals.icu API key and athlete ID.
  • Read-only scenarios where event or custom-item write and delete operations are not wanted.

Required permissions

  • Requires an Intervals.icu API key and athlete ID.
  • Configuration includes INTERVALS_API_BASE_URL, ATHLETE_ID, API_KEY, and LOG_LEVEL.
  • Permissions cover reading activities, wellness data, events, and custom items; events and custom items also support creation, updates, and deletion.

Risks and side effects

  • The API key is sensitive and should not be exposed or committed to a repository.
  • The server includes event and custom-item deletion tools, so misuse can cause data loss.
  • ChatGPT SSE setup requires a public server URL or port forwarding; an unprotected public endpoint may broaden access.
  • Write operations can modify workouts, races, notes, and custom items in Intervals.icu.

Setup

Before you start

Runtime:Python 3.12+ · Prebuilt binary

INTERVALS_API_BASE_URL required Base URL for the Intervals.icu API, documented as https://intervals.icu/api/v1.
ATHLETE_ID required Your Intervals.icu athlete ID, visible in the URL when logged in (e.g. i12345).
API_KEY requiredsecret Your Intervals.icu API key, generated under Settings > API; treat as a secret.
Other optional settings (5)
LOG_LEVEL optional Log level for the server, set to INFO in the example config.
FASTMCP_HOST optional Host address the server listens on when running in SSE mode.
FASTMCP_PORT optional Port the server listens on in SSE mode, e.g. 8765.
MCP_TRANSPORT optional Transport mode; set to sse to enable the /sse endpoint for ChatGPT.
FASTMCP_LOG_LEVEL optional Log level when running in SSE mode, e.g. INFO.

Python 3.12 or higher, uv, the project dependencies, and Intervals.icu API credentials are required. Clone the repository, create a Python 3.12 virtual environment, run uv sync, copy .env.example to .env, and set API_KEY and ATHLETE_ID. For Claude Desktop, run mcp install src/intervals_mcp_server/server.py --name "Intervals.icu" --with-editable . --env-file .env, or add the server manually using the documented configuration example. For ChatGPT, start the server in SSE mode and configure its public /sse URL as a custom MCP connector.

claude_desktop_config.json
{"mcpServers":{"Intervals.icu":{"command":"/Users/<USERNAME>/.local/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"}}}}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "Intervals.icu": {
      "command": "/Users/<USERNAME>/.local/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"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add Intervals.icu -e INTERVALS_API_BASE_URL=https://intervals.icu/api/v1 -e 'ATHLETE_ID=<YOUR_ATHLETE_ID>' -e 'API_KEY=<YOUR_API_KEY>' -e LOG_LEVEL=INFO -- '/Users/<USERNAME>/.local/bin/uv' run --with 'mcp[cli]' --with-editable /path/to/intervals-mcp-server mcp run /path/to/intervals-mcp-server/src/intervals_mcp_server/server.py

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After configuring Claude Desktop and restarting it, check that the Intervals.icu server's tools like get_activities appear in the client's tool list and that a request for recent activities returns data; consult mcp-server.log if setup fails.

Troubleshooting

  1. Confirm Python 3.12 or higher is installed and uv sync has completed.
  2. Verify API_KEY and ATHLETE_ID in .env.
  3. If spawn uv ENOENT occurs, use the full path to the uv executable.
  4. On Windows, use double backslashes in JSON and edit the correct Claude Desktop configuration file.
  5. Restart Claude Desktop after configuration changes; if necessary, remove the old Intervals.icu entry and run mcp install again.
  6. For ChatGPT, confirm the server is running in SSE mode and that /sse is mapped to an accessible public URL.

Things to try

Once connected, you can ask your AI assistant things like:

  • List my recent activities
  • Show my upcoming events and races
  • Fetch my wellness data for the past few weeks
  • Create a new cycling workout event for next Sunday

Tools 16

get_activities read-only
Retrieve a list of activities.
get_activity_details read-only
Get detailed information for a specific activity.
get_activity_intervals read-only
Get detailed interval data for a specific activity.
get_activity_streams read-only
Get raw data streams, such as power and heart rate, for a specific activity.
get_athlete_power_curves read-only
Get best power curves for selected durations and time periods.
get_wellness_data read-only
Fetch wellness data.
get_events read-only
Retrieve upcoming events, such as workouts and races.
get_event_by_id read-only
Get detailed information for a specific event.
Show 8 more tools
add_or_update_event writes
Create or update an event, such as a workout, race, or note.
delete_event destructive
Delete a specific event.
delete_events_by_date_range destructive
Delete events within a date range.
get_custom_items read-only
Get an athlete's custom items, such as charts, custom fields, and zones.
get_custom_item_by_id read-only
Get detailed information for a specific custom item.
create_custom_item writes
Create a new custom item for an athlete.
update_custom_item writes
Update an existing custom item.
delete_custom_item destructive
Delete a custom item.

Use cases

Query past activities and activity details.
Analyze activity intervals, power, heart-rate streams, and power curves.
Fetch wellness data.
View, create, update, or delete workout and race events.
Manage athlete custom items.

Supported clients

Claude Desktop
ChatGPT

Listed from the project's documentation, not tested by this site.

Overview

Intervals.icu MCP Server is a Model Context Protocol server for connecting to the Intervals.icu API. It supports data access and management for activities, events, wellness data, power curves, and custom items.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 659 · Tools 11 Compare with this →

Source revision cb1fbcac8109 Data synced 2026-10-19 Read the FMRS scoring method