Strava MCP Server
The Strava MCP Server connects Claude to the Strava API, enabling direct access to your training data for analysis and insights.
Athlete Profile & Stats (
get_athlete,get_athlete_stats): Retrieve your Strava profile and lifetime/recent statistics (total runs, rides, swims, distances)List Recent Activities (
get_activities): Browse recent activities with pagination support (up to 100 per page)Activities by Date Range (
get_activities_between): Retrieve all activities within a specific date range using ISO 8601 datesActivity Details (
get_activity): Fetch detailed information for a specific activity by IDLap/Split Data: Retrieve lap and split breakdowns for a specific activity
HR & Power Zone Distribution: Get heart rate and power zone data for an activity
Activity Streams (
get_activity_streams): Access time-series data including GPS coordinates, heart rate, power, cadence, altitude, velocity, temperature, and moreStarred Segments (
get_starred_segments): View your starred Strava segmentsSegment Details (
get_segment): Fetch detailed information about a specific segmentSegment Efforts: Access your efforts on a particular segment with optional date filtering
Provides access to Strava training data, including athlete profiles, lifetime and recent statistics, activity lists, detailed activity information, time-series data (GPS, heart rate, power, cadence, altitude), and segment details.
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 ServerSummarize my training activities from this past week."
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 that connects Claude to the Strava API, giving Claude direct access to your training data.
Features
Athlete Profile — Get your Strava profile info
Athlete Stats — Lifetime and recent totals (runs, rides, swims)
Activities — List recent activities or filter by date range
Activity Details — Deep dive into any single activity
Activity Streams — Time-series data: GPS, heartrate, power, cadence, altitude
Segments — Starred segments and segment details
Setup
1. Create a Strava API Application
Go to strava.com/settings/api
Create an application — set the Authorization Callback Domain to
localhostNote your Client ID and Client Secret
2. Install & Authorize
npm install
npm run setupThe setup wizard will:
Ask for your Client ID and Client Secret
Open your browser to authorize with Strava
Automatically catch the callback and exchange tokens
Write your
.envfile
3. Build
npm run buildOpen this URL in your browser (replace CLIENT_ID):
https://www.strava.com/oauth/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http://localhost&scope=read_all,activity:read_allAfter authorizing, you'll be redirected to http://localhost?code=AUTHORIZATION_CODE. Copy the code and exchange it:
curl -s -X POST 'https://www.strava.com/oauth/token' \
-F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'code=AUTHORIZATION_CODE' \
-F 'grant_type=authorization_code'Save the refresh_token from the response and create a .env file:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REFRESH_TOKEN=your_refresh_token4. Configure Claude Desktop
Option A: Docker (recommended)
Build the Docker image:
docker build -t strava-mcp-server .Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"strava": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/absolute/path/to/your/.env",
"strava-mcp-server"
]
}
}
}Replace /absolute/path/to/your/.env with the full path to your .env file.
Option B: Node.js (local)
{
"mcpServers": {
"strava": {
"command": "node",
"args": ["/Users/USERNAME/Apps/StravaMCP/dist/index.js"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}Restart Claude Desktop. You should see the Strava tools available in the tools menu (hammer icon).
Available Tools
Tool | Description |
| Get your Strava profile |
| Get lifetime and recent statistics |
| List recent activities (paginated) |
| Get all activities within a date range (auto-paginated) |
| Get detailed info for one activity |
| Get lap/split data for an activity |
| Get HR and power zone distribution |
| Get time-series data (GPS, HR, power, etc.) |
| Get your starred segments |
| Get details for a specific segment |
| Get your efforts on a segment (with optional date filter) |
Example Prompts
Once connected, try asking Claude:
"What were my activities this week?"
"Analyze my running performance over the past month"
"Compare my cycling times in January vs February"
"Show me my heartrate data from my last run"
"What are my all-time stats?"
Development
# Run in dev mode (no build step)
npm run dev
# Build for production
npm run build
npm startLicense
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KerkhofMe/StravaMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server