The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Intervals Icu MCP listing page.

A Model Context Protocol (MCP) server for Intervals.icu integration. Access your training data, wellness metrics, and performance analysis through Claude, ChatGPT, and other LLMs.
Originally based on eddmann/intervals-icu-mcp (MIT licensed). This project is an independent continuation with significant bug fixes and new features — see CHANGELOG.md for details.
62 tools spanning activities, activity analysis, activity messages, athlete profile, wellness, events/calendar, performance curves, workout library, gear, sport settings, and custom items — plus 4 MCP Resources (athlete profile, workout syntax, event categories, custom item schemas) and 7 MCP Prompts (training analysis, recovery check, weekly planning, and more). See Available Tools for the per-category breakdown.
Or for Claude Desktop, in 30 seconds:
Prefer Claude Code, Cursor, or ChatGPT? See Client Configuration. Want to run from source or with Docker? See Installation & Setup.
Install uv — it handles Python, dependencies, and execution in one tool. brew install uv on macOS/Linux, or powershell -c "irm https://astral.sh/uv/install.ps1 | iex" on Windows. From there, uvx fetches Python and the package automatically. Docker is also supported as an alternative.
Before installation, obtain your Intervals.icu API key:
i123456).Nothing to install separately if you use the recommended setup. uvx (which ships with uv) automatically downloads and caches the intervals-icu-mcp package the first time your MCP client launches it — just paste the config snippet from Client Configuration into your client and you're done.
Then point your MCP client at this checkout — see the From source snippet inside each client below.
Or create intervals-icu-mcp.env manually (same format as the .env above).
Then point your MCP client at the Docker image — see the Docker snippet inside each client below.
The server speaks MCP over stdio and works with any compliant client. Click a client to expand. If you followed Quick Start (uvx), use the first config block; if you used the source or Docker alternative above, use the matching variant inside the same collapsible.
Add to your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonFrom source (requires git clone + uv sync + uv run intervals-icu-mcp-auth):
Docker:
Register the server as a user-scoped MCP server:
Then in any Claude Code session, run /mcp to confirm intervals-icu is connected.
Add to ~/.cursor/mcp.json (or the project-local .cursor/mcp.json):
Restart Cursor and open Settings → MCP to verify the server is listed.
ChatGPT's custom MCP connector flow requires running the server over HTTP and exposing it via a tunnel, then registering the URL in ChatGPT's Developer Mode settings. See docs/chatgpt-connector.md for the full walkthrough, plan-tier requirements, and security notes.
Ask Claude to interact with your Intervals.icu data in natural language. A few starter prompts:
For the full catalogue of example prompts by category, see docs/examples.md.
62 tools, 4 resources, and 7 prompt templates. One-line summary below — full reference in docs/tools.md.
| Category | Tools | Summary |
|---|---|---|
| Activities | 12 | Query, search, update, delete, download activities |
| Activity Analysis | 8 | Streams, intervals, best efforts, histograms |
| Activity Messages | 2 | Read and post notes/comments/coach feedback on activities |
| Athlete | 3 | Profile, CTL/ATL/TSB analysis, and fitness chart time-series |
| Wellness | 3 | HRV, sleep, recovery metrics |
| Events / Calendar | 11 | Planned workouts, races, notes, ATP periodization (bulk ops supported) |
| Performance / Curves | 3 | Power, HR, and pace curves with zones |
| Workout Library | 2 | Browse workout folders and training plans |
| Gear Management | 6 | Track equipment and maintenance reminders |
| Sport Settings | 5 | FTP, FTHR, pace thresholds, and zones |
| Custom Items | 5 | User customizations: custom charts, fields, zones, dashboard panels |
Destructive tools are gated by the optional INTERVALS_ICU_DELETE_MODE env var (safe / full / none, default safe) — a server-side gate outside the model's reach, so unregistered tools can't be invoked. See docs/tools.md for the full mode table, response envelope, and TZ-buffer rationale.
The server runs over stdio by default — the right transport for local clients like Claude Desktop, Claude Code, and Cursor. HTTP and SSE transports are available for remote or hosted use.
⚠️ MCP has no built-in authentication — never expose an HTTP-mode server to an untrusted network without a tunnel (Tailscale, Cloudflare Tunnel) or an authenticating reverse proxy.
See docs/remote-deployment.md for transport flags and the full security model.
Issues and pull requests are welcome. Before opening a PR, run make can-release locally to match what CI enforces (ruff, pyright, pytest). For new tools, follow the pattern in .claude/skills/add-tool/SKILL.md and add a respx-mocked test file alongside the implementation.
MIT License - see the LICENSE file for details.
This project is not affiliated with, endorsed by, or sponsored by Intervals.icu. All product names, logos, and brands are property of their respective owners.