A Claude skill that acts as a triathlon coach, pulling live data from intervals.icu via MCP and delivering per-discipline analysis (swim / bike / run analysed separately — never aggregated).
- Clone and install the MCP server:
git clone https://github.com/psca/intervals.icu-server cd intervals.icu-server npm install - Add to your
.mcp.json:{ "mcpServers": { "intervals-mcp": { "type": "stdio", "command": "npm", "args": ["run", "stdio"], "env": { "API_KEY": "your_intervals_icu_api_key", "ATHLETE_ID": "i12345" } } } }
Claude Code will spawn the server automatically. Then load the skill:
/plugin install triathlon-training@intervals-icu-coach
Skills added to Claude Desktop sync automatically to claude.ai web and appear on Claude mobile — this is the easiest path for cross-platform use.
- Build the extension:
npx @anthropic-ai/mcpb pack ./desktop-extension
- Double-click the generated
.mcpbto install - Enter your intervals.icu API key and Athlete ID in the install dialog
- Upload the skill files manually in Claude Desktop (Settings → Skills → Add skill), pointing at the
skills/triathlon-training/folder
Once uploaded via Desktop, the skill will appear in claude.ai and Claude mobile automatically. Note: MCP (live data) is only available on Desktop and claude.ai web — mobile shows the skill but cannot call MCP tools.
If you don't use Claude Desktop, you can connect directly via web:
- Go to Settings → Integrations → Add integration and enter:
https://intervals-mcp.anthonypoh1998.workers.dev/mcp - Authenticate via GitHub OAuth — you'll be prompted to enter your intervals.icu Athlete ID and API key on first connection
- Upload skill files manually via Settings → Skills
All skill files live in skills/triathlon-training/:
| File | Purpose |
|---|---|
SKILL.md |
Router: natural language trigger table, MCP tool map, data quality gates |
COACH.md |
Coach knowledge: how to respond to each type of request, tool sequences, response templates |
METRICS_REFERENCE.md |
Thresholds: CTL ramp rates, TSB by race distance, decoupling, VI, EF, SWOLF |
WORKOUT_PLANNING.md |
Write-operation guidance for add_or_update_event |
This skill requires the psca/intervals.icu-server MCP server — a TypeScript server that wraps the intervals.icu API and exposes it as MCP tools.
Notable tools beyond the standard intervals.icu API:
get_activity_weather— fetches GPS waypoints from the activity and queries Open-Meteo to return feels-like temperature, wind speed/direction, headwind/tailwind %, and precipitation. No API key required.get_activity_route— GPS route data sampled at regular intervals, useful for route and elevation analysis.
Two modes: local stdio (Claude Code / Claude Desktop) and remote Cloudflare Worker with GitHub OAuth (claude.ai Web) at https://intervals-mcp.anthonypoh1998.workers.dev/mcp.
Weather context is fetched automatically for every outdoor bike and run via the get_activity_weather MCP tool. It samples GPS waypoints every 30 minutes and computes temperature, feels-like, wind speed/direction, headwind %, and precipitation — all via Open-Meteo (free, no API key).
intervals.icu-coach/
├── skills/triathlon-training/
│ ├── SKILL.md
│ ├── COACH.md
│ ├── METRICS_REFERENCE.md
│ └── WORKOUT_PLANNING.md
├── desktop-extension/ ← pre-built .mcpb (drag-and-drop install)
├── .mcp.json ← Claude Code config (stdio, spawns npm run stdio)
└── .claude-plugin/
└── plugin.json ← marketplace plugin manifest