Skip to main content
Glama
flowchart TD A[Start in VS Code] --> B[Write server.py with MCP tools and env based config] B --> C["Install deps in venv: mcp[cli], requests, anyio"] C --> D["Strava app settings: Authorisation Callback Domain = localhost, Website = http://localhost"] D --> E["In Claude Desktop add server env vars:<br/>STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET,<br/>STRAVA_REDIRECT_URI, STRAVA_TOKEN_PATH, STRAVA_SCOPES"] E --> F[Claude launches MCP server via venv python and args server.py] F --> G{You run oauth_login in Claude} G --> H[Server starts local callback on http://localhost:8723/callback and opens browser] H --> I[You sign in to Strava and authorise] I --> J[Strava redirects back with code] J --> K["Server POST /oauth/token with client_id, client_secret, code"] K --> |200 OK| L["Server saves access_token, refresh_token, expires_at to STRAVA_TOKEN_PATH"] L --> M[You call list_activities or get_activity from Claude] M --> N{Is access_token expired soon} N -- Yes --> O["Server POST /oauth/token with refresh_token to get new tokens"] O --> L N -- No --> P["Server calls Strava API with Authorization: Bearer access_token"] P --> Q[JSON returns to MCP server] Q --> R[Claude replies to you with a summary] %% Error branch during login K --> |401 or other error| S{Error type} S --> |client_secret invalid| T[Fix STRAVA_CLIENT_SECRET in Claude env then run oauth_login again] S --> |client_id invalid| U[Fix STRAVA_CLIENT_ID then run oauth_login again] S --> |redirect_uri mismatch| V[Keep STRAVA_REDIRECT_URI = http://localhost:8723/callback and dashboard domain = localhost] S --> |code invalid or expired| W[Run oauth_login again and authorise promptly]

MCP Strava Server

A small Python MCP server that lets Claude Desktop read your Strava activities. Ask things like: show my last 10 runs with distance and average pace.

What it does

  • Tools: oauth_login, list_activities, get_activity

  • Local OAuth with automatic token refresh

  • Tokens saved to a local JSON file that is not committed

Prereqs

  • Windows 10 or 11 on x64

  • Python 3.10 or newer

  • Claude Desktop installed

Setup

cd C:\Users\AtikantJain\mcp-strava python -m venv .venv . .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt
-
security - not tested
F
license - not found
-
quality - not tested

Related MCP Servers

  • -
    security
    A
    license
    -
    quality
    Connects to Garmin Connect and exposes your fitness and health data (activities, sleep, heart rate, steps, body composition) to Claude and other MCP-compatible clients.
    Last updated -
    107
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    Connects Claude with Spotify, allowing users to control playback, search for content, get music information, and manage the Spotify queue.
    Last updated -
    9
    4
    MIT License
    • Apple
  • -
    security
    F
    license
    -
    quality
    Connects Claude with Spotify to control playback, search music, get track information, and manage the queue through conversation.
    Last updated -
    1
  • A
    security
    A
    license
    A
    quality
    Connects Claude with the Intervals.icu API to retrieve fitness data including activities, workouts, wellness metrics, and training events.
    Last updated -
    6
    100
    GPL 3.0
    • Apple
    • Linux

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/atikant-sql/mcp-strava'

If you have feedback or need assistance with the MCP directory API, please join our Discord server