Integrate Strava MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with Strava
Update fields on an existing Strava activity owned by the authenticated athlete. Use Search Activities first to resolve a name to an activityId. Only fields you provide are updated; omitted fields are left unchanged. sportType uses Strava's modern sport_type enum (not the legacy type field). See the documentation
Search and list the authenticated athlete's Strava activities, ordered most-recent first. Use the before and after epoch parameters to scope a time window. Set after to fetch only activities since a known timestamp (efficient delta sync). For real-time activity notifications, prefer the Activity Created, Activity Updated, or Activity Deleted webhook sources over polling this tool. Cross-references: use Get Activity to fetch a single activity's full details, Get Activity Laps for lap breakdowns, Get Activity Comments for comments, Get Activity Kudoers for kudos. Strava read rate limits: 600 / 15 min and 30,000 / day per application. Large unfiltered fetches consume quota — prefer after for incremental work. See the documentation
Returns the activity stats of an athlete. Only includes data from activities set to Everyone visibilty. See the docs
Identity tool for Strava — returns the currently authenticated athlete (summary representation including id, firstname, lastname, profile photo). Use this whenever you need to know who the connected user is, or to surface the athlete ID for downstream tools. Note: a detailed athlete representation requires the profile:read_all scope, which is not configured for this connector. This tool returns the summary representation. See the documentation
Get the authenticated athlete's recent, year-to-date, and all-time stats — including totals for runs, rides, and swims. By default, resolves the authenticated athlete's ID automatically (no input needed). Pass athleteId to look up another athlete's publicly-visible stats instead. Stats only include activities the requesting user has permission to view. For private activities of another athlete, results will be limited. See the documentation
Fetch a single Strava activity by ID with full detail. Use Search Activities first to resolve an activity name to an activityId. Set includeAllEfforts to true to include all segment efforts (slower, larger response — leave false for most reads). For sub-resources (comments, kudos, laps), use the dedicated tools: Get Activity Comments, Get Activity Kudoers, Get Activity Laps. See the documentation
Returns the activities of an athlete for a specific identifier. See the docs
Return the lap-level breakdown for a Strava activity (split times, distances, average speeds, heart rate per lap). Use Search Activities first to resolve a name to an activityId. Note: manually-created activities and some sport types may have no laps; the response will be an empty array in that case (not an error). Returns { laps, _rateLimitUsage } — _rateLimitUsage includes Strava's X-RateLimit-Usage and X-ReadRateLimit-Usage so flows can observe approach to the rate-limit cap. See the documentation
Return the athletes who gave kudos to a Strava activity. Use Search Activities first to resolve a name to an activityId. Empty array if no one has kudosed the activity. Returns { kudoers, _rateLimitUsage } — _rateLimitUsage exposes Strava's rate-limit headers for observability. See the documentation
Return comments on a Strava activity. Use Search Activities first to resolve a name to an activityId. Use pageSize to control the per-page result count (Strava default and max apply). Empty array if no one has commented. Returns { comments, _rateLimitUsage } — _rateLimitUsage exposes Strava's rate-limit headers for observability. See the documentation
Returns the given activity that is owned by the authenticated athlete. See the docs
Create a manual activity on Strava (logging a workout you did without a tracking device). For uploading activity files (GPX / TCX / FIT), use Strava's upload endpoint — not exposed by this connector. Pass sportType from Strava's documented sport_type enum (modern field, replaces legacy type). Common values: Run, Ride, Hike, Swim, Walk, Workout, Yoga. startDateLocal must be ISO 8601 in the athlete's local time with timezone offset or Z for UTC. Example: 2026-05-15T07:00:00Z. See the documentation