Strava MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STRAVA_CLIENT_ID | No | Your Strava Application Client ID | |
| ROUTE_EXPORT_PATH | No | Directory for GPX/TCX exports | |
| STRAVA_ACCESS_TOKEN | No | OAuth access token | |
| STRAVA_CLIENT_SECRET | No | Your Strava Application Client Secret | |
| STRAVA_REFRESH_TOKEN | No | OAuth refresh token |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get-athlete-profileA | Fetches the profile information for the authenticated athlete, including their unique numeric ID needed for other tools like get-athlete-stats. |
| get-athlete-statsA | Fetches the activity statistics (recent, YTD, all-time) for a specific athlete using their ID. Requires the athleteId obtained from the get-athlete-profile tool. |
| get-activity-detailsC | Fetches detailed information about a specific activity using its ID. |
| get-recent-activitiesA | Fetches the most recent activities for the authenticated athlete. |
| list-athlete-clubsA | Lists the clubs the authenticated athlete is a member of. |
| list-starred-segmentsA | Lists the segments starred by the authenticated athlete. |
| get-segmentC | Fetches detailed information about a specific segment using its ID. |
| explore-segmentsC | Searches for popular segments within a given geographical area. |
| star-segmentA | Stars or unstars a specific segment for the authenticated athlete. |
| get-segment-effortC | Fetches detailed information about a specific segment effort using its ID. |
| list-segment-effortsA | Lists the authenticated athlete's efforts on a specific segment, optionally filtering by date. |
| list-athlete-routesA | Lists the routes created by the authenticated athlete, with pagination. |
| get-routeA | Fetches detailed information about a specific route using its ID. |
| export-route-gpxA | Exports a specific Strava route in GPX format and saves it to a pre-configured local directory. |
| export-route-tcxA | Exports a specific Strava route in TCX format and saves it to a pre-configured local directory. |
| get-activity-streamsA | Retrieves detailed time-series data streams from a Strava activity. Perfect for analyzing workout metrics, visualizing routes, or performing detailed activity analysis. Key Features:
Format Options:
Common Use Cases:
Output Format:
Notes:
|
| get-activity-lapsA | Retrieves detailed lap data for a specific Strava activity. Use Cases:
Parameters:
Output Format: Returns both a human-readable summary and complete JSON data for each lap, including:
Notes:
|
| get-athlete-zonesA | Retrieves the authenticated athlete's configured heart rate and power zones. Output includes both a formatted summary and the raw JSON data. |
| get-athlete-shoesA | Fetches the authenticated athlete's shoes from Strava, including usage distance and primary flag. |
| get-all-activitiesA | Fetches complete activity history with optional filtering by date range and activity type. Supports pagination to retrieve all activities. |
| get-activity-photosA | Retrieves photos associated with a specific Strava activity. Use Cases:
Parameters:
Output Format: Returns both a human-readable summary and complete JSON data for each photo, including:
Notes:
|
| get-server-versionA | Returns the Strava MCP server version and related metadata. |
| connect-stravaA | Connect your Strava account to enable activity tracking. This will open a browser window for secure authentication. Use this when the user asks to connect, link, or authenticate their Strava account. |
| disconnect-stravaA | Disconnect your Strava account and remove stored credentials. Use this when the user wants to logout, disconnect, or remove their Strava connection. |
| check-strava-connectionA | Check if Strava is connected and show the current connection status. Use this when the user asks about their connection status. |
| get-segment-leaderboardA | Retrieves the leaderboard for a specific Strava segment. Shows top performances with times, power, and heart rate data. Supports filtering by gender, age group, weight class, club, date range, and followed athletes. Use this to:
|
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 26 tools
Most tools have distinct purposes targeting specific Strava resources (e.g., activities, segments, routes, athlete data), with clear separation between get, list, and action operations. However, some potential overlap exists between 'get-all-activities' and 'get-recent-activities', and between 'explore-segments' and 'list-starred-segments', which could cause minor confusion in selection.
Naming conventions are mixed, with most tools using kebab-case (e.g., 'get-activity-details') but some using snake_case (e.g., 'get_athlete_stats' in the description). Verb patterns vary, including 'get-', 'list-', 'export-', 'check-', 'connect-', 'disconnect-', 'explore-', and 'star-', which reduces predictability. While readable, the inconsistency across styles and verbs lowers the score.
With 26 tools, the count is borderline high for a Strava integration, suggesting potential over-scoping. While Strava's API is feature-rich, this many tools might overwhelm agents or indicate fragmentation. A more focused set of 15-20 tools could improve coherence without sacrificing functionality.
The tool set provides comprehensive coverage of the Strava domain, including athlete management (connect, profile, stats, zones), activities (details, laps, photos, streams, lists), segments (explore, get, leaderboard, efforts, starring), routes (get, export), and clubs. It supports full CRUD-like operations where applicable (e.g., connect/disconnect, star/unstar) and handles key workflows like data export and analysis, with no obvious gaps.