intervals-mcp-server
Advanced Intervals.icu MCP server for ChatGPT & Claude: Garmin-enriched metrics, all custom fields & streams, recovery insights, endurance performance analysis, OAuth. Community-maintained continuation of mvilanova/intervals-mcp-server.
Install / Use
claude mcp add futureweb -- npx -y github:futureweb/intervals-mcp-serverIf the server publishes to npm under a different name, use that package instead β check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of intervals-mcp-server
intervals-mcp-server scores 76/100 on our quality scale, 737th of 841 AI & Machine Learning skills we index.
Its MCP Server is 55 KB long, well organised into 26 sections with 13 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 11 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 2 days ago, so intervals-mcp-server is actively maintained.
- It is released under GPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
- Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
intervals-mcp-server compared with similar skills
All 4 of these similar skills score higher than intervals-mcp-server; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| intervals-mcp-server (this skill)by futureweb | 76 | 11 | 2d ago | MCP Server |
| headroomby headroomlabs-ai | 100 | 78.0k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 104.6k | 2d ago | MCP Server |
| Scraplingby D4Vinci | 100 | 90.0k | today | MCP Server |
| crawl4aiby unclecode | 100 | 86.4k | 1d ago | MCP Server |
Frequently asked questions
- How do I install intervals-mcp-server?
- Run
claude mcp add futureweb -- npx -y github:futureweb/intervals-mcp-server. The install tabs above show the steps for each supported agent. - Which AI agents does intervals-mcp-server work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is intervals-mcp-server safe to use?
- It is GPL-3.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is intervals-mcp-server still maintained?
- The repository was last updated 2 days ago, so intervals-mcp-server is actively maintained.
Skill content
View source on GitHubFutureweb Intervals MCP
Advanced Intervals.icu MCP server for ChatGPT, Claude and every MCP client: Garmin-enriched metrics, every custom field and stream, recovery insights and endurance performance analysis.
<!-- MCP Registry ownership proof for the PyPI package; keep on its own line. --> <!-- mcp-name: io.github.futureweb/intervals-mcp-server -->A Model Context Protocol server that lets AI assistants read and analyse your Intervals.icu training data the way a coach would: activities with every custom field and stream, intervals, wellness against personal baselines, thresholds and zones, planned-versus-executed workouts, climbs, dual power meters, best efforts, efficiency and fatigue resistance, nutrition and weight, training summaries and the calendar. It runs where you run it, talks only to the Intervals.icu API and exposes nothing that writes unless you enable it.
Continuation of mvilanova/intervals-mcp-server. The original project is no longer actively developed (last commit on 2 August 2026, 29 pull requests left open). This community-maintained fork carries it on: the useful open pull requests were reviewed and merged with their authors credited, the bugs fixed, and the server rebuilt around coaching analysis, Garmin data and safe remote access. Not affiliated with Intervals.icu or Garmin.
Companion project: the Garmin Intervals Bridge puts back the metrics Garmin strips from the files it sends to Intervals.icu (stamina, training effect, recovery time, VOβmax, running dynamics, sleep and HRV details β¦). This MCP is built to read all of it, but works just as well without the bridge.
Contents
- Highlights
- Works with the Garmin Intervals Bridge
- Tools
- Quick start
- Route-aware outdoor workouts
- Connect an AI client
- Sharing the server with friends
- Configuration
- Permissions and security
- Project status and roadmap
- Documentation
- Development
- Credits and license
Highlights
- Every custom item, resolved dynamically. Custom activity fields, interval fields, streams and wellness fields are read from your own definitions and reported with name, code, value and units. Nothing device-specific is hard-coded; null, NaN, zero and absent stay distinct, fields that do not belong to the sport are kept apart, and device loads are never mixed with the Intervals.icu load.
- Streams at full resolution. Any stream as summary, CSV or JSON, sliced by index or time, downsampled and paged, plus per-interval statistics of any stream (for example the stamina drop of each interval).
- Coaching analysis instead of raw dumps. One-call activity report, planned versus executed per step (also for deleted events and rides extended beyond the plan), climbs and descents, second power meter check, best efforts, similar intervals, repeated workouts over time, power-to-heart-rate efficiency, fatigue resistance, training load (acute:chronic ratio, monotony, strain), three-zone intensity distribution with polarization index, aerobic durability, load projection over the plan, recovery snapshot with 42-day baselines, wellness trends and correlations, nutrition and weight trends, weekly and monthly summaries. Statistics with their sample sizes; the interpretation stays with the coach.
- Token-efficient.
detail_level(compact,standard,full) andoutput_format="json"on the heavy tools, a compact tool catalogue (about 23k tokens for read and write, an optional core set of about 10k), 13 ready-made coaching prompts and method guides as MCP resources and throughget_guide. - Safe remote access. Built-in OAuth 2.1 server with "Continue with Intervals.icu"
sign-in, a consent page with per-connection permissions, client metadata documents with
private_key_jwt(ChatGPT), PKCE and RFC 9207. Streamable HTTP (/mcp) and SSE from one process. - Safe, verifiable writes. Workouts are validated before they are written,
dry_runshows the exact request, a second identical event on the same day is refused, and every write reads back what Intervals.icu stored and parsed. - Route-aware outdoor workouts. Steps that end on the lap button (
until_lap_press) let you start the next interval where the road suits it, e.g. at the foot of a climb, while the work steps stay timed. Confirmed on a Garmin Edge 1040 on the bike (see below). - Read-only by default. Tools are grouped into permission classes (
read,write,destructive,admin) enforced on the server; onlyreadis active unless you enable more. - Tested. More than 1,100 tests on synthetic data, ruff, mypy, CodeQL, pinned GitHub Actions, build and Docker smoke tests on every pull request.
Works with the Garmin Intervals Bridge
Garmin device βββΊ Garmin Connect βββΊ official sync βββΊ Intervals.icu activity (filtered FIT)
β β²
βββ Garmin Intervals Bridge βββββββββββ restores custom fields, streams, wellness
β
Futureweb Intervals MCP (this project)
β
ChatGPT / Claude / any MCP client
The Garmin Intervals Bridge writes the metrics Garmin filters out into the custom activity fields, custom streams and wellness fields you defined in Intervals.icu. The MCP reads those definitions at run time, so every restored value shows up in the tools automatically:
| Restored by the bridge | Where the MCP shows it |
| --- | --- |
| Training effect, EPOC, Garmin training load, recovery time, VOβmax, performance condition, stamina start/end, sweat loss, temperatures | get_activity_details, get_activity_report, get_training_summary, get_training_load (device loads apart from the Intervals.icu load), get_fueling_analysis (sweat loss per hour), get_activity_data_audit (which fields still hold a zero placeholder or no value) |
| Stamina and potential stamina, second power meter, grade-adjusted speed, gear selection, running dynamics streams | get_activity_streams, get_activity_intervals, analyze_workout_execution, analyze_climbs, compare_power_streams |
| Night SpOβ, respiration, sleeping HR, HRV details, Body Battery, sleep stages and stress, readiness, nutrition | get_wellness_data, get_recovery_snapshot, get_wellness_trends, get_nutrition_summary |
The MCP never contacts Garmin; the bridge is optional and other devices or sync tools that fill custom items get the same treatment. Worked examples and notes on reading the device metrics correctly: docs/GARMIN_BRIDGE.md.
Tools
67 tools; 52 of them only read. Write tools are marked β (write), β (destructive) or
β (admin) and are hidden unless their class is enabled. Most tools accept output_format="json"
and detail_level (compact first). Tools never take an API key: credentials come only from
the server environment.
The catalogue is kept small for the AI client: short descriptions that say when to use a tool,
a description and (where the values are fixed) an enum for every parameter, and text results
without a duplicate structured copy. Method details and the workout format live in MCP resources
(intervals://methods/<topic>, intervals://workout-syntax) and in get_guide(topic) for clients
that only call tools. tools/list is about 22.7k tokens at MCP_PERMISSIONS=read,write
(was 42.0k; cl100k); see Tool sets for a smaller set.
Activity analysis
| Tool | What it does |
| --- | --- |
| get_activity_report | Complete analysis in one call: overview with fueling (carbs used/ingested per hour, sweat loss, energy), weather (temperature, feels-like, wind, head/tailwind share) and Wβ² balance (max depletion, time below 75/50/25 % of Wβ²), plan vs execution or intervals, second power meter check, climbs, data-quality notes (source, upload and analysis times, recording stops, zero placeholders); include_route_history compares earlier activities on the same Intervals.icu route (time, power, W/kg, HR, weather, stamina); detail_level compact (core numbers, one context line and key findings, about 2-2.5k characters), standard or full |
| get_activity_data_audit | Provenance and data quality of one activity: source and file (Garmin sync, Garmin export or bridge upload, Strava stub), upload and analysis times, filtered duplicates, recording stops and gaps, FIT laps vs intervals and manual edits, device and sensor identity, streams usual for the sport but missing, per-stream coverage, custom fields with value / zero placeholder / none and what the Garmin Intervals Bridge could fill; without an activity, the per-sport data coverage of a period |
| analyze_workout_execution | Planned vs executed per step (duration, target adherence, time in range, HR response, fade, Pw:HR drift with the Intervals.icu decoupling sign, stamina). A step may span any number of laps; with device auto-laps step boundaries inside laps are placed at the intensity change (lap presses are kept), steps without a lap of their own are found between their neighbours, and a caveat with alignment_confidence says how far per-step results can be trusted. Open-ended targets (top zone) are lower bounds, distance steps are compared on distance. Steps are capped at their planned duration, longer intervals are split for the analysis, and ridin
Truncated for display β read the full file on GitHub.
Related Skills
headroom
78.0kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Agent-Reach
104.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu β one CLI, zero API fees.
Scrapling
90.0kπ·οΈ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
86.4kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key. Join our Discord https://discord.gg/VuxzM8mtf
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
