Skip to main content
Glama

Strava MCP Server ⚔

Python 3.8+ MCP Strava API

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

Related MCP server: Strava MCP Server

šŸš€ Quick Start

Prerequisites

  • Python 3.8 or higher

  • Strava Developer Account

  • Claude Desktop or other MCP client

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/strava-mcp.git
    cd strava-mcp
  2. Create virtual environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies

    pip install -r requirements.txt
  4. 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 ID and Client Secret

  5. Complete setup (Recommended - All users)

    python setup_complete.py

    This single script will:

    • Guide you through OAuth setup

    • Save tokens to .env file

    • 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
  6. 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 activities

  • update_strava_activity - Update existing activities

  • update_athlete_profile - Update athlete information

  • star_strava_segment - Star/unstar segments

  • upload_activity_file - Upload GPX/TCX files

  • search_activities - Advanced activity search

  • explore_segments_in_area - Find segments by location

  • get_segment_leaderboard - Get segment rankings

  • get_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.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/AmazingFeature)

  3. Commit your changes (git commit -m 'Add some AmazingFeature')

  4. Push to the branch (git push origin feature/AmazingFeature)

  5. Open a Pull Request

šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

šŸ™ Acknowledgments

⭐ Star this repo!

If you find this project useful, please consider giving it a star! It helps others discover this tool.

Related MCP Connectors

Related MCP Servers