Strava MCP Server
Access the Strava API to interact with activities, athlete information, and other Strava data.
Strava MCP Server
A Model Context Protocol (MCP) server that provides access to the Strava API. This server enables language models to interact with Strava data, including activities, athlete information, and more.
Features
- πββοΈ Activity tracking and analysis
- π Athlete statistics
- πΊοΈ Route visualization
- π Achievement tracking
- π€ Social features (kudos, comments)
Prerequisites
- Python 3.12+
- Strava API credentials
- pip (Python package installer)
Installation
- Clone the repository:
git clone https://github.com/yourusername/strava_mcp.git
cd strava_mcp
- Create a virtual environment:
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt
Configuration
- Create a
config/.envfile with your Strava API credentials:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REFRESH_TOKEN=your_refresh_token
- To obtain Strava API credentials:
- Go to https://www.strava.com/settings/api
- Create a new application
- Note down the Client ID and Client Secret
- Follow the OAuth 2.0 flow to get your refresh token
Usage
Using with Claude
Once connected, you can interact with your Strava data through Claude in various ways:
Activity Queries
- "Show me my recent activities"
- "Get details about my last run"
- "What was my longest ride this month?"
- "Show me activities where I set personal records"
- "Display the route map for my latest activity"
Performance Analysis
- "What's my average running pace this year?"
- "Compare my cycling performance between last month and this month"
- "Show me my heart rate zones from yesterday's workout"
- "What's my total elevation gain for all activities?"
- "Calculate my weekly mileage for running"
Social Interactions
- "Who gave kudos on my latest activity?"
- "Show me comments on my marathon run"
- "List all my club activities"
- "Find activities I did with friends"
Achievement Tracking
- "List all my segment achievements"
- "Show my personal records on local segments"
- "What achievements did I earn this week?"
- "Display my progress on yearly goals"
Data Available Through Claude
-
Activity Details:
- Distance, duration, pace
- Route maps and elevation profiles
- Heart rate, power, and cadence data
- Splits and lap information
- Weather conditions during activity
-
Athlete Statistics:
- Year-to-date and all-time totals
- Personal records and achievements
- Training load and fitness trends
- Equipment usage and maintenance
-
Social Data:
- Kudos and comments
- Club activities and leaderboards
- Friend activities and challenges
- Segment efforts and rankings
-
Route Information:
- Detailed maps with elevation data
- Segment analysis
- Popular routes and segments
- Route planning and analysis
As an MCP Server
Update your Claude Desktop configuration:
{
"mcpServers": {
"Strava": {
"command": "python",
"args": ["src/strava_server.py"],
"cwd": "/path/to/strava_mcp",
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
As an HTTP Server
- Start the server:
./run_server.sh
- Access the API at
http://localhost:8000
Available endpoints:
- GET
/activities/recent- List recent activities - GET
/activities/{id}- Get activity details - GET
/activities/{id}/map- Get activity map visualization - GET
/athlete/stats- Get athlete statistics
Development
Project Structure
strava_mcp/
βββ src/
β βββ strava_server.py # MCP server implementation
β βββ strava_http_server.py # HTTP API server
β βββ map_utils.py # Map visualization utilities
β βββ templates.py # HTML templates
βββ config/
β βββ .env # Environment variables (not in git)
βββ requirements.txt # Python dependencies
βββ run_server.sh # Server startup script
Contributing
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
Security
- Never commit
.envfiles or API credentials - The
.gitignorefile is configured to prevent sensitive data from being committed - Use environment variables for all sensitive configuration
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Strava API Documentation
- Model Context Protocol (MCP) Specification
- Contributors and maintainers
Related Servers
Netlify MCP Server
An MCP server providing comprehensive access to Netlify's features and services.
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers, operating without authentication.
Remote MCP Server on Cloudflare
An MCP server deployed on Cloudflare Workers, featuring OAuth login and data storage via Cloudflare KV.
Bybit API
An interface to interact with the Bybit cryptocurrency exchange API.
Shopify MCP Server
Interact with Shopify store data such as products, customers, and orders using the GraphQL API.
Ultrahuman
Fetch health and fitness metrics like heart rate, sleep, and steps from the Ultrahuman API.
MCP Server for Oracle Cloud Infrastructure (OCI)
Model Context Protocol (MCP) server for Oracle Cloud Infrastructure, allowing LLMs like Claude to interact directly with OCI resources
AWS MCP
Interact with your AWS environment using natural language to query and manage resources. Requires local AWS credentials.
Remote MCP Server
A production-ready MCP server on Cloudflare Workers with GitHub OAuth and Fantasy Premier League integration.
Vulnebify
Vulnebify is a cyber defense software that monitors and notifies on vulnerabilities in real time, protecting companies and countries from emerging threats.