Skip to main content
Glama

coros-workout-mcp

⚠️ Unofficial, community-led project — not affiliated with COROS. COROS now offers an official MCP server at coroslab/COROS-MCP. If you want a supported, first-party option, use that. This project remains an independent, community-built tool.

MCP server for creating COROS strength workouts via the Training Hub API. Lets Claude design workouts and push them directly to your COROS watch, then review what you actually did, set by set.

See the MCP in action: YouTube walkthrough

Disclaimer

This is an unofficial, community-driven project. It is not affiliated with, endorsed by, or connected to COROS in any way. For an official, COROS-supported MCP server, see coroslab/COROS-MCP.

This server communicates with the COROS Training Hub using a reverse-engineered, undocumented API that may change or break without notice. Use it at your own risk.

COROS is a trademark of COROS Wearables, Inc. This project is provided as-is with no warranty — see LICENSE for details.

Related MCP server: garmin-claude-mcp

Setup

cd coros-workout-mcp
npm install
npm run build

Usage with Claude Code

claude mcp add coros-workout -- node /path/to/coros-workout-mcp/dist/src/index.js

To use env var auth (avoids typing credentials in conversation):

claude mcp add coros-workout -e COROS_EMAIL=you@example.com -e COROS_PASSWORD=yourpass -e COROS_REGION=eu -- node /path/to/coros-workout-mcp/dist/src/index.js

Usage with Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "coros-workout": {
      "command": "/path/to/node",
      "args": ["/path/to/coros-workout-mcp/dist/src/index.js"],
      "env": {
        "COROS_EMAIL": "you@example.com",
        "COROS_PASSWORD": "yourpass",
        "COROS_REGION": "eu"
      }
    }
  }
}

Node.js 18+ required — this server uses native fetch() which was added in Node 18.

Troubleshooting fetch is not defined: Claude Desktop is a GUI app that doesn't inherit your shell PATH, so node binaries installed via version managers (mise, nvm, fnm, volta) won't be found. Use the full absolute path to your node binary in "command":

which node        # e.g. /Users/you/.mise/shims/node
node --version    # confirm it's 18+

Common locations:

  • mise: ~/.local/share/mise/installs/node/<version>/bin/node

  • nvm: ~/.nvm/versions/node/<version>/bin/node

  • fnm: ~/.local/share/fnm/node-versions/<version>/installation/bin/node

  • Homebrew: /opt/homebrew/bin/node

Tools

Tool

Description

authenticate_coros

Log in with email/password (or auto-login from env vars)

check_coros_auth

Verify current auth status

search_exercises

Search ~382 exercises by name, muscle, body part, equipment

create_workout

Build and push a strength workout to COROS

update_exercises

Fetch the latest exercise catalog from COROS and rebuild locally

list_workouts

List existing workouts

list_activities

List activities recorded by your watch, optionally filtered by date

get_activity_detail

Set-by-set breakdown of a recorded strength activity (reps, weight, time, rest)

Example conversation

"Search for chest exercises with bodyweight"

"Create a workout called 'Quick Push' with 4x15 Push-ups, 3x10 Diamond Push-ups, and 3x20 Decline Push-ups with 45s rest"

"How did my strength session on 16 March go, set by set?"

Updating the exercise catalog

The bundled exercise catalog (data/exercises.json) is a static snapshot. If COROS adds new exercises, use the update_exercises tool to refresh it. This fetches the latest exercises from the COROS API and i18n strings from the CDN, rebuilds the catalog, and reloads the in-memory cache — all in a single tool call. Your own custom exercises are skipped, so the catalog only contains COROS built-ins. Requires authentication.

Auth notes

  • Region: eu (Europe) or us (US). Defaults to eu.

  • Session conflict: Logging in via this API invalidates your COROS web app session, and vice versa.

  • Auth tokens are stored at ~/.config/coros-workout-mcp/auth.json (mode 0600).

Development

npm test           # Run unit tests
npm run test:watch # Watch mode
npm run build      # Compile TypeScript
npm run typecheck  # Type-check source and tests

Related MCP Connectors

  • Access COROS activity, training and health data, and manage training plans and workouts.

    https://mcpcn.coros.com/mcp
  • tri-train is a training platform for triathletes that syncs activities from Strava and Garmin and exposes them to Claude through a remote MCP server. Ask Claude how your last block went, why your run pace dropped, or whether you are fresh enough for Sunday's race, and it answers from your real data: activities with laps and grade-adjusted pace, weekly load and the performance management chart (CTL/ATL/TSB), sleep, HRV and resting heart rate, and your race calendar with predictions. Claude can also act: create and adjust planned workouts with structured intervals, push them to your Garmin watch, add races and write notes. Every change is journaled and can be undone. Read and write access are separate OAuth scopes, and the server enforces them on every call. Built and hosted in Switzerland by a triathlete; data stays on our own servers (Swiss revDSG / GDPR).

    https://tri-train.com/api/mcp
  • Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.

    https://stas.run/api/mcp
  • Talk to your own gym log. Reps is a free workout tracker for iPhone and Android; connect it to Claude, ChatGPT or any MCP client and ask about your workout history, personal records, exercise progression, weekly summaries, routines and training plan. The assistant can also save a new routine, edit one, save a whole plan, add custom exercises and exercise notes, always after you confirm in the chat. It cannot log a workout or delete your history. Requires a free Reps account created in the app; you sign in with a one-time email code.

    https://api.repsworkout.com/mcp

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Brings Garmin training data into Claude via Intervals.icu, enabling querying of activities, wellness, and planned workouts, as well as creating structured workouts that sync back to the Garmin watch.
    9
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects Garmin training data to Claude so it can read recent activities, wellness and recovery signals, and upcoming calendar events. It also lets Claude create, update, and delete structured workouts that sync through intervals.icu to Garmin Connect and onto the user's watch.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to retrieve recent activities and wellness data and to create, update, or delete structured workouts that sync through intervals.icu to Garmin Connect and the user's watch.
    MIT