Connect your AI Agents to Strava in minutes

Merge lets you securely connect your agents to Strava and thousands of tools instantly

Available tools

create_activity

Create a manual activity. Requires name, type (Run, Ride, Swim, etc.), start_date_local (ISO 8601), and elapsed_time (seconds).

get_activity

Get an activity by ID. Returns detailed activity data including stats, map, and segment efforts.

update_activity

Update an activity. Can change name, type, description, trainer, commute, and gear_id. Set gear_id to 'none' to remove gear.

list_athlete_activities

List the authenticated athlete's activities with pagination. Filter by before/after epoch timestamps. Use page and per_page for pagination.

list_activity_comments

List comments on an activity. Use page and per_page for pagination.

list_activity_kudoers

List athletes who gave kudos on an activity. Use page and per_page for pagination.

get_activity_laps

Get laps for an activity. Returns lap splits with time, distance, and pace data.

get_authenticated_athlete

Get the authenticated athlete's profile. Returns detailed info including name, location, stats, and gear.

update_athlete

Update the authenticated athlete's profile. Currently only weight can be updated.

get_athlete_zones

Get the authenticated athlete's heart rate and power zones.

get_athlete_stats

Get an athlete's activity stats (totals, recent, year-to-date). Use get_authenticated_athlete to find the athlete ID.

get_club

Get a club by ID. Returns club details including name, location, member count, and sport type.

list_athlete_clubs

List clubs the authenticated athlete belongs to. Use page and per_page for pagination.

list_club_members

List members of a club. Use page and per_page for pagination.

list_club_admins

List admins of a club. Use page and per_page for pagination.

get_route

Get a route by ID. Returns route details including name, distance, elevation, and map data.

list_athlete_routes

List an athlete's routes. Use get_authenticated_athlete to find the athlete ID. Use page and per_page for pagination.

export_route_gpx

Export a route as GPX XML. Returns the GPX file content as a string.

export_route_tcx

Export a route as TCX XML. Returns the TCX file content as a string.

get_segment

Get a segment by ID. Returns segment details including name, distance, grade, and elevation.

explore_segments

Explore segments in a geographic area. Provide bounds as 'sw_lat,sw_lng,ne_lat,ne_lng'. Optionally filter by activity_type ('running' or 'riding').

list_starred_segments

List the authenticated athlete's starred segments. Use page and per_page for pagination.

star_segment

Star or unstar a segment. Set starred to true to star or false to unstar.

get_activity_streams

Get activity streams (time series data). Specify keys like time, distance, latlng, altitude, heartrate, cadence, watts, temp, moving, grade_smooth.

get_route_streams

Get route streams (distance and altitude data).

get_segment_streams

Get segment streams (distance and altitude data). Specify keys like distance, altitude, latlng.

upload_activity

Upload an activity file (FIT, TCX, GPX). Provide base64-encoded file content and data_type (fit, tcx, gpx, or .gz variants).

get_upload

Check the status of an activity upload. Returns processing status and activity_id when complete.

validate_credential

Validate Strava credentials. Verifies credentials during setup.

View all tools by creating a free accountSee more tools

How to set up Merge Agent Handler

In an mcp.json file, add the configuration below, and restart Cursor.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5      "headers": {
6        "Authorization": "Bearer yMt*****"
7      }
8    }
9  }
10}
11
Copy Code

Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.

Make sure Claude is using the Node v20+.

Learn more in the official documentation ↗

1{
2  "mcpServers": {
3    "agent-handler": {
4      "command": "npx",
5      "args": [
6        "-y",
7        "mcp-remote@latest",
8        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9        "--header",
10        "Authorization: Bearer ${AUTH_TOKEN}"
11      ],
12      "env": {
13        "AUTH_TOKEN": "yMt*****"
14      }
15    }
16  }
17}
Copy Code
Copied!

Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.

Learn more in the official documentation ↗

1{
2    "mcpServers": {
3      "agent-handler": {
4        "command": "npx",
5        "args": [
6          "-y",
7          "mcp-remote@latest",
8          "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9          "--header",
10          "Authorization: Bearer ${AUTH_TOKEN}"
11        ],
12        "env": {
13          "AUTH_TOKEN": "<ah-production-access-key>"
14        }
15      }
16    }
17  }
Copy Code

In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".

You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.

Learn more in the official documentation ↗

1{
2  "inputs": [
3    {
4      "type": "promptString",
5      "id": "agent-handler-auth",
6      "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7      "password": true
8    }
9  ],
10  "servers": {
11    "agent-handler": {
12      "type": "stdio",
13      "command": "npx",
14      "args": [
15        "-y",
16        "mcp-remote@latest",
17        "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18        "--header",
19        "Authorization: Bearer ${input:agent-handler-auth}"
20      ]
21    }
22  }
23}
Copy Code

FAQs on using Merge's Strava  MCP server

FAQs on using Merge's Strava  MCP server

What is a Strava MCP?

It's an MCP server that gives your agents direct access to Strava's fitness and activity data via tools. Your agents can invoke these tools to retrieve athlete activities, fetch performance stats, explore route segments, manage club memberships, and more.

Strava doesn't offer an MCP server purpose built for Strava, but you can use one from a third-party platform, like Merge Agent Handler.

How can I use the Strava MCP server?

The use cases naturally depend on the agent you've built, but here are a few common ones:

  • Post-workout coaching digest: After an athlete completes an activity, an agent fetches the activity streams (pace, heart rate, and power) and historical stats from Strava, then sends a personalized performance summary to the athlete via email or Slack
  • Weekly training volume report: An agent pulls the past 7 days of activities from Strava, compares total mileage against a training plan stored in a spreadsheet, and generates a summary for a coach or training app
  • Segment discovery for route planning: When a user enters a new region, an agent calls Strava to explore nearby segments ranked by popularity, then adds the top picks to a connected route planning or mapping tool
  • Club activity leaderboard: An agent pulls recent activities from Strava club members, identifies who logged a workout in the past 24 hours, and posts a daily leaderboard to the club's Slack or Discord channel

What are popular tools for Strava's MCP server?

Here are some of the most commonly used tools:

  • list_athlete_activities: returns a paginated list of activities for the authenticated athlete, sorted by date. Useful for agents that need to scan recent workouts as part of a reporting or coaching workflow
  • get_activity: retrieves full details for a single activity, including distance, elapsed time, elevation, and gear. Call this when an agent needs granular activity data to power a summary or comparison
  • get_activity_streams: fetches raw time-series data for an activity, including pace, heart rate, power output, and cadence. Good for workflows that need to analyze performance at a per-second resolution
  • get_athlete_stats: pulls lifetime and recent totals for the authenticated athlete, covering total distance run, ridden, or swum. Helpful when an agent needs a high-level performance overview rather than individual activity records
  • explore_segments: searches for Strava segments within a map bounds area, filterable by activity type. Use this when an agent is building route recommendations or identifying competitive benchmarks in a given region
  • create_activity: logs a manual activity entry against the athlete's account with fields like type, distance, and duration. Use this when an agent needs to record an activity sourced from an external device or system that doesn't sync automatically

What makes Merge Agent Handler's Strava MCP server better than alternative Strava MCP servers?

Merge Agent Handler's Strava MCP server has a few distinct advantages over rolling your own or relying on an alternative:

  • Enterprise-grade security and DLP: Merge Agent Handler includes built-in data loss prevention controls that let you block or redact sensitive fields before they reach an agent. For Strava, this means you can prevent athlete health data, location history, and personal performance records from being exposed even when the agent has broad read access
  • Managed authentication and credentials: Merge stores and refreshes Strava OAuth tokens on your behalf. You never hand raw credentials to an agent or build your own token refresh logic
  • Real-time observability and audit trail: Every tool call made against Strava is logged with timestamp, tool name, input parameters, and response metadata. You can review exactly what an agent read or wrote without adding any instrumentation to your own code
  • Tool Packs and controlled access: Tool Packs let you bundle specific Strava tools with tools from other connectors into a single MCP endpoint, scoped to a specific use case. An agent gets exactly the tools it needs, nothing more

How can I start using Merge Agent Handler's Strava MCP server?

You can take the following steps:

1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case).

2. Create a new Tool Pack, then find and enable the Strava connector. Choose which tools to include: enable read tools like list_athlete_activities and get_athlete_stats for analysis and reporting, or add write tools like create_activity and update_activity if your agent needs to log or modify activity records.

3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created.

4. From the Registered User detail page, authenticate Strava by completing the OAuth flow. Merge stores and manages the credentials going forward.

5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent.

6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Strava tools are now accessible through that endpoint.

Explore other MCP servers built and managed by Merge

activecampaign
ActiveCampaign
ahrefs
Ahrefs
airtable
Airtable
amadeus
Amadeus
amazon_s3
Amazon S3
amplitude
Amplitude
anaplan
Anaplan
apollo
Apollo
arize
Arize
articulate
Articulate Reach 360
asana
Asana
attio
Attio
aviationstack
Aviationstack
bamboohr
BambooHR
basecamp
Basecamp
biorxiv
bioRxiv
bitbucket
Bitbucket
bitly
Bitly
box
Box
calendly
Calendly
canva
Canva
clickup
ClickUp
clinicaltrials
ClinicalTrials.gov
cloudflare
Cloudflare

Ready to try it out?

Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now