Anway-Kapoor/strava-mcp
If you are the rightful owner of strava-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Strava MCP Server is a comprehensive Model Context Protocol server providing full access to the Strava API v3, ideal for integrating Strava data with MCP-compatible clients like Claude Desktop.
Strava MCP Server ⚡
A comprehensive Model Context Protocol (MCP) server that provides full access to the Strava API v3. Perfect for integrating Strava data with Claude Desktop and other MCP-compatible clients.
✨ Features
🏃♂️ Activities
- Create and update manual activities
- Retrieve detailed activity information
- Access comments, kudos, laps, and power zones
- Search and filter activities with advanced parameters
- Upload GPX/TCX files
👤 Athletes
- Get authenticated athlete profile and stats
- Access training zones and settings
- Update athlete profile information
- Retrieve athlete's club memberships
🏆 Clubs
- Browse club details and activities
- Access member lists and administrators
- Get club-specific activity feeds
🎯 Segments & Routes
- Explore segments in specific areas
- Access starred segments and leaderboards
- Get segment efforts and achievements
- Retrieve route details and export formats
🔧 Additional Features
- 40+ API endpoints with full Strava API v3 coverage
- OAuth 2.0 authentication with automatic token management
- Thread-safe operations for reliable concurrent access
- Comprehensive error handling with detailed logging
- MCP-compliant tools and resources classification
🚀 Quick Start
Prerequisites
- Python 3.8 or higher
- Strava Developer Account
- Claude Desktop or other MCP client
Installation
-
Clone the repository
git clone https://github.com/yourusername/strava-mcp.git cd strava-mcp -
Create virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies
pip install -r requirements.txt -
Set up Strava API credentials
- Go to Strava Developers
- Create a new application
- Set Authorization Callback Domain to:
localhost - Set Authorization Callback URL to:
http://localhost:8080 - Note your
Client IDandClient Secret
-
Complete setup (Recommended - All users)
python setup_complete.pyThis single script will:
- Guide you through OAuth setup
- Save tokens to
.envfile - Automatically update your Claude Desktop config
Alternative setups for specific use cases:
# For server deployments (no Claude Desktop): python -m mcp_server.oauth_setup # For token refresh only (when tokens expire): python update_claude_config.py -
Configure Claude Desktop (if not auto-updated) Add to your
claude_desktop_config.json:{ "mcpServers": { "strava-mcp": { "command": "path/to/your/strava-mcp/start_mcp_server.bat", "cwd": "path/to/your/strava-mcp" } } }
🔧 Usage
Manual Token Refresh
When your tokens expire, refresh them:
# Refresh tokens and update Claude Desktop config
python update_claude_config.py
# Or just refresh tokens in .env file
python refresh_tokens.py
Available Tools & Resources
🛠️ Tools (Write Operations)
create_strava_activity- Create manual activitiesupdate_strava_activity- Update existing activitiesupdate_athlete_profile- Update athlete informationstar_strava_segment- Star/unstar segmentsupload_activity_file- Upload GPX/TCX filessearch_activities- Advanced activity searchexplore_segments_in_area- Find segments by locationget_segment_leaderboard- Get segment rankingsget_activity_stream_data- Get activity stream data
📊 Resources (Read Operations)
- Activity details, comments, kudos, laps, zones
- Athlete profile, stats, zones, clubs
- Club details, activities, members
- Gear information and usage stats
- Route details and export formats
- Segment information and efforts
- Stream data (GPS, power, heart rate)
🔐 Authentication
This server uses OAuth 2.0 with manual token refresh:
- Secure token storage in environment variables
- Thread-safe token management
- Automatic Claude Desktop config updates
- Manual refresh capability for full control
📁 Project Structure
strava-mcp/
├── mcp_server/
│ ├── __init__.py
│ ├── __main__.py # MCP server entry point
│ ├── server.py # FastMCP server with tools/resources
│ ├── api.py # Complete Strava API v3 wrapper
│ ├── auth.py # OAuth 2.0 authentication manager
│ └── oauth_setup.py # Initial OAuth setup utility
├── requirements.txt # Python dependencies
├── refresh_tokens.py # Manual token refresh utility
├── update_claude_config.py # Claude Desktop config updater
├── start_mcp_server.bat # Server startup script (Windows)
├── start_mcp_server.sh # Server startup script (Unix/Linux)
└── README.md # This file
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Strava for their comprehensive API
- Model Context Protocol for the standard
- FastMCP for the server framework
⭐ Star this repo!
If you find this project useful, please consider giving it a star! It helps others discover this tool.