strava-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STRAVA_DATA_DIR | No | Directory for local Strava state. Defaults to ~/.config/strava-mcp. | |
| STRAVA_CLIENT_ID | Yes | Your Strava API application client ID. | |
| STRAVA_TOKEN_FILE | No | Optional path to the token cache file. | |
| STRAVA_CLIENT_SECRET | Yes | Your Strava API application client secret. | |
| STRAVA_REFRESH_TOKEN | Yes | Strava refresh token obtained from the OAuth flow. | |
| STRAVA_GRANTED_SCOPES | No | Comma-separated scopes granted by the user (optional but recommended). | read,activity:read,activity:read_all,profile:read_all |
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": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| strava_recent_activitiesB | List the authenticated athlete's recent Strava activities. |
| strava_athlete_profileA | Fetch the authenticated Strava athlete profile. |
| strava_activity_detailB | Fetch detailed data for one Strava activity. |
| strava_activity_streamsA | Fetch activity stream samples such as time, distance, altitude, heartrate, cadence, watts, and lat/lng. |
| strava_athlete_statsB | Fetch aggregate stats for a Strava athlete id. |
| strava_gear_detailA | Fetch detail for one Strava gear id. |
| strava_athlete_zonesA | Fetch the authenticated athlete's heart-rate and power zones. |
| strava_activity_zonesB | Fetch zone distribution for one Strava activity. |
| strava_activity_lapsA | Fetch laps for one Strava activity. |
| strava_rate_limit_statusA | Show Strava API rate-limit headers last observed by this MCP process. |
| strava_sync_activitiesB | Fetch bounded Strava activity history into the local ignored activity cache. |
| strava_cache_statusA | Show local Strava activity cache coverage and metadata. |
| strava_activity_summaryA | Summarize activities by day, Monday-start week, or month for a bounded date range. |
| strava_gear_usageA | Group activity mileage, hours, and elevation by gear id for service-interval audits. |
| strava_activity_searchB | Search bounded activity history by name, sport type, gear, distance, and elevation. |
| strava_export_activitiesA | Export bounded activity history to ignored local raw JSON, compact JSON, and CSV audit files. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| strava-cache-status | Metadata-only status for the local Strava activity cache and latest observed rate limits. |
TDQS
Scored across 16 tools
Most tools are clearly distinct, but a few could overlap in intent, such as athlete_profile vs athlete_stats and sync_activities vs export_activities. Overall, the descriptions and resource targets make confusion unlikely.
All tools share the strava_ prefix, but the pattern is inconsistent: some use resource_detail/resource_status, while others use verb_entity like sync_activities and export_activities. This mixed convention reduces predictability.
16 tools is slightly above the typical well-scoped range, but the count is reasonable for a Strava API surface covering athlete, activity, gear, zones, streams, sync, cache, and export functionality.
The toolset covers the main read-oriented Strava data needs: athlete info, stats, activities, streams, zones, laps, gear, and cache/export workflows. It lacks write/create/update operations, but for a read-heavy MCP server this is likely sufficient.