strava
MCP server enabling LLMs to interact with the Strava API - activities, segments, routes, and training analysis
claude mcp add --transport stdio eddmann-strava-mcp uv run --directory /ABSOLUTE/PATH/TO/strava-mcp strava-mcp --transport stdio \ --env STRAVA_CLIENT_ID="Your Strava client ID" \ --env STRAVA_MCP_BASE_URL="Optional base URL for HTTP mode (e.g., http://localhost:8000)" \ --env STRAVA_CLIENT_SECRET="Your Strava client secret"
How to use
This Strava MCP Server exposes 11 tools grouped into Activities, Athlete, Segments, Routes, and Analysis to let Claude, ChatGPT, or other LLMs interact with your Strava data. In both Stdio and HTTP modes, you authenticate with Strava once (stdio uses a pre-configured token flow stored locally, HTTP mode supports per-user OAuth sessions). The server also provides an Athlete profile resource and a set of prompt templates to assist with training analysis, segment performance, activity deep dives, run comparisons, and a comprehensive training summary. To use it with Claude or ChatGPT, point your MCP endpoint at the server (either locally via uv or via an HTTP/remote deployment) and select from the built-in tools and prompts to retrieve data from your Strava account or generate insights.
Common workflows include analyzing training over a date range, comparing runs, evaluating segment performance, exporting routes, and generating athlete-level stats. The tools are designed to work with natural-language prompts, for example asking for a segment leaderboard, retrieving recent activities, or requesting a training summary for the last month. The server supports cursor-based pagination for list results (10 items per page for standard lists, 50 for leaderboards).
How to install
Prerequisites:
- Python 3.11+ and uv (uvx/uv recommended for Python), or Docker
- A Strava API application with Client ID and Client Secret
Option A – Using UV (recommended for local development):
# 1) Clone the repository and navigate to the Strava MCP directory
cd /path/to/strava-mcp
# 2) Install dependencies (Python project)
# (Assuming a requirements.txt or pyproject.toml is present in the repo)
python -m pip install -r requirements.txt
Configure credentials via the setup wizard (interactive):
# 3) Run the auth setup wizard (stdio mode by default prefers a pre-configured environment)
uv run strava-mcp-auth
Option B – Using Docker:
# 1) Pull the image
docker pull ghcr.io/eddmann/strava-mcp:latest
# 2) Create the env file and run the setup wizard inside a container
# Create a local env file (will be mounted into the container)
touch strava-mcp.env
docker run -it --rm \
-v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
--entrypoint= \
ghcr.io/eddmann/strava-mcp:latest \
python -m strava_mcp.scripts.setup_auth
Optional: Run in HTTP mode (multi-user) after setup:
# Using UV in HTTP mode
uv run --directory /ABSOLUTE/PATH/TO/strava-mcp strava-mcp --transport http
# Using Docker in HTTP mode
docker run -p 8000:8000 --rm \
-v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
ghcr.io/eddmann/strava-mcp:latest \
--transport http
Prerequisites details:
- Strava API application credentials (Client ID, Client Secret) must be configured during the setup wizard
- Ensure the Strava OAuth scopes include: profile:read_all, activity:read_all, activity:read, profile:write
Note: The README also outlines optional environment-based setups and Claude/Desktop integration. Adjust the absolute paths and environment variables to match your deployment environment.
Additional notes
Tips and common issues:
- Ensure your Strava API app is configured with an Authorization Callback Domain of localhost when using local development.
- For HTTP mode, tokens are stored per-session; ensure your session store (in-memory or DynamoDB) is configured if you plan multi-user access.
- When testing locally with ngrok, set STRAVA_MCP_BASE_URL to your exposed URL and restart the server to pick up changes.
- If you encounter OAuth failures, re-run the setup wizard to re-authorize or refresh tokens.
- List-returning tools use cursor-based pagination; consider implementing iterative prompts to fetch subsequent pages if needed.
Related MCP Servers
openapi
OpenAPI definitions, converters and LLM function calling schema composer.
mxcp
Model eXecution + Context Protocol: Enterprise-Grade Data-to-AI Infrastructure
omega-memory
Persistent memory for AI coding agents
gtm
An MCP server for Google Tag Manager. Connect it to your LLM, authenticate once, and start managing GTM through natural language.
cursor-feedback-extension
Save your Cursor monthly quota! Unlimited AI interactions in one conversation via MCP feedback loop.
the-academy
A Socratic dialogue engine for AI agents.