Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ROUVY_MCP_EXPORT_DIRNoAbsolute folder path that enables the export_activity_file tool, which saves an Activity's FIT file or its per-second records as CSV into that folder. Without it, the tool doesn't exist and rouvy-mcp writes nothing to disk besides the credentials file.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_activitiesA

List the rider's Rouvy Activities, newest first, as compact rows (id, title, type, start, moving time, distance, elevation, TSS, IF). Use the ids with the other tools.

get_activityA

One Activity's summary, with Rouvy's own numbers (they match the Rouvy app): times, distance, elevation, kcal, NP, IF, TSS, power peaks, min/max/avg power, heart rate, cadence and speed, %FTP, time in power and HR zones, laps and route segment results. Also the Rider settings used (FTP, weight, max HR, zones) from the Activity snapshot, which data exist, and a note for each value left out.

get_activity_intervalsA

Fixed-size splits of one Activity (every 5 min by default), from its per-second Activity file. For each split: start/end second, avg, NP and max power, avg power as %FTP, avg/max heart rate, avg cadence, avg speed, distance and climbing. %FTP uses the FTP from the Activity snapshot. A note says why any stat is left out.

get_window_statsA

Stats for one stretch of an Activity (e.g. a climb from 20:00 to 35:00), from its per-second Activity file: the same stats as one split of get_activity_intervals, plus the best efforts (peak powers for the durations that fit), the first half vs the second half, and HR:power decoupling between them. %FTP uses the FTP from the Activity snapshot. A note says why any stat is left out.

get_activity_streamsB

Downsampled per-second data of one Activity, from its Activity file, to chart or reason about: one array per field, each value the mean of one bucket of resolution_sec_used seconds from start_sec (the last bucket may be shorter). Units: power W, heart_rate bpm, cadence rpm, speed m/s, altitude m, distance m from the start. At most 500 points per field: a finer request is served at the smallest resolution that fits. A field the Activity doesn't have is listed in missing_fields; a bucket with no data is null.

list_workoutsA

List the rider's own Workouts in their Rouvy library (the plans, not the rides), newest first, as compact rows (id, name, duration, TSS, difficulty, tags, number of Steps). Use get_workout for the Steps.

get_workoutB

One of the rider's own Workouts: name, description, tags, visibility, duration, TSS, IF, difficulty, route, its Steps (steady, ramp or free ride, in % FTP, with an optional cadence range) and Cues (text at a time from the start). Also rider_ftp_w, the rider's current FTP in watts, to turn watts into % FTP.

create_workoutA

Create a Workout in the rider's Rouvy library, only when they ask for one. Steps are steady, ramp or free ride, in % FTP (use get_workout's rider_ftp_w to convert watts), each with an optional cadence range; repeat a block with a repeat Step. Private unless the rider asks for public. Returns the saved Workout as Rouvy has it. If it says the outcome is unknown, call list_workouts before trying again.

update_workoutA

Change one of the rider's own Workouts, only when they ask. Give only what changes: steps, when given, replace all Steps; every field left out (cues included) keeps its current value; the route is kept. A get_workout result can be edited and passed back as is. Warning: a Workout synced from another app (TrainingPeaks, Intervals.icu…) may be overwritten by that app's next sync. Returns the saved Workout.

delete_workoutA

Delete one of the rider's own Workouts from their Rouvy library, only when they ask, and check it's gone. Warning: a Workout synced from another app (TrainingPeaks, Intervals.icu…) may come back with that app's next sync. Returns the deleted Workout's id and name.

export_activity_fileA

Save one Activity to the rider's export folder: its Activity file as downloaded from Rouvy (fit), or its per-second records as CSV (csv). Overwrites an earlier export of the same Activity and returns the file's absolute path.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 11 tools

Disambiguation4/5

Each tool has a clearly distinct role, and the descriptions explicitly differentiate them (summary vs. fixed splits vs. arbitrary window vs. raw stream). The closest pair is get_activity_intervals and get_window_stats, which return the same stat family and can overlap if a window matches a split, but the fixed-vs-arbitrary distinction is spelled out well enough to choose correctly.

Naming Consistency4/5

Almost everything follows a consistent snake_case verb_noun pattern grouped by resource (activities, workouts), with get/create/update/delete_workout forming a clean CRUD set. The only wobble is get_window_stats, whose noun omits the 'activity' resource seen in every other activity tool.

Tool Count5/5

Eleven tools is well within the sweet spot and each one earns its place: four read tools for activity analysis, five for the workout lifecycle, one for export. No redundant or filler tools are present.

Completeness4/5

Workouts have full CRUD and activities have a rich read/analysis/export surface, so the main workflows are covered. Minor gaps remain: no standalone rider-profile/settings tool (FTP only surfaces via get_workout), no route listing to attach to a created workout, and no activity delete or route browsing.

Maintenance

ActivityMaintained
ResponsivenessResponsive