MCP.so
Sign In

Strava MCP Server

@r-huijts

About Strava MCP Server

A Model Context Protocol (MCP) server that connects to Strava API, providing tools to access Strava data through LLMs

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "strava": {
      "command": "npx",
      "args": [
        "-y",
        "@r-huijts/strava-mcp-server"
      ]
    }
  }
}

Tools

24

Fetches the profile information for the authenticated athlete, including their unique numeric ID needed for other tools like get-athlete-stats.

Fetches the activity statistics (recent, YTD, all-time) for a specific athlete using their ID. Requires the athleteId obtained from the get-athlete-profile tool.

Fetches detailed information about a specific activity using its ID.

Fetches the most recent activities for the authenticated athlete.

Lists the clubs the authenticated athlete is a member of.

Lists the segments starred by the authenticated athlete.

Fetches detailed information about a specific segment using its ID.

Searches for popular segments within a given geographical area.

Stars or unstars a specific segment for the authenticated athlete.

Fetches detailed information about a specific segment effort using its ID.

Lists the authenticated athlete's efforts on a specific segment, optionally filtering by date.

Lists the routes created by the authenticated athlete, with pagination.

Fetches detailed information about a specific route using its ID.

Exports a specific Strava route in GPX format and saves it to a pre-configured local directory.

Exports a specific Strava route in TCX format and saves it to a pre-configured local directory.

Retrieves detailed time-series data streams from a Strava activity. Perfect for analyzing workout metrics, visualizing routes, or performing detailed activity analysis. Key Features: 1. Multiple Data Types: Access various metrics like heart rate, power, speed, GPS coordinates, etc. 2. Flexible Resolution: Choose data density from low (~100 points) to high (~10000 points) 3. Smart Pagination: Get data in manageable chunks optimized for LLM context limits 4. Rich Statistics: Includes min/max/avg for numeric streams 5. Dual Format Support: Compact (LLM-optimized) or verbose (human-readable) 6. Intelligent Downsampling: Automatically reduce large datasets while preserving key features Format Options: - compact (default): Raw arrays, minified JSON, ~70-80% smaller payloads, ideal for LLM processing - verbose: Human-readable objects with formatted values, backward compatible with legacy format Common Use Cases: - Analyzing workout intensity through heart rate zones - Calculating power metrics for cycling activities - Visualizing route data using GPS coordinates - Analyzing pace and elevation changes - Detailed segment analysis Output Format: 1. Metadata: Activity overview, available streams, data points, units, format info 2. Statistics: Summary stats for each stream type (max/min/avg where applicable) 3. Data: Time-series data in compact arrays or verbose objects (based on format parameter) Notes: - Requires activity:read scope - Not all streams are available for all activities - Older activities might have limited data - Large activities are automatically chunked to ~50KB per message - Use max_points parameter to downsample very large activities intelligently

Retrieves detailed lap data for a specific Strava activity. Use Cases: - Get complete lap data including timestamps, speeds, and metrics - Access raw values for detailed analysis or visualization - Extract specific lap metrics for comparison or tracking Parameters: - id (required): The unique identifier of the Strava activity. Output Format: Returns both a human-readable summary and complete JSON data for each lap, including: 1. A text summary with formatted metrics 2. Raw lap data containing all fields from the Strava API: - Unique lap ID and indices - Timestamps (start_date, start_date_local) - Distance and timing metrics - Speed metrics (average and max) - Performance metrics (heart rate, cadence, power if available) - Elevation data - Resource state information - Activity and athlete references Notes: - Requires activity:read scope for public/followers activities, activity:read_all for private activities - Returns complete data as received from Strava API without omissions - All numeric values are preserved in their original precision

Retrieves the authenticated athlete's configured heart rate and power zones. Output includes both a formatted summary and the raw JSON data.

Fetches complete activity history with optional filtering by date range and activity type. Supports pagination to retrieve all activities.

Retrieves photos associated with a specific Strava activity. Use Cases: - Fetch all photos uploaded to an activity - Get photo URLs for display or download - Access photo metadata including location and timestamps Parameters: - id (required): The unique identifier of the Strava activity. - size (optional): Size of photos to return in pixels (e.g., 100, 600, 2048). If not specified, returns all available sizes. Output Format: Returns both a human-readable summary and complete JSON data for each photo, including: 1. A text summary with photo count and URLs 2. Raw photo data containing all fields from the Strava API: - Photo ID and unique identifier - URLs for different sizes - Source (1 = Strava, 2 = Instagram) - Timestamps (uploaded_at, created_at) - Location coordinates if available - Caption if provided Notes: - Requires activity:read scope for public/followers activities, activity:read_all for private activities - Photos may come from Strava uploads or linked Instagram posts - Returns empty array if activity has no photos

Returns the Strava MCP server version and related metadata.

Connect your Strava account to enable activity tracking. This will open a browser window for secure authentication. Use this when the user asks to connect, link, or authenticate their Strava account.

Disconnect your Strava account and remove stored credentials. Use this when the user wants to logout, disconnect, or remove their Strava connection.

Check if Strava is connected and show the current connection status. Use this when the user asks about their connection status.

Overview

What is Strava MCP Server?

The Strava MCP Server connects Claude to your Strava account, letting you ask questions about your activities in plain English. It’s designed for athletes who want to query their workouts, stats, segments, and routes through conversational AI.

How to use Strava MCP Server?

Add the server to your Claude Desktop configuration file (claude_desktop_config.json) using the npx command @r-huijts/strava-mcp-server. Alternatively, add it to Claude Code with claude mcp add. After restarting Claude, say “Connect my Strava account” to authorize via OAuth in a browser.

Key features of Strava MCP Server

  • Query activities, stats, and segments in natural language
  • OAuth authentication with local credential storage
  • 25 tools covering activities, segments, routes, and clubs
  • Smart chunking and compact format for activity streams
  • Token auto‑refresh with config file persistence

Use cases of Strava MCP Server

  • “How far did I run this month?” – get monthly totals and comparisons
  • “Analyze my last ride with power and heart rate data” – detailed workout breakdowns
  • “Find popular cycling segments near Central Park” – discover and star segments
  • “Export my Sunday morning route as a GPX file” – download routes for GPS devices
  • “Summarize my cycling performance this year” – seasonal coaching insights

FAQ from Strava MCP Server

How do I connect my Strava account?

Say “Connect my Strava account” to Claude. A browser opens; enter your Strava API credentials, authorize the app, and you’re done.

What if authentication fails?

Reconnect by saying “Connect my Strava account” or check that your Strava API application is still active at strava.com/settings/api.

Where are my Strava credentials stored?

Credentials are saved locally at ~/.config/strava-mcp/config.json and persist across sessions.

Can I use this without Claude Desktop?

Yes, you can add it to Claude Code with claude mcp add --transport stdio strava -- npx @r-huijts/strava-mcp-server.

What data can I access?

Activities, statistics, segments, routes, clubs, workout files (Zwift .zwo), profile info, photos, and detailed activity streams.

Frequently asked questions

How do I connect my Strava account?

Say “Connect my Strava account” to Claude. A browser opens; enter your Strava API credentials, authorize the app, and you’re done.

What if authentication fails?

Reconnect by saying “Connect my Strava account” or check that your Strava API application is still active at strava.com/settings/api.

Where are my Strava credentials stored?

Credentials are saved locally at `~/.config/strava-mcp/config.json` and persist across sessions.

Can I use this without Claude Desktop?

Yes, you can add it to Claude Code with `claude mcp add --transport stdio strava -- npx @r-huijts/strava-mcp-server`.

What data can I access?

Activities, statistics, segments, routes, clubs, workout files (Zwift .zwo), profile info, photos, and detailed activity streams.

Comments

More Other MCP servers