Strava

Strava

Integration

Direct access to your Strava activities, athlete profile, and rollup stats

Tier-1 integration with Strava. Lists recent activities, fetches activity details, returns athlete profile, and pulls year-to-date and all-time rollup stats. Designed to be composed by fitness and training agents, but also chattable directly for quick "how was my week" or "what did I ride last Saturday" questions.

MCP Server URL

https://mcp.q5m.ai/strava/

How to connect

  1. 1. Copy the URL above
  2. 2. Paste it into Claude Chat, ChatGPT, Claude Code, or any MCP client
  3. 3. Sign in to q5m when prompted to authorize

Tools (16)

get_athlete

Fetch the authenticated athlete's profile: name, home city, sex, weight, FTP, measurement preference, and athlete id. Call this once per conversation when you need the athlete id for get_athlete_stats.

get_athlete_stats

Fetch rollup totals for the authenticated athlete: recent (last 4 weeks), year-to-date, and all-time — split by ride, run, and swim. Requires the athlete's numeric id from get_athlete. Strava only allows this endpoint for the authenticated user.

get_athlete_koms

List the athlete's KOM / QOM and top-10 segment efforts. Each entry is a segment effort with its segment summary, elapsed time, and kom_rank / pr_rank. Requires the athlete's numeric id.

list_activities

List the authenticated athlete's recent activities with summary fields (name, sport_type, start time, distance, moving time, elevation, average speed/HR/power). Bound the window with ``after`` and ``before`` as ISO 8601 strings: a date like '2026-04-11' or a datetime like '2026-04-11T14:00:00'. Always anchor on Today's date from get_instructions when interpreting 'this week', 'last weekend', etc., rather than computing Unix timestamps yourself. Results are paginated with ``per_page`` capped at 200.

get_activity

Fetch the full detail for a single activity by numeric id. Returns summary fields plus description, calories, device, gear, map polyline, segment efforts, splits, and laps. Use list_activities first to find the id.

get_activity_streams

Fetch time-series streams for an activity: heart rate, power, cadence, altitude, velocity, temperature, latlng, distance, grade, time. Streams are parallel arrays, one value per sample. Use sparingly: a 3-hour ride has thousands of points. Prefer a single call with multiple keys over many single-key calls.

get_activity_zones

Fetch HR and power zone distribution for an activity: how much time was spent in each zone. Returns one entry per zone type (heartrate, power), each with a ``distribution_buckets`` list.

update_activity

Update editable fields on an existing activity: name, description, sport_type, gear_id, commute, trainer, hide_from_home. Only pass fields you intend to change. Confirm the exact payload with the user in chat before calling — this is a write that is visible to followers. Requires the activity:write scope.

list_routes

List routes the athlete has built on Strava. Returns name, distance, elevation_gain, estimated_moving_time, and whether starred. Use get_route for full detail and map polyline.

get_route

Fetch full detail for a single route: summary fields plus the map polyline and the list of segments the route crosses.

explore_segments

Find popular segments inside a geographic bounding box. Pass sw_lat, sw_lng, ne_lat, ne_lng. Activity type is 'riding' or 'running'. Optional climb category filters (0-5) are ride-only.

list_starred_segments

List segments the athlete has starred. Use to find 'favorites' the user cares about for repeat efforts and KOM hunting.

get_segment

Fetch full detail for a segment by id: distance, grade, climb category, effort and athlete counts, star count, map polyline, and the fastest recorded times (xoms).

get_gear

Fetch gear detail (bike or shoe) by id. Gear ids come from the ``bikes`` and ``shoes`` arrays on the athlete profile, or from an activity's ``gear_id`` field.

reassign_gear_on_activities

Bulk-swap gear_id on recent activities — helper for the 'retire my old gear and move everything onto the new one' flow. Strava's API has no endpoint to retire gear itself, but this walks activities in an [after, before] window and reassigns any that currently use ``old_gear_id`` to ``new_gear_id`` (or clears them when new_gear_id is 'none'). Defaults to ``preview=True``: returns the list that would change without writing. Call again with ``preview=False`` only after the user has explicitly confirmed the list in chat. Writes are visible to followers and require the activity:write scope.

save_profile

Save or update profile notes scoped to the Strava integration. Use for FTP, resting HR, preferred units, typical training week, target events, and gear the user cares about. Call get_agent_instructions first.

Open the platform to connect Strava

Platform