# Strava — how to use (mcp.ai)

Connect your Strava account and use 36 tools for fitness straight from your AI agent. Connect in one click, no API key needed. Strava is a social fitness network and app designed for cyclists and runners.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_strava?ms=1787295900000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `strava_add_activity_laps`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/strava`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/strava/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/strava/add/activity/laps` — Retrieves lap data for a specific Strava activity by its identifier. Laps represent segments of an activity, typically auto-generated during activities like running or cycling based on distance interv
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/create/an/activity` — Creates a manual activity for an athlete. Requires activity:write scope. This endpoint is for manually entered activities only. To upload activity files (FIT, TCX, GPX), use the Upload Activity endpoi
  - body: { name: string, type?: string, commute?: integer, trainer?: integer, distance?: number, sport_type: string, description?: string, elapsed_time: integer, start_date_local: string }
- `POST https://api.mcp.ai/api/strava/explore/segments` — Explore segments within a geographic bounding box. Returns the top 10 segments matching the specified geographic boundary and optional filters. Segments are sections of roads or trails where Strava at
  - body: { bounds: string, max_cat?: integer, min_cat?: integer, activity_type?: string }
- `POST https://api.mcp.ai/api/strava/export/route/gpx` — Exports a Strava route as a GPX (GPS Exchange Format) file. GPX files can be used to import routes into GPS devices, other fitness apps, or mapping software. Requires read_all scope for private routes
  - body: { id: string }
- `POST https://api.mcp.ai/api/strava/export/route/tcx` — Exports a Strava route as a TCX (Training Center XML) file. TCX format is widely supported by GPS devices, fitness watches, and training software like Garmin Connect and TrainingPeaks. The exported fi
  - body: { id: string }
- `POST https://api.mcp.ai/api/strava/get/activity` — Retrieves detailed information about a specific activity by its ID. Returns a DetailedActivity object containing comprehensive data including distance, time, elevation, speed, heart rate, power data (
  - body: { id: string, include_all_efforts?: boolean }
- `POST https://api.mcp.ai/api/strava/get/activity/streams` — Retrieves time-series stream data for a specific activity. Streams are the raw spatial and sensor data recorded during an activity, including GPS coordinates, speed, heart rate, power, etc. Each strea
  - body: { id: integer, keys: string[], key_by_type?: boolean }
- `POST https://api.mcp.ai/api/strava/get/activity/zones` — Returns the heart rate and power zones of a given activity. This is a Summit/Premium feature that provides zone distribution data showing time spent in each training zone. The response includes an arr
  - body: { id: string }
- `POST https://api.mcp.ai/api/strava/get/athlete/stats` — Returns the activity stats of an athlete, including ride, run, and swim totals for recent (last 4 weeks), year-to-date, and all-time periods. Only includes data from activities set to 'Everyone' visib
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/athlete/zones` — Retrieves the authenticated athlete's heart rate and power training zones. Use this action when you need to access an athlete's configured training zones for heart rate and power, including zone thres
- `POST https://api.mcp.ai/api/strava/get/authenticated/athlete` — Retrieves the profile of the currently authenticated Strava athlete. Returns athlete information including name, location, account status, profile photos, and social connections. The level of detail d
- `POST https://api.mcp.ai/api/strava/get/club` — Retrieves detailed information about a specific Strava club by its ID. Returns comprehensive club details including name, description, location (city/state/country), member count, sport type, activity
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/equipment` — Retrieves detailed information about a specific piece of gear/equipment. Returns comprehensive details about bikes or shoes including name, brand, model, total distance, and status (primary/retired). 
  - body: { id: string }
- `POST https://api.mcp.ai/api/strava/get/route` — Retrieve detailed information about a specific Strava route. A route is a planned path that athletes can follow, created via the Strava Route Builder. This endpoint returns comprehensive route data in
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/route/streams` — Get detailed stream data for a route. Returns raw GPS coordinates, elevation, and distance data points along a route's path. This data can be used for mapping, elevation profiles, and route analysis. 
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/segment` — Retrieve detailed information about a specific Strava segment. A segment is a portion of a road or trail where athletes can compete for times. This endpoint returns comprehensive segment data includin
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/segment/effort` — Retrieves detailed information about a specific segment effort by its unique ID. A segment effort represents an athlete's attempt at a particular segment during an activity. This endpoint returns perf
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/get/segment/effort/streams` — Returns stream data for a segment effort completed by the authenticated athlete. Streams provide the raw time-series data associated with a segment effort, such as GPS coordinates, altitude, speed, he
  - body: { id: string, keys: string, key_by_type?: boolean }
- `POST https://api.mcp.ai/api/strava/get/segment/streams` — Get detailed stream data for a segment. Returns raw GPS, elevation, and distance data points along a segment's route. This data can be used for mapping, elevation profiles, and route analysis. Availab
  - body: { id: integer, keys: string, key_by_type?: boolean }
- `POST https://api.mcp.ai/api/strava/get/upload` — Retrieves the status of an upload by its ID. Use this endpoint to poll the processing status of an uploaded activity file. Uploads are processed asynchronously, so you should poll this endpoint (recom
  - body: { uploadId: integer }
- `POST https://api.mcp.ai/api/strava/get/zones` — Retrieves the authenticated athlete's heart rate and power zones. This endpoint returns the athlete's configured training zones for both heart rate and power, including zone thresholds and time spent 
- `POST https://api.mcp.ai/api/strava/list/activity/comments` — Retrieves comments on a specific Strava activity, sorted oldest first. Returns comment details including the comment text, author information, and timestamps. Supports cursor-based pagination for acti
  - body: { id: string, page_size?: integer, after_cursor?: string }
- `POST https://api.mcp.ai/api/strava/list/activity/kudoers` — Returns the athletes who kudoed an activity identified by an identifier. Requires activity:read for Everyone and Followers activities. Requires activity:read_all for Only Me activities.
  - body: { id: integer, page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/activity/laps` — Retrieves lap data for a specific Strava activity. Laps represent segments of an activity, typically auto-generated during activities like running or cycling based on distance intervals, manual lap bu
  - body: { id: integer }
- `POST https://api.mcp.ai/api/strava/list/athlete/activities` — Retrieves a paginated list of activities for the authenticated athlete. Returns activity summaries including name, type, distance, duration, elevation gain, speed, heart rate data, and timestamps. Use
  - body: { page?: integer, after?: integer, before?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/athlete/clubs` — Retrieves a paginated list of Strava clubs the authenticated athlete is a member of. Returns club details including id, name, location, member count, sport type, and profile images. Use the club id fr
  - body: { page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/athlete/routes` — Lists routes created by a specific athlete. Returns an array of Route summaries including id, name, distance, elevation gain, and type. Private routes are filtered out unless the token has read_all sc
  - body: { id: integer, page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/club/activities` — Retrieve recent activities from members of a specific club. IMPORTANT: The authenticated athlete must be a member of the requested club to access this endpoint. Use 'List Athlete Clubs' first to get c
  - body: { id: integer, page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/club/administrators` — Returns a list of the administrators of a given Strava club. The response includes each administrator's first name, last name (possibly abbreviated), and resource state. For public clubs, this endpoin
  - body: { id: integer, page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/club/members` — Returns a list of the athletes who are members of a given club. The authenticated athlete must belong to the requested club to access this endpoint. Results are paginated and can be controlled using p
  - body: { id: integer, page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/list/segment/efforts` — List the authenticated athlete's efforts on a given segment. Returns all segment efforts for the authenticated athlete on the specified segment, optionally filtered by date range. Segment efforts repr
  - body: { per_page?: integer, segment_id: integer, end_date_local?: string, start_date_local?: string }
- `POST https://api.mcp.ai/api/strava/list/starred/segments` — Returns a list of the authenticated athlete's starred segments with summary details including segment name, distance, elevation, grade, and location. Private segments are filtered out unless requested
  - body: { page?: integer, per_page?: integer }
- `POST https://api.mcp.ai/api/strava/star/segment` — Stars/Unstars the given segment for the authenticated athlete. Requires profile:write scope.
  - body: { id: integer, starred?: boolean }
- `POST https://api.mcp.ai/api/strava/update/athlete` — Update the currently authenticated athlete's profile. Currently only supports updating the athlete's weight. Requires profile:write scope.
  - body: { weight: number }
- `POST https://api.mcp.ai/api/strava/upload/activity` — Uploads a new activity file (FIT, TCX, or GPX) to create an activity on Strava. The upload is processed asynchronously. This endpoint returns an upload ID immediately, which can be used with the Get U
  - body: { file: object, name?: string, commute?: boolean, trainer?: boolean, data_type: string, sport_type?: string, description?: string, external_id?: string }
- `POST https://api.mcp.ai/api/strava/validate/credential` — Validates Strava API credentials by fetching the authenticated athlete's profile. Returns basic athlete information to confirm the access token is valid and active. Use this action when you need to ve

## Example prompts
- "What can I do in Strava?"
- "Show me a summary of my Strava account"

## More
- Page: https://mcp.ai/strava
- Agent spec (llms.txt): https://mcp.ai/strava/llms.txt
- Postman collection: https://mcp.ai/strava/postman.json
