MCP Hub
Back to servers

Strava MCP Server

Connects Claude to the Strava API to provide direct access to fitness data, including athlete statistics, detailed activity logs, and time-series performance metrics. It enables users to analyze training progress, compare workouts, and retrieve specific segment details through natural language queries.

glama
Updated
Mar 22, 2026

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

  1. Go to strava.com/settings/api
  2. Create an application — set the Authorization Callback Domain to localhost
  3. Note your Client ID and Client Secret

2. Install & Authorize

npm install
npm run setup

The 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 .env file

3. Build

npm run build
Manual setup (alternative)

Open 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_all

After 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_token

4. Configure Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "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

ToolDescription
get_athleteGet your Strava profile
get_athlete_statsGet lifetime and recent statistics
get_activitiesList recent activities (paginated)
get_activities_betweenGet all activities within a date range (auto-paginated)
get_activityGet detailed info for one activity
get_activity_lapsGet lap/split data for an activity
get_activity_zonesGet HR and power zone distribution
get_activity_streamsGet time-series data (GPS, HR, power, etc.)
get_starred_segmentsGet your starred segments
get_segmentGet details for a specific segment
get_segment_effortsGet 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 start

License

MIT

Reviews

No reviews yet

Sign in to write a review