mcp-strava
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STRAVA_CLIENT_ID | No | Strava app Client ID, used by `mcp-strava auth` instead of prompting, and by the server when the token file lacks it | |
| STRAVA_TOKEN_FILE | No | Where the token file lives. Default ~/.config/mcp-strava/tokens.json | ~/.config/mcp-strava/tokens.json |
| STRAVA_CLIENT_SECRET | No | Strava app Client Secret, used by `mcp-strava auth` instead of prompting, and by the server when the token file lacks it | |
| STRAVA_REFRESH_TOKEN | No | A refresh token to start from when the token file has none |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_athleteA | Profile of the connected athlete: name, location, sex, weight, FTP, measurement preference, and their bikes, shoes and clubs. |
| get_athlete_statsA | Ride, run and swim totals for the connected athlete: recent (last 4 weeks), year-to-date and all-time count, distance, moving time, elapsed time and elevation gain, plus biggest ride and climb. Strava only counts activities whose visibility is Everyone. |
| get_athlete_zonesA | The connected athlete's heart-rate zones (bpm) and power zones (watts). |
| list_activitiesA | The connected athlete's activities as compact summaries: sport, start time, distance (m, km, mi),
moving and elapsed time, elevation gain, speed, heart rate, power, cadence, suffer score, kudos.
Strava returns newest first, but oldest first when |
| get_activityA | Full detail for one activity: description, calories, device, gear, laps, per-km splits (splits_metric), heart rate, power, photos and achievement counts. Map polylines are removed. |
| get_activity_lapsA | Laps of one activity, with distance, time, speed, heart rate, cadence and power per lap. Useful for interval sessions and races split by lap. |
| get_activity_zonesA | Time spent in each heart-rate and power zone during one activity. Strava may require a subscription for this data. |
| get_activity_streamsA | Second-by-second data recorded during one activity (heart rate, power, cadence, altitude, speed in m/s, position), evenly downsampled so every stream lines up point for point. Use it for pacing, heart-rate drift, or interval analysis. Each stream reports its original_size. |
| list_starred_segmentsA | Segments the connected athlete has starred, with distance, grade, elevation, location and their PR. |
| get_segmentA | Detail for one segment: distance, average and max grade, elevation, climb category, location, effort and athlete counts, and the connected athlete's PR (athlete_segment_stats). |
| list_segment_effortsA | The connected athlete's efforts on one segment, with elapsed time, heart rate, power and the activity each came from, so you can track progress on a climb or sprint. Strava may require a subscription for this data. |
| list_routesA | Routes the connected athlete created, with distance, elevation gain, type and estimated time. |
| get_gearA | One bike or pair of shoes: brand, model, nickname and total distance in meters. Gear ids (b... for bikes, g... for shoes) appear as gear_id on activities and in get_athlete. |
| list_clubsB | Clubs the connected athlete belongs to, with sport type, location and member count. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
Each tool targets a clearly distinct resource and action: athlete summary vs stats vs zones, activity list vs detail vs laps vs zones vs streams, and segment starred list vs detail vs efforts. The descriptions reinforce the boundaries, so an agent can reliably choose the right tool.
All tools use consistent snake_case with predictable get_/list_ verb prefixes followed by the resource name. Nested concepts such as get_activity_zones and list_segment_efforts remain readable and follow the same convention.
The 14 tools are well-scoped for a Strava read/analytics server. Each tool covers a meaningful slice of the domain without excessive surface area.
The surface covers the main read workflows: athlete profile, stats, zones, activities, streams, segments, routes, gear, and clubs. Minor gaps remain, such as no get_route or get_club detail after list_routes/list_clubs, and no activity upload or write operations, but agents can still handle most exploration tasks.