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 | A refresh token for your Strava account. Requires scopes 'activity:read_all' and '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 |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_athlete_stats_toolB | Get statistics for the authenticated athlete. Returns a formatted string with recent and all-time stats. |
| list_activities_toolC | List recent activities for the authenticated athlete. Args: limit: Number of activities to return (default 5) |
| search_activities_toolA | Search activities with optional filters. Note: Name/description search is client-side, so a reasonable limit is recommended. Args: query: Search term to match in activity name (case-insensitive, partial match) activity_type: Filter by activity type (e.g., "Run", "Ride", "Walk", "Hike") after: ISO 8601 date string (e.g., "2025-01-01") - activities after this date before: ISO 8601 date string (e.g., "2026-01-01") - activities before this date min_distance: Minimum distance in meters max_distance: Maximum distance in meters limit: Maximum number of activities to fetch from API (default 50) |
| get_activity_details_toolB | Get detailed information for a specific activity. Args: activity_id: The ID of the activity to retrieve |
| get_activity_laps_toolC | Get lap breakdowns for a specific activity. Args: activity_id: The ID of the activity to retrieve laps for |
| get_activity_streams_toolA | Get raw stream data (GPS, HR, power, etc.) for a specific activity. Args: activity_id: The ID of the activity to retrieve streams for types: List of stream types to fetch. Options: time, latlng, distance, altitude, velocity_smooth, heartrate, cadence, watts, temp, moving, grade_smooth. If None, all available streams will be returned. resolution: Data point resolution - 'low' (100 points), 'medium' (1000 points), 'high' (10000 points), or None (all points) |
| analyze_data_toolA | Execute Python code to analyze Strava data safely using Monty. Args: code: Python code to execute. The data is available as a variable named 'data'. Example: "sum(activity['distance'] for activity in data) / 1000" data: The data to analyze (e.g. list of activities, athlete stats). Can be passed as a JSON object (list/dict) or a JSON string. |
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 7 tools
Each tool has a clearly distinct purpose targeting specific Strava resources: analyze_data_tool for custom analysis, get_activity_details_tool for basic activity info, get_activity_laps_tool for lap data, get_activity_streams_tool for raw metrics, get_athlete_stats_tool for athlete statistics, list_activities_tool for recent activities, and search_activities_tool for filtered searches. There is no overlap or ambiguity between these functions.
All tool names follow a consistent verb_noun pattern with snake_case: analyze_data_tool, get_activity_details_tool, get_activity_laps_tool, get_activity_streams_tool, get_athlete_stats_tool, list_activities_tool, and search_activities_tool. This uniformity makes the set predictable and easy to understand.
With 7 tools, this server is well-scoped for a Strava integration, covering core operations like retrieving activities, analyzing data, and accessing athlete stats. Each tool serves a specific, necessary function without bloat, making the count appropriate for the domain.
The tool set provides strong coverage for reading and analyzing Strava data, including activities, streams, laps, and athlete stats, with a flexible search tool. A minor gap exists in write operations (e.g., creating or updating activities), but the read-focused surface is largely complete for typical agent workflows.