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 "Install 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
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.