Intervals Icu MCP vs Race Calendar F1
A side-by-side look at the Intervals Icu MCP and Race Calendar F1 MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Intervals Icu MCP for sports work as a local process; choose Race Calendar F1 for sports. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Intervals Icu MCP when
- You need dedicated capabilities in the Sports domain.
- You prefer a local stdio subprocess transport.
- You have the keys it needs:
INTERVALS_ICU_API_KEY, INTERVALS_ICU_ATHLETE_ID. - You want tools like
icu_get_recent_activities, icu_get_activities_by_date, icu_get_activity_details.
RChoose Race Calendar F1 when
- You need dedicated capabilities in the Sports domain.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | R Race Calendar F1 | |
|---|---|---|
| Category | Sports | Sports |
| Quality signal | 63/100 · Good | 38/100 · Fair |
| Install command | Confirmed | Not confirmed yet |
| Transport | Local subprocess (stdio) | — |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | INTERVALS_ICU_API_KEYINTERVALS_ICU_ATHLETE_ID | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 103 | — |
| Directory activity | 3 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 67 | Not listed |
| Full listing | View Intervals Icu MCP | View Race Calendar F1 |
Tools & capabilities
Intervals Icu MCP tools 67
icu_get_recent_activitiesList the athlete's most recent activities (default last 30 days) — LIGHT summary per item (distance, duration, power, HR, training load). Use for "what have I done recently?", "show last week's rides". For one specific activity by ID use icu_get_activity_details; to search by name/tag use icu_search_activities.icu_get_activities_by_dateList activities within an EXPLICIT date window (oldest..newest) — LIGHT summary per item. Unlike icu_get_recent_activities (anchored to today and capped at 100), this targets an arbitrary historical window and is bounded only by `limit`. Use for "all my runs from June to November 2025", reconstructing training history, or finding the oldest activity in a period. Dates are YYYY-MM-DD. Results are newest-first; if a window holds more than `limit` items, the oldest are dropped first, so widen `limit` (or narrow the window) to reach the very oldest.icu_get_activity_detailsFetch the headline SUMMARY of one activity — name, sport, date, distance, duration, training load, weather, plus all top-level metrics in a single JSON blob. Use for "how was my ride?", "tell me about activity X". For lap-by-lap or per-interval breakdown use icu_get_activity_intervals; for second-by-second time-series use icu_get_activity_streams.icu_search_activitiesSearch activities by name or tag, returning a LIGHT result list — id, name, type, date, distance, time only. Use this first for "find my X" queries. Only escalate to search_activities_full when you specifically need power, HR, training load, or intensity-factor data on the matches (heavier payload).icu_search_activities_fullSearch activities by name or tag, returning FULL Activity objects with power, HR, training load, intensity factor, normalized power, weather — every metric per result. Heavy payload. Use only when the lighter search_activities won't tell you what you need (e.g. "find my threshold rides with NP above 250W").icu_get_activities_aroundFetch the activities chronologically before and after a reference activity (N each side). Use for "what did I do around this race?", training-context queries, progression comparisons.icu_update_activityUpdate an existing activity's metadata (name, type, trainer flag, RPE, feel, etc.). Only fields you pass are sent; everything else stays unchanged.icu_update_activity_streamsUpload raw time-series streams (power, HR, cadence, etc.) onto an existing activity. Destructive — overwrites existing stream data. Accepts JSON array or CSV. Different from get_activity_streams (READ).icu_bulk_create_manual_activitiesBatch-create manual activities (no device upload) with UPSERT on `external_id`. Existing activities with a matching external_id (set by the same OAuth app) are updated; activities without an external_id are always created new.icu_download_activity_fileDownload the original activity file. Downloads the ORIGINAL uploaded file (FIT, TCX, or GPX — whatever the device produced). Different from download_fit_file (forces FIT conversion) and download_gpx_file (forces GPX conversion). If `output_path` is set the file is saved there; otherwise the response embeds base64 content.icu_download_fit_fileDownload activity converted to FIT format (Garmin / most training platforms). Different from download_activity_file (original upload format) and download_gpx_file (GPX format).icu_download_gpx_fileDownload activity converted to GPX format (GPS devices, mapping software). Different from download_activity_file (original upload format) and download_fit_file (FIT format).- +55 more on the listing page
Race Calendar F1 tools
No tool names declared yet. Check the project README from the listing page.
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Intervals Icu MCP
{
"mcpServers": {
"intervals-icu-mcp": {
"command": "uvx",
"args": [
"intervals-icu-mcp"
],
"env": {
"INTERVALS_ICU_API_KEY": "YOUR_INTERVALS_ICU_API_KEY_HERE",
"INTERVALS_ICU_ATHLETE_ID": "YOUR_INTERVALS_ICU_ATHLETE_ID_HERE"
}
}
}
}
Race Calendar F1
No confirmed install command for Race Calendar F1 yet — follow the setup steps linked from its listing page rather than a guessed package name.