strava.com
strava.com logo

Strava

Integrates with the Strava API to retrieve and analyze athlete activities data, enabling fitness tracking and performanc...

Created byApr 23, 2025

Strava MCP Server

![Python Package](https://github.com/tomekkorbak/strava-mcp-server/workflows/Python%20Package/badge.svg) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)
A [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP) server that provides access to the Strava API. It allows language models to query athlete activities data from the Strava API.

Available Tools

The server exposes the following tools:

Activities Queries

  • `get_activities(limit: int = 10)`: Get the authenticated athlete's recent activities
  • `get_activities_by_date_range(start_date: str, end_date: str, limit: int = 30)`: Get activities within a specific date range
  • `get_activity_by_id(activity_id: int)`: Get detailed information about a specific activity
  • `get_recent_activities(days: int = 7, limit: int = 10)`: Get activities from the past X days
Dates should be provided in ISO format (`YYYY-MM-DD`).

Activity Data Format

The server returns activity data with consistent field names and units:
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]
[object Object]

Authentication

To use this server, you'll need to authenticate with the Strava API. Follow these steps:
  1. Create a Strava API application: - Go to [Strava API Settings](https://www.strava.com/settings/api) - Create an application to get your Client ID and Client Secret - Set the Authorization Callback Domain to `localhost`
  1. Get your refresh token: - Use the included `get_strava_token.py` script: ```bash python get_strava_token.py ``` - Follow the prompts to authorize your application - The script will save your tokens to a `.env` file
  1. Set environment variables: The server requires the following environment variables: - `STRAVA_CLIENT_ID`: Your Strava API Client ID - `STRAVA_CLIENT_SECRET`: Your Strava API Client Secret - `STRAVA_REFRESH_TOKEN`: Your Strava API Refresh Token

Usage

Claude for Desktop

Update your `claude_desktop_config.json` (located in `~/Library/Application\ Support/Claude/claude_desktop_config.json` on macOS and `%APPDATA%/Claude/claude_desktop_config.json` on Windows) to include the following:

Claude Web

For Claude Web, you can run the server locally and connect it using the MCP extension.

Example Queries

Once connected, you can ask Claude questions like:
  • "What are my recent activities?"
  • "Show me my activities from last week"
  • "What was my longest run in the past month?"
  • "Get details about my latest cycling activity"

Error Handling

The server provides human-readable error messages for common issues:
  • Invalid date formats
  • API authentication errors
  • Network connectivity problems

License

This project is licensed under the MIT License - see the LICENSE file for details.