Strava MCP Server

Unofficial local-first Strava MCP server for AI training and performance agents.

Local serverstdio

What is the Strava MCP server?

Strava MCP server exists for a simple reason — assistants are far more useful when they can act on Strava directly instead of describing what you should do. Unofficial local-first Strava MCP server for AI training and performance agents.

What you get

Setting it up

Installation goes through your MCP client rather than a global install: point it at delx-wellness-hermes on npm and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.

What the assistant can call

Once Strava is connected, these are the calls the assistant has available:

  • strava_connection_status — verify local setup, scopes and readiness before calling Strava
  • strava_data_inventory — inventory supported data domains, scopes, privacy modes and recommended first calls without calling Strava APIs
  • strava_daily_summary — latest activity, weekly load and intensity context for today
  • strava_weekly_summary — scorecard, comparison vs prior week, next-week training plan
  • strava_get_activity_streams — GPS lat/lng requires include_gps=true or raw mode

Configuration and credentials

You will need 2 environment variables: STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.

  • Node.js 20+ - A Strava app with redirect URI http://127.0.0.1:3000/callback Why these scopes: - read — public profile, routes and public Strava resources - activity:read_all — your activities, including private activities visible to your app - profile:read_all — fuller authenticated athlete profile fields No write scope is requested by default.

Before you rely on it

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the strava mcp server does with a few real requests.

Choosing this one

Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Strava's toolset — strava_connection_status, strava_data_inventory, strava_daily_summary and 2 more — is a fair guide to whether it matches your workflow. It is maintained by davidbatista; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

Available tools

ToolWhat it does
strava_connection_statusverify local setup, scopes and readiness before calling Strava
strava_data_inventoryinventory supported data domains, scopes, privacy modes and recommended first calls without calling Strava APIs.
strava_daily_summarylatest activity, weekly load and intensity context for today
strava_weekly_summaryscorecard, comparison vs prior week, next-week training plan
strava_get_activity_streamsGPS lat/lng requires include_gps=true or raw mode

How to install the Strava MCP server

{
  "mcpServers": {
    "strava-1": {
      "command": "npx",
      "args": ["-y", "delx-wellness-hermes"],
      "env": {
        "STRAVA_CLIENT_ID": "your-value",
        "STRAVA_CLIENT_SECRET": "your-value"
      }
    }
  }
}

Add to claude_desktop_config.json, then restart Claude Desktop.

Configuration

  • Node.js 20+ - A Strava app with redirect URI http://127.0.0.1:3000/callback Why these scopes: - read — public profile, routes and public Strava resources - activity:read_all — your activities, including private activities visible to your app - profile:read_all — fuller authenticated athlete profile fields No write scope is requested by default.
VariableDescriptionRequired
STRAVA_CLIENT_IDConfiguration value read at startup.Optional
STRAVA_CLIENT_SECRETCredential the server authenticates with.Yes

Example prompts to try

  • Use Strava to strava connection status.
  • Use Strava to strava data inventory.
  • Use Strava to strava daily summary.

Frequently asked questions

It connects Strava to MCP-compatible AI assistants such as Claude and Cursor, exposing 5 tools (strava_connection_status, strava_data_inventory, strava_daily_summary, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Strava directly.