Skip to main content

Strava integration for MCP

Project description

Strava MCP Server

CI/CD Pipeline codecov

A Model Context Protocol (MCP) server for interacting with the Strava API.

Strava Server MCP server

User Guide

Installation

You can easily install Strava MCP with uvx:

uvx strava-mcp

Setting Up Strava Credentials

  1. Create a Strava API Application:

  2. 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
    
  3. Configure Claude Desktop: Add the following to your Claude configuration (/Users/<username>/Library/Application Support/Claude/claude_desktop_config.json):

    "strava": {
        "command": "bash",
        "args": [
            "-c",
            "source ~/.ssh/strava.sh && uvx strava-mcp"
        ]
    }
    

Authentication

The first time you use the Strava MCP tools:

  1. An authentication flow will automatically start
  2. Your browser will open to the Strava authorization page
  3. After authorizing, you'll be redirected back to a local page
  4. Your refresh token will be saved automatically for future use

Available Tools

Get User Activities

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)

Get Activity

Gets detailed information about a specific activity.

Parameters:

  • activity_id: The ID of the activity
  • include_all_efforts (optional): Include segment efforts (default: false)

Get Activity Segments

Retrieves segments from a specific activity.

Parameters:

  • activity_id: The ID of the activity

Get Segment Leaderboard

Gets the leaderboard for a specific segment.

Parameters:

  • segment_id: The ID of the segment
  • Various optional filters (gender, age group, etc.)

Developer Guide

Project Setup

  1. Clone the repository:

    git clone <repository-url>
    cd strava
    
  2. Install dependencies:

    uv install
    
  3. Set up environment variables:

    export STRAVA_CLIENT_ID=your_client_id
    export STRAVA_CLIENT_SECRET=your_client_secret
    

    Alternatively, create a .env file with these variables.

Running in Development Mode

Run the server with MCP CLI:

mcp dev strava_mcp/main.py

Manual Authentication

You can get a refresh token manually by running:

python get_token.py

Project Structure

  • strava_mcp/: Main package directory
    • __init__.py: Package initialization
    • config.py: Configuration settings using pydantic-settings
    • models.py: Pydantic models for Strava API entities
    • api.py: Low-level API client for Strava
    • auth.py: Strava OAuth authentication implementation
    • oauth_server.py: Standalone OAuth server implementation
    • service.py: Service layer for business logic
    • server.py: MCP server implementation
  • tests/: Unit tests
  • strava_mcp/main.py: Main entry point to run the server
  • get_token.py: Utility script to get a refresh token manually

Running Tests

pytest

Publishing to PyPI

Building the package

# Build both sdist and wheel
uv build

Publishing to PyPI

# Publish to Test PyPI first
uv publish --index testpypi

# Publish to PyPI
uv publish

License

MIT License

Acknowledgements

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

strava_mcp-0.5.0.tar.gz (119.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

strava_mcp-0.5.0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file strava_mcp-0.5.0.tar.gz.

File metadata

  • Download URL: strava_mcp-0.5.0.tar.gz
  • Upload date:
  • Size: 119.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for strava_mcp-0.5.0.tar.gz
Algorithm Hash digest
SHA256 3b71b38bf20bf51cb243e5b02df30da6ccdaa1b03261db481abe958684690994
MD5 e3298db82b755e5cbd7ebc2aaaf07e29
BLAKE2b-256 f3f9880cc09c65d36e2866194c9efc42763bc8a6e2db5b4c28f866178820b5c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for strava_mcp-0.5.0.tar.gz:

Publisher: ci.yml on yorrickjansen/strava-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file strava_mcp-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: strava_mcp-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for strava_mcp-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9395b67a1083c6496d2f00bed45a8398a0ea80a99e7091b77246045f77cfdd6d
MD5 0d11619ec7c973de5229c4340fd38812
BLAKE2b-256 9d1da608b8d908ab034b1b601ec53f65e06865399cb9dd6e3bff4b402f3058d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for strava_mcp-0.5.0-py3-none-any.whl:

Publisher: ci.yml on yorrickjansen/strava-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page