Intervals.icuCAUTION
Read/write MCP server for Intervals.icu — training data, planning, and structured workout generation.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
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.
[](https://github.com/hhopke/intervals-icu-mcp/actions/workflows/test.yml) [](https://glama.ai/mcp/servers/hhopke/intervals-icu-mcp) [](https://github.com/hhopke/intervals-icu-mcp/blob/main/LICENSE) [](https://github.com/hhopke/intervals-icu-mcp/pkgs/container/intervals-icu-mcp) [](https://github.com/sponsors/hhopke)
Overview
70 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 9 MCP Prompts (training analysis, recovery check, weekly planning, and more). See Available Tools for the per-category breakdown.
Quick Start
90f5aa2d264bOBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add intervals-icu-mcp --env INTERVALS_ICU_API_KEY=${INTERVALS_ICU_API_KEY} -- None intervals-icu-mcp==0.0.0Exposed tools (2)
2 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
dummy_tool | read | return |
inspect_config | read | Test tool that inspects the config object from middleware. |
Trust audit
CAUTIONgrade C · trust 79/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (6)
- Validate enum-style parameters at the boundary with `validation_error` responses **before** the API call. Don't let the API tell the user their input was wrong if we can catch it cheaper upstream.
mod = importlib.import_module(f"intervals_icu_mcp.tools.{tool_path}")cloudflared tunnel --url http://127.0.0.1:8000
decoded = base64.b64decode(response["data"]["content_base64"])
- `event_type` was documented as an eight-value list — `Ride`, `Run`, `Swim`, `Walk`, `Hike`, `VirtualRide`, `VirtualRun`, `Other` — everywhere a model could look: the parameter hints on `icu_create_e
docs/demo.gif
Gates applied: instruction_override, no_behavioural_pass.
90f5aa2d264bfull audit observations/trust-audit/mcp-server/hhopke__intervals-icu-2.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 90f5aa2d264b | CAUTION | C | 79 | first audit |
Questions
What is the Intervals.icu MCP server?
Read/write MCP server for Intervals.icu — training data, planning, and structured workout generation.
What tools does Intervals.icu expose?
2 in total: 2 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Intervals.icu safe to connect to an agent?
With care. The audit graded it C (79/100) and found 6 things worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does Intervals.icu need?
It reads ANTHROPIC_API_KEY and INTERVALS_ICU_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Intervals.icu run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as intervals-icu-mcp.
How current is this page?
The grade is for one exact copy of the source (90f5aa2d264b), read on 2026-10-08. The repository is watched and re-audited when it changes.