A Model Context Protocol (MCP) server for interacting with the Strava API.
The Strava MCP Server is a tool designed to interact with the Strava API using the Model Context Protocol (MCP). It provides a seamless way to retrieve and manage Strava activities, segments, and leaderboards.
You can easily install Strava MCP with uvx
:
uvx strava-mcp
For "Authorization Callback Domain", enter localhost
Configure Your Credentials: Create a credentials file (e.g., ~/.ssh/strava.sh
):
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret
/Users/<username>/Library/Application Support/Claude/claude_desktop_config.json
):"strava": {
"command": "bash",
"args": [
"-c",
"source ~/.ssh/strava.sh && uvx strava-mcp"
]
}
The first time you use the Strava MCP tools:
Retrieves activities for the authenticated user.
Parameters:
- before
(optional): Epoch timestamp for filtering
- after
(optional): Epoch timestamp for filtering
- page
(optional): Page number (default: 1)
- per_page
(optional): Number of items per page (default: 30)
Gets detailed information about a specific activity.
Parameters:
- activity_id
: The ID of the activity
- include_all_efforts
(optional): Include segment efforts (default: false)
Retrieves segments from a specific activity.
Parameters:
- activity_id
: The ID of the activity
Gets the leaderboard for a specific segment.
Parameters:
- segment_id
: The ID of the segment
- Various optional filters (gender, age group, etc.)
git clone <repository-url>
cd strava
uv install
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret
Alternatively, create a .env
file with these variables.
Run the server with MCP CLI:
mcp dev strava_mcp/main.py
You can get a refresh token manually by running:
python get_token.py
strava_mcp/
: Main package directory__init__.py
: Package initializationconfig.py
: Configuration settings using pydantic-settingsmodels.py
: Pydantic models for Strava API entitiesapi.py
: Low-level API client for Stravaauth.py
: Strava OAuth authentication implementationoauth_server.py
: Standalone OAuth server implementationservice.py
: Service layer for business logicserver.py
: MCP server implementationtests/
: Unit testsstrava_mcp/main.py
: Main entry point to run the serverget_token.py
: Utility script to get a refresh token manuallypytest
# Build both sdist and wheel
uv build
# Publish to Test PyPI first
uv publish --index testpypi
# Publish to PyPI
uv publish