Strava MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STRAVA_CLIENT_ID | Yes | Your Strava API application client ID. | |
| STRAVA_CLIENT_SECRET | Yes | Your Strava API application client secret. | |
| STRAVA_REFRESH_TOKEN | Yes | Your Strava refresh token obtained after one-time authorization. |
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_athleteA | Return the authenticated athlete's profile (name, location, weight, FTP if set). |
| get_statsA | Return lifetime, year-to-date, and recent (last 4 weeks) totals for the athlete. Covers run, ride, and swim distance/time/elevation. Useful for tracking load and progress over time. |
| list_activitiesA | List the athlete's activities, most recent first. Args: per_page: Activities per page (1-200, default 30). page: Page number (default 1). before: Optional Unix timestamp; only activities before this time. after: Optional Unix timestamp; only activities after this time. |
| get_activityB | Return full detail for one activity (splits, pace, HR, power, elevation, segments). |
| get_activity_streamsA | Return time-series streams for an activity for detailed pace/HR/elevation analysis. Args: activity_id: The activity to inspect. keys: Stream types to fetch. Defaults to time, distance, heartrate, velocity_smooth, altitude. |
| get_athlete_zonesA | Return the athlete's configured heart-rate and power zones. |
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 6 tools
Each tool targets a clearly distinct resource or granularity: athlete profile, aggregate stats, activity list, activity detail, time-series streams, and zones. The only close pair, get_activity and get_activity_streams, is cleanly separated by summary detail vs. raw time-series data.
All tool names follow a consistent verb_noun snake_case pattern, with five using get_ and one using list_activities. The lone list_ is still a standard retrieval verb, so the naming stays predictable and coherent.
Six tools is a well-scoped size for a read-only Strava analytics server. Each tool covers a distinct part of the activity/athlete data surface without unnecessary duplication or bloat.
For the apparent purpose of retrieving athlete and activity data, the surface is complete: profile, aggregate stats, activity listing, detailed activity, streams, and zones. There are no dead ends for common queries like 'how fast was my last ride?' or 'what are my power zones?'