# Strava — MCP server on 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. By: mcp.ai · official Page: https://mcp.ai/strava ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_strava?ms=1787293620000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/strava/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/strava/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/strava/skill.md Postman collection (v2.1): https://mcp.ai/strava/postman.json ## Tools - strava_add_activity_laps(id: integer) — 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 - strava_create_an_activity(name: string, type?: string, commute?: integer, trainer?: integer, distance?: number, sport_type: string, description?: string, elapsed_time: integer, start_date_local: string) — 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 - strava_explore_segments(bounds: string, max_cat?: integer, min_cat?: integer, activity_type?: string) — 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 - strava_export_route_gpx(id: string) — 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 - strava_export_route_tcx(id: string) — 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 - strava_get_activity(id: string, include_all_efforts?: boolean) — 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 ( - strava_get_activity_streams(id: integer, keys: string[], key_by_type?: boolean) — 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 - strava_get_activity_zones(id: string) — 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 - strava_get_athlete_stats(id: integer) — 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 - 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 - 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 - strava_get_club(id: integer) — 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 - strava_get_equipment(id: string) — 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). - strava_get_route(id: integer) — 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 - strava_get_route_streams(id: integer) — 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. - strava_get_segment(id: integer) — 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 - strava_get_segment_effort(id: integer) — 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 - strava_get_segment_effort_streams(id: string, keys: string, key_by_type?: boolean) — 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 - strava_get_segment_streams(id: integer, keys: string, key_by_type?: boolean) — 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 - strava_get_upload(uploadId: integer) — 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 - 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 - strava_list_activity_comments(id: string, page_size?: integer, after_cursor?: string) — 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 - strava_list_activity_kudoers(id: integer, page?: integer, per_page?: integer) — 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. - strava_list_activity_laps(id: integer) — 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 - strava_list_athlete_activities(page?: integer, after?: integer, before?: integer, per_page?: integer) — 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 - strava_list_athlete_clubs(page?: integer, per_page?: integer) — 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 - strava_list_athlete_routes(id: integer, page?: integer, per_page?: integer) — 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 - strava_list_club_activities(id: integer, page?: integer, per_page?: integer) — 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 - strava_list_club_administrators(id: integer, page?: integer, per_page?: integer) — 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 - strava_list_club_members(id: integer, page?: integer, per_page?: integer) — 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 - strava_list_segment_efforts(per_page?: integer, segment_id: integer, end_date_local?: string, start_date_local?: string) — 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 - strava_list_starred_segments(page?: integer, per_page?: integer) — 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 - strava_star_segment(id: integer, starred?: boolean) — Stars/Unstars the given segment for the authenticated athlete. Requires profile:write scope. - strava_update_athlete(weight: number) — Update the currently authenticated athlete's profile. Currently only supports updating the athlete's weight. Requires profile:write scope. - strava_upload_activity(file: object, name?: string, commute?: boolean, trainer?: boolean, data_type: string, sport_type?: string, description?: string, external_id?: string) — 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 - 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" ## Links Docs: https://mcp.ai/docs/mcps/strava Website: https://mcp.ai/mcps/strava