Skip to main content
Glama

Strava MCP Server

by r-huijts

get-activity-streams

Extract and analyze detailed time-series data from Strava activities, including heart rate, power, speed, and GPS coordinates. Choose data resolution and format for workout analysis, route visualization, or segment insights.

Instructions

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 or all at once
  4. Rich Statistics: Includes min/max/avg for numeric streams
  5. Formatted Output: Data is processed into human and LLM-friendly formats

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
  2. Statistics: Summary stats for each stream type (max/min/avg where applicable)
  3. Stream Data: Actual time-series data, formatted for easy use

Notes:

  • Requires activity scope
  • Not all streams are available for all activities
  • Older activities might have limited data
  • Large activities are automatically paginated to handle size limits

Input Schema

NameRequiredDescriptionDefault
idYesThe Strava activity identifier to fetch streams for. This can be obtained from activity URLs or the get-activities tool.
pageNoOptional page number for paginated results. Use with points_per_page to retrieve specific data ranges. Example: page=2 with points_per_page=100 gets points 101-200.
points_per_pageNoOptional number of data points per page. Special values: - Positive number: Returns that many points per page - -1: Returns ALL data points split into multiple messages (~1000 points each) Use -1 when you need the complete activity data for analysis.
resolutionNoOptional data resolution. Affects number of data points returned: - low: ~100 points - medium: ~1000 points - high: ~10000 points Default varies based on activity length.
series_typeNoOptional base series type for the streams: - time: Data points are indexed by time (seconds from start) - distance: Data points are indexed by distance (meters from start) Useful for comparing different activities or analyzing specific segments.distance
typesNoArray of stream types to fetch. Available types: - time: Time in seconds from start - distance: Distance in meters from start - latlng: Array of [latitude, longitude] pairs - altitude: Elevation in meters - velocity_smooth: Smoothed speed in meters/second - heartrate: Heart rate in beats per minute - cadence: Cadence in revolutions per minute - watts: Power output in watts - temp: Temperature in Celsius - moving: Boolean indicating if moving - grade_smooth: Road grade as percentage

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "id": { "description": "The Strava activity identifier to fetch streams for. This can be obtained from activity URLs or the get-activities tool.", "type": [ "number", "string" ] }, "page": { "default": 1, "description": "Optional page number for paginated results. Use with points_per_page to retrieve specific data ranges.\nExample: page=2 with points_per_page=100 gets points 101-200.", "type": "number" }, "points_per_page": { "default": 100, "description": "Optional number of data points per page. Special values:\n- Positive number: Returns that many points per page\n- -1: Returns ALL data points split into multiple messages (~1000 points each)\nUse -1 when you need the complete activity data for analysis.", "type": "number" }, "resolution": { "description": "Optional data resolution. Affects number of data points returned:\n- low: ~100 points\n- medium: ~1000 points\n- high: ~10000 points\nDefault varies based on activity length.", "enum": [ "low", "medium", "high" ], "type": "string" }, "series_type": { "default": "distance", "description": "Optional base series type for the streams:\n- time: Data points are indexed by time (seconds from start)\n- distance: Data points are indexed by distance (meters from start)\nUseful for comparing different activities or analyzing specific segments.", "enum": [ "time", "distance" ], "type": "string" }, "types": { "default": [ "time", "distance", "heartrate", "cadence", "watts" ], "description": "Array of stream types to fetch. Available types:\n- time: Time in seconds from start\n- distance: Distance in meters from start\n- latlng: Array of [latitude, longitude] pairs\n- altitude: Elevation in meters\n- velocity_smooth: Smoothed speed in meters/second\n- heartrate: Heart rate in beats per minute\n- cadence: Cadence in revolutions per minute\n- watts: Power output in watts\n- temp: Temperature in Celsius\n- moving: Boolean indicating if moving\n- grade_smooth: Road grade as percentage", "items": { "enum": [ "time", "distance", "latlng", "altitude", "velocity_smooth", "heartrate", "cadence", "watts", "temp", "moving", "grade_smooth" ], "type": "string" }, "type": "array" } }, "required": [ "id" ], "type": "object" }

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/r-huijts/strava-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server