Skip to main content
Glama

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

strava://athlete/profile

Current authenticated athlete profile (name, location, bikes, shoes)

strava://athlete/stats

Year-to-date and all-time activity totals for runs, rides, and swims

Template Resources

URI Template

Description

strava://activity/{activityId}

Detailed activity by ID

strava://segment/{segmentId}

Detailed segment by ID

strava://route/{routeId}/gpx

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

weekly-summary

week_start? (ISO date)

Summarize training for a given week

activity-analysis

activity_id (required)

Deep analysis of pacing, effort, and performance for a single activity

training-plan-review

days? (default 30)

Review training load, volume progression, and overtraining risk

segment-comparison

segment_id (required)

Compare all efforts on a segment to identify trends

race-readiness

distance? (e.g. "marathon")

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 tsx

License

MIT

Tool Schema Changelog

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

  1. 33 tool updatesv1.0.0
    • First observedstrava_create_activity
    • First observedstrava_create_upload
    • First observedstrava_explore_segments
    • First observedstrava_export_route_gpx
    • First observedstrava_export_route_tcx
    • First observedstrava_get_activity
    • First observedstrava_get_activity_streams
    • First observedstrava_get_athlete_stats
    • First observedstrava_get_athlete_zones
    • First observedstrava_get_authenticated_athlete
    • First observedstrava_get_club
    • First observedstrava_get_gear
    • First observedstrava_get_route
    • First observedstrava_get_route_streams
    • First observedstrava_get_segment
    • First observedstrava_get_segment_effort
    • First observedstrava_get_segment_effort_streams
    • First observedstrava_get_segment_streams
    • First observedstrava_get_upload
    • First observedstrava_list_activities
    • First observedstrava_list_activity_comments
    • First observedstrava_list_activity_kudoers
    • First observedstrava_list_activity_laps
    • First observedstrava_list_activity_zones
    • First observedstrava_list_athlete_clubs
    • First observedstrava_list_athlete_routes
    • First observedstrava_list_club_activities
    • First observedstrava_list_club_admins
    • First observedstrava_list_club_members
    • First observedstrava_list_segment_efforts
    • First observedstrava_list_starred_segments
    • First observedstrava_star_segment
    • First observedstrava_update_activity

TDQS

A3.7/5.0

Scored across 33 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    -