About Strava Mcp
Strava Mcp connects Strava accounts to MCP clients for people who want to query activity data through clients such as Claude. It covers activities, stats, routes, clubs, and social data, with OAuth authentication.
Key features
- 01OAuth authentication with automatic token refresh
- 02Query activities and training statistics
- 03View athlete profiles
- 04Explore segments and retrieve routes
- 05Browse clubs and social activity
Use cases
- 01Summarize recent runs or rides
- 02Review yearly training statistics
- 03Find running segments nearby
- 04Check activity kudos, comments, or personal KOMs
MCP support
It connects to Strava as an MCP server and provides tools for querying and updating account data in Claude Desktop or other compatible clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx 'git+https://github.com/bronteee/strava-mcp.git'STRAVA_CLIENT_IDSTRAVA_CLIENT_SECRETSecretLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
8Saved tool list · updated 2w ago
This tool takes no parameters.
Details
From the project READMEStrava MCP Server
An MCP (Model Context Protocol) server that connects Claude to your Strava data. Query your activities, stats, and athlete profile directly from Claude Desktop or any MCP-compatible client.
Features
- OAuth Authentication: Secure authentication with automatic token refresh
- Activity Data: Get recent activities, detailed activity info, stats, and update notes
- Athlete Profile: Access your Strava profile and statistics
- Segments & Routes: Explore running segments by location, view route details
- Clubs & Community: Browse your clubs, members, and club activities
- Social: View kudos, comments, KOMs, and starred segments
Installation
Prerequisites
- Python 3.10+ installed
- Strava API Application: Create one at https://www.strava.com/settings/api
- Set the "Authorization Callback Domain" to
127.0.0.1
- Set the "Authorization Callback Domain" to
Install from GitHub
pip install git+https://github.com/bronteee/strava-mcp.git
Or with uv:
uv pip install git+https://github.com/bronteee/strava-mcp.git
Configure Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"strava": {
"command": "strava-mcp",
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret"
}
}
}
}
If installed with uv, use:
{
"mcpServers": {
"strava": {
"command": "uvx",
"args": ["--from", "git+https://github.com/bronteee/strava-mcp.git", "strava-mcp"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Usage
Authentication
- Ask Claude: "Connect to my Strava account"
- Claude will provide an authorization URL
- Open the URL in your browser and authorize the app
- You're connected for the current session
Note: Tokens are stored in memory only. You'll need to re-authenticate each time Claude Desktop restarts.
Available Tools
Authentication
| Tool | Description |
|---|---|
get_auth_status | Check if you're authenticated |
get_auth_url | Get the Strava authorization URL |
authenticate | Exchange auth code for tokens (usually automatic) |
logout | Remove stored tokens |
Activities & Athletes
| Tool | Description |
|---|---|
get_activities | Get recent activities with optional date filters |
get_activity_details | Get detailed info for a specific activity |
update_activity_notes | Update the notes/description of an activity |
get_athlete | Get your athlete profile |
get_athlete_stats | Get your running/cycling/swimming stats |
Segments & Routes
| Tool | Description |
|---|---|
geocode_location | Convert location name to coordinates for segment search |
explore_running_segments | Find running segments in an area |
get_segment | Get detailed segment info with polyline |
get_my_routes | List your created routes |
get_route | Get detailed route info with embedded segments |
Clubs & Community
| Tool | Description |
|---|---|
get_my_clubs | List clubs you're a member of |
get_club | Get detailed club info |
get_club_members | List members of a club |
get_club_activities | Get recent activities from club members |
Social & Engagement
| Tool | Description |
|---|---|
get_activity_kudos | See who gave kudos to an activity |
get_activity_comments | Get comments on an activity |
get_my_koms | Get your KOMs (King/Queen of the Mountain) |
get_starred_segments | Get your starred segments |
Example Prompts
- "Show me my last 5 Strava activities"
- "What were my running stats this year?"
- "Get details for my most recent ride"
- "Update the notes on my last activity to say 'Great morning run!'"
- "How many miles did I run last month?"
- "Find running segments near Central Park"
- "What clubs am I in?"
- "Show me who gave kudos on my last run"
- "What are my KOMs?"
Development
Setup
git clone https://github.com/bronteee/strava-mcp.git
cd strava-mcp
uv sync --dev
Run Tests
uv run pytest
Type Check
uv run ty check src
Run the Server Manually
# Set environment variables
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret
# Run the server
strava-mcp
Security
- Tokens are stored in memory only and cleared when the server stops
- Client credentials are passed via environment variables, never stored in files
- OAuth flow uses localhost callback - no external servers involved
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.