StravaMCP

A production-grade MCP server that gives agent frameworks full access to the Strava API – single Go binary, zero infrastructure.

Get Started View on GitHub


What is this?

StravaMCP is a Model Context Protocol server built in Go for the OpenClaw/ZeroClaw agent framework ecosystem. It connects AI agents to the Strava API through a single static binary on your machine. Communicates over stdio, works with any MCP-compatible client, handles OAuth authentication through an automatic browser flow, and stores tokens locally. No cloud services, no containers, no runtime dependencies.

Key Features

  • Single binary, zero runtime dependencies – no Docker, no cloud, no database
  • 11 MCP tools covering activities, athlete stats, streams, clubs, and uploads
  • Automatic OAuth browser flow – one command to authenticate
  • Concurrent token refresh via singleflight – no thundering herd on expired tokens
  • Atomic write-then-rename token store – crash-safe credential persistence
  • Zero-CGO static binary – no C library dependencies, runs anywhere
  • Cross-platform – macOS (Intel + Apple Silicon) and Linux (amd64 + arm64)

Why Go?

StravaMCP is written in Go for the same reason the RustyClaw ecosystem exists: performance and simplicity matter for tool servers that agents call hundreds of times per session.

  Go (StravaMCP) Python Node.js
Startup time ~10ms ~500ms ~200ms
Memory footprint ~8MB ~30MB ~40MB
Binary size 7MB (single file) ~50MB+ (runtime + deps) ~60MB+ (runtime + node_modules)
Dependencies 3 direct Varies (pip) Varies (npm)
Runtime required None Python interpreter Node.js runtime

Estimates based on known Go/Python/Node.js runtime characteristics for comparable MCP servers. Not formal benchmarks.

Quick Start

Install

Choose your preferred installation method:

Option A: Go install

go install github.com/Stealinglight/StravaMCP@latest

Option B: Homebrew

brew install Stealinglight/tap/strava-mcp

Option C: Download binary

Download the latest binary for your platform from GitHub Releases.

macOS Gatekeeper: If you download the binary directly, remove the quarantine attribute: xattr -d com.apple.quarantine strava-mcp

Configure

  1. Create a Strava API application at https://www.strava.com/settings/api
  2. Set the Authorization Callback Domain to localhost
  3. Export your credentials:
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret

Authenticate

Run the built-in OAuth flow. This opens your browser, completes authorization, and saves tokens locally:

strava-mcp auth

You should see: Authenticated as [Your Name]!

Connect to Claude Desktop

Add StravaMCP to your Claude Desktop configuration at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "strava": {
      "command": "strava-mcp",
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Restart Claude Desktop and the Strava tools will be available.

Available Tools

Category Tools Description
Activities 5 tools List, view, create, update activities and get zone data
Athlete 2 tools Profile info and aggregate statistics (recent/YTD/all-time)
Streams 1 tool Time-series telemetry (HR, GPS, power, cadence, altitude)
Clubs 1 tool Recent activities from club members
Uploads 2 tools Upload activity files (GPX, TCX, FIT) and check status

See the README for the complete tool reference with all 11 tools.


Built with Go by Stealinglight