Strava MCP Server
The Strava MCP Server provides programmatic access to your Strava account to manage, analyze, and automate fitness data through tools, resources, and AI prompts.
Activities
List activities with date range filtering and pagination
Get detailed info (splits, laps, segment efforts, gear, calories)
Create manual entries and update properties (name, type, gear, description, visibility)
List comments, kudoers, laps, and heart rate/power zone distributions
Athletes
Get your authenticated athlete profile (name, location, bikes, shoes)
Retrieve heart rate and power zones
Get recent, year-to-date, and all-time stats for runs, rides, and swims
Segments
Get detailed segment info (distance, elevation, grade, effort count)
List and filter efforts by date range; get specific efforts with achievements
Explore popular segments within a geographic bounding box
Star/unstar segments and list your starred segments
Routes
List, view detailed route info, and export routes as GPX or TCX files
Streams (Time-Series Data)
Access high-resolution data streams for activities, segment efforts, segments, and routes (heart rate, power, cadence, altitude, GPS, speed, etc.)
Clubs
List clubs you belong to, get club details, and list recent activities, members, and admins
Gear
Get equipment details for bikes and shoes (brand, model, total distance)
Uploads
Upload FIT, TCX, or GPX files to create new activities and check processing status
AI Prompts & Resources
Use built-in prompts for weekly training summaries, single activity analysis, training plan reviews, segment comparisons, and race readiness assessments
Access read-only athlete profiles, stats, activity details, segment info, and route GPX exports as context resources
Supports OAuth with automatic token refresh
Provides tools for interacting with the Strava API v3, allowing for the management of activities, athlete profiles, segments, routes, clubs, and gear, as well as the ability to upload activity files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Strava MCP Servershow my running stats for this year"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Strava MCP Server
An MCP (Model Context Protocol) server for the Strava API v3. Exposes Strava data through MCP tools, resources, and prompts. Built with TypeScript and the MCP SDK.
Tools
Activities
strava_list_activities - List the authenticated athlete's activities with date range filtering and pagination
strava_get_activity - Get detailed activity info including splits, laps, segment efforts, and gear
strava_create_activity - Create a manual activity entry
strava_update_activity - Update an activity's mutable properties
strava_list_activity_comments - List comments on an activity
strava_list_activity_kudoers - List athletes who gave kudos
strava_list_activity_laps - List laps with distance, time, speed, heart rate, watts, and elevation
strava_list_activity_zones - Get heart rate and power zone distribution
Athletes
strava_get_authenticated_athlete - Get the authenticated athlete's profile
strava_get_athlete_zones - Get heart rate and power zones
strava_get_athlete_stats - Get year-to-date and all-time totals for runs, rides, and swims
Segments
strava_get_segment - Get segment details including distance, elevation, grade, and effort count
strava_list_segment_efforts - List efforts on a segment with date range filtering
strava_get_segment_effort - Get a specific segment effort with achievements
strava_explore_segments - Find popular segments within a geographic bounding box
strava_star_segment - Star or unstar a segment
Routes
strava_list_athlete_routes - List routes created by an athlete
strava_get_route - Get detailed route information
strava_export_route_gpx - Export a route as GPX
strava_export_route_tcx - Export a route as TCX
Streams (Time-Series Data)
strava_get_activity_streams - Get activity streams (heart rate, power, cadence, altitude, GPS, etc.)
strava_get_segment_effort_streams - Get segment effort streams
strava_get_segment_streams - Get segment GPS/altitude data
strava_get_route_streams - Get route GPS/altitude data
Clubs
strava_list_athlete_clubs - List clubs the athlete belongs to
strava_get_club - Get club details
strava_list_club_activities - List recent club member activities
strava_list_club_members - List club members
strava_list_club_admins - List club admins
Gear
strava_get_gear - Get equipment details (bikes, shoes)
Uploads
strava_create_upload - Upload a FIT/TCX/GPX file to create an activity
strava_get_upload - Check upload processing status
Related MCP server: fitness-mcp-server
Resources
Resources provide read-only context data that clients can pull into conversations.
Static Resources
URI | Description |
| Current authenticated athlete profile (name, location, bikes, shoes) |
| Year-to-date and all-time activity totals for runs, rides, and swims |
Template Resources
URI Template | Description |
| Detailed activity by ID |
| Detailed segment by ID |
| Export a route as GPX |
Prompts
Prompts are user-triggered prompt templates that fetch relevant Strava data and ask the LLM for analysis.
Prompt | Arguments | Description |
|
| Summarize training for a given week |
|
| Deep analysis of pacing, effort, and performance for a single activity |
|
| Review training load, volume progression, and overtraining risk |
|
| Compare all efforts on a segment to identify trends |
|
| Assess fitness and race readiness based on recent training |
Setup
1. Create a Strava API Application
Go to Strava API Settings and create an application. Note your Client ID and Client Secret.
2. Get an Access Token
You need an access token with the appropriate scopes. For read-only access use read,activity:read_all. For write access add activity:write.
You can obtain tokens through Strava's OAuth flow. The server will automatically refresh expired tokens if STRAVA_REFRESH_TOKEN, STRAVA_CLIENT_ID, and STRAVA_CLIENT_SECRET are set.
3. Configure Environment Variables
export STRAVA_CLIENT_ID="your_client_id"
export STRAVA_CLIENT_SECRET="your_client_secret"
export STRAVA_ACCESS_TOKEN="your_access_token"
export STRAVA_REFRESH_TOKEN="your_refresh_token"4. Add to Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"strava": {
"command": "npx",
"args": ["-y", "strava-mcp-server"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_ACCESS_TOKEN": "your_access_token",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Or if installed locally:
{
"mcpServers": {
"strava": {
"command": "node",
"args": ["/path/to/strava-mcp/dist/index.js"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_ACCESS_TOKEN": "your_access_token",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Development
npm install
npm run build
npm run dev # watch mode with tsxLicense
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
33 tool updates
v1.0.0- First observed
strava_create_activity - First observed
strava_create_upload - First observed
strava_explore_segments - First observed
strava_export_route_gpx - First observed
strava_export_route_tcx - First observed
strava_get_activity - First observed
strava_get_activity_streams - First observed
strava_get_athlete_stats - First observed
strava_get_athlete_zones - First observed
strava_get_authenticated_athlete - First observed
strava_get_club - First observed
strava_get_gear - First observed
strava_get_route - First observed
strava_get_route_streams - First observed
strava_get_segment - First observed
strava_get_segment_effort - First observed
strava_get_segment_effort_streams - First observed
strava_get_segment_streams - First observed
strava_get_upload - First observed
strava_list_activities - First observed
strava_list_activity_comments - First observed
strava_list_activity_kudoers - First observed
strava_list_activity_laps - First observed
strava_list_activity_zones - First observed
strava_list_athlete_clubs - First observed
strava_list_athlete_routes - First observed
strava_list_club_activities - First observed
strava_list_club_admins - First observed
strava_list_club_members - First observed
strava_list_segment_efforts - First observed
strava_list_starred_segments - First observed
strava_star_segment - First observed
strava_update_activity
TDQS
Scored across 33 tools
Most tools have distinct purposes targeting specific Strava resources (activities, segments, routes, clubs, gear) with clear action verbs. However, some overlap exists: 'strava_get_activity_streams' and 'strava_get_segment_effort_streams' both provide time-series data, which could cause confusion about when to use each. The 'strava_list_activity_zones' and 'strava_get_athlete_zones' also cover similar zone concepts but for different contexts.
Tool names follow a highly consistent 'strava_verb_noun' pattern throughout, using snake_case uniformly. The verbs are predictable (get, list, create, update, star, export) and align well with the resource types (activity, segment, route, club, athlete, gear). This makes the tool set easy to navigate and understand at a glance.
With 33 tools, the count feels heavy for a single-domain server, potentially overwhelming for agents. While Strava's API is feature-rich, this many tools may indicate over-fragmentation (e.g., separate tools for similar stream types or list functions). A more consolidated set (e.g., 15-20 tools) could improve usability without losing functionality.
The tool set provides comprehensive coverage of Strava's core domain, including full CRUD/lifecycle operations for activities (create, get, list, update), segments (explore, get, star, efforts), routes (get, export), clubs (get, list members/admins/activities), and athlete data (profile, stats, zones). It handles key workflows like file uploads, streams, and social features (comments, kudos), leaving no obvious gaps.
Maintenance
Related MCP Connectors
Strava MCP tools for AI: athletes, activities, segments, clubs, routes. Powered by HAPI MCP server.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
MCP server for AI access to Swagger by SmartBear.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables users to access Strava fitness data, including user activities, activity details, segments, and leaderboards through a structured API interface.34MIT
- FlicenseNot gradedqualityDmaintenanceProvides MCP servers for Claude to access fitness data from Strava and intervals.icu, enabling natural language queries for activity analysis, advanced training metrics, and wellness tracking.1-
- AlicenseNot gradedqualityCmaintenanceMCP server for Strava integration, enabling LLMs to query activities, athlete stats, segments, routes, and perform training analysis.8MIT
- FlicenseNot gradedqualityDmaintenanceMCP server to fetch Strava activities using OAuth authentication with automatic token refresh. Allows retrieving recent activities, activities by date range, activity details, and athlete stats.-