Skip to main content
Glama
Strava MCP Server
by KerkhofMe

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

Related MCP server: Strava MCP Server

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

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

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_athlete

Get your Strava profile

get_athlete_stats

Get lifetime and recent statistics

get_activities

List recent activities (paginated)

get_activities_between

Get all activities within a date range (auto-paginated)

get_activity

Get detailed info for one activity

get_activity_laps

Get lap/split data for an activity

get_activity_zones

Get HR and power zone distribution

get_activity_streams

Get time-series data (GPS, HR, power, etc.)

get_starred_segments

Get your starred segments

get_segment

Get details for a specific segment

get_segment_efforts

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 start

License

MIT

Available Tools

8 tools
get_activitiesC

Get a list of recent Strava activities

Inputs: limit, page.

get_activities_betweenC

Get Strava activities within a specific date range

Inputs: after (required), before (required).

get_activityC

Get detailed information for a specific Strava activity by ID

Inputs: activity_id (required).

get_activity_streamsC

Get detailed time-series data (streams) for an activity: GPS coordinates, heartrate, power, cadence, altitude, etc.

Inputs: activity_id (required), stream_types.

get_athleteB

Get the profile of the authenticated Strava athlete

Inputs: no named parameters.

get_athlete_statsB

Get lifetime and recent statistics for the authenticated athlete (total runs, rides, swims, distances, etc.)

Inputs: no named parameters.

get_segmentB

Get detailed information about a specific Strava segment

Inputs: segment_id (required).

get_starred_segmentsB

Get the authenticated athlete's starred segments

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose targeting specific Strava resources: activities (list, range, detail, streams), athlete (profile, stats), and segments (detail, starred). No overlap exists in functionality, making tool selection unambiguous for an agent.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with 'get_' prefix and descriptive suffixes (e.g., get_activities, get_activity_streams). This predictable naming convention enhances readability and agent usability throughout the set.

    Tool Count5/5

    With 8 tools, this server is well-scoped for the Strava domain, covering core resources like activities, athlete data, and segments. Each tool earns its place by addressing distinct aspects of the API without being overwhelming or insufficient.

    Completeness3/5

    The tool set provides strong read-only coverage for activities, athlete, and segments, but lacks write operations (e.g., create/update activities, star segments) or broader functionality like clubs or routes. This is a notable gap that may limit agent workflows requiring full CRUD capabilities.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers