Strava Mcp Unofficial
@davidmosiah
About Strava Mcp Unofficial
Unofficial local-first MCP server for Strava. Activity history, streams (HR/power/cadence/GPS), athlete zones, routes, weekly training summaries. Privacy modes (summary/structured/raw) with GPS protection by default, SQLite cache, doctor CLI for setup. Works with Claude Desktop,
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"strava": {
"command": "npx",
"args": [
"-y",
"strava-mcp-unofficial"
]
}
}
}Tools
29Inventory supported Strava data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Strava APIs or expose user data.
Machine-readable install, runtime and client guidance for AI agents. Includes Hermes direct tool names and anti-gateway-restart guidance. Does not call Strava or expose secrets.
Explain supported Strava data, privacy boundaries, GPS handling, recommended agent workflow and project links. Does not call Strava or expose secrets.
Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Strava?'
Returns realistic example payloads of strava_daily_summary, strava_training_context, and strava_list_activities so agents see the contract before calling real Strava APIs.
Generate a Strava OAuth authorization URL. Use this first when no local token exists.
Exchange a Strava OAuth authorization code for local tokens. Tokens are stored locally with 0600 permissions and are never returned. Requires explicit user action: the user must complete browser OAuth and supply the authorization code (agents must not invent codes).
Get the authenticated Strava athlete profile. Requires read/profile scope depending on requested fields.
Get the authenticated athlete heart-rate and power zones when available.
Get public-visible aggregate Strava stats for the authenticated athlete.
List authenticated athlete activities. Supports after/before filters and Strava pagination. Requires activity:read or activity:read_all.
List authenticated athlete routes. GPS/map geometry is redacted unless raw mode is requested.
List clubs joined by the authenticated athlete.
Get detailed activity data by id. Summary/structured modes protect raw GPS details.
Get heart-rate/power zones for an activity when available.
Get route details by id. Summary/structured modes avoid full route geometry.
Get gear/equipment details by id.
Get raw Strava activity streams (time, distance, heartrate, cadence, watts, altitude). For agent work prefer strava_activity_series — it returns agent-safe-series/v1 with hard point caps and exact stats. GPS latlng is withheld unless include_gps=true or privacy_mode=raw (both require explicit_user_intent=true).
Bounded time-series for one activity metric (agent-safe-series/v1). Returns exact stats on full-resolution samples plus a downsampled series capped at 500 points, so a multi-hour ride never blows the context window. Prefer strava_get_activity / zones first; reach for this when you need the shape of the effort. GPS is never returned here. Shared contract with garmin_activity_series / Kindred workout_series.
Check local Strava config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Strava or exposing secrets.
Show optional local SQLite cache status. Enable with STRAVA_CACHE=sqlite or STRAVA_CACHE=true.
Return local privacy, cache, token-path, GPS redaction and env-presence posture without revealing secret values.
Revoke the current Strava OAuth access grant and delete the local token file. Use only when the user explicitly wants to disconnect Strava. Gated by explicit_user_intent: true (requires explicit user intent).
Build a practical daily training/load summary from recent Strava activities. Read-only and non-medical.
Build a weekly Strava scorecard with volume, intensity, sport mix, bottlenecks and next-week actions. Read-only and non-medical.
Normalize recent Strava activity load into a compact training_context for workout recommendation engines. Includes fallback guidance when recent Strava activity is missing.
Read the canonical Delx Wellness profile shared with the other wellness MCP connectors (Nourish, Cycle Coach, CGM, etc.). Read-only. Profile stores only what the user typed during onboarding — never OAuth tokens, API keys, or biomarkers. Note: this profile does NOT change Strava's GPS-redaction default; Strava continues to redact latlng and route geometry unless STRAVA_GPS_INCLUDE=true or include_gps=true is explicitly passed.
Persist a partial patch to the canonical Delx Wellness profile. Requires explicit_user_intent=true after the user confirms they want to save. Rejects secret-like fields (oauth, token, api_key, password, cookie, refresh, session). Strava's GPS-redaction default is unaffected by profile changes.
Read-only. Return the 11-question Delx Wellness onboarding flow (en or pt-BR), the current shared profile, missing critical fields, and a cross-connector hint. Use this when the user starts a fresh wellness session and you need to fill out preferred_name, goals, devices, training context, nutrition, preferences, and safety. Strava continues to redact GPS by default — onboarding does not change that.
Overview
What is Strava Mcp Unofficial?
A local-first MCP server that connects AI agents (Claude, Cursor, Hermes, etc.) to your Strava activities, routes, streams, and training context. It handles OAuth locally, respects Strava’s rate limits, and keeps tokens on your machine.
How to use Strava Mcp Unofficial?
Create a Strava app with redirect URI http://127.0.0.1:3000/callback, then run npx -y strava-mcp-unofficial setup, npx -y strava-mcp-unofficial auth, and npx -y strava-mcp-unofficial doctor. Add the server to your MCP client config with command: "npx", args: ["-y", "strava-mcp-unofficial"].
Key features of Strava Mcp Unofficial
- Local‑first OAuth – tokens never leave your machine
- Read‑only by default – no write scopes requested
- GPS lat/lng hidden unless explicitly opted in
- Rate‑limited under Strava’s per‑app limits (200 req/15min)
- Compatible with any MCP‑supporting agent
- Provides prompts, tools, and resources for training context
Use cases of Strava Mcp Unofficial
- Ask your AI agent for a daily training brief without leaving your chat
- Generate a weekly endurance plan based on recent activity load
- Investigate a single activity’s stream data (HR, watts, cadence)
- Check athlete profile, zones, and aggregate stats via natural language
- Compare this week’s training vs. prior week in a structured summary
FAQ from Strava Mcp Unofficial
What do I need to get started?
Node.js 20+ and a Strava app with redirect URI http://127.0.0.1:3000/callback. You need scopes read, activity:read_all, and profile:read_all.
Is this an official Strava project?
No. It is unofficial and not affiliated with, endorsed by, or supported by Strava, Inc. Use it only with your own account and in line with Strava’s API agreement.
How are my OAuth tokens handled?
Tokens are stored locally in ~/.strava-mcp/tokens.json with 0600 permissions. They are never returned by tools and never seen by the MCP client.
Can I access GPS data?
Only if you explicitly request it with include_gps=true or use raw mode. GPS lat/lng is redacted in summary and structured modes by default.
Does this server write data to Strava?
No. Write/upload scopes are not requested by default – the server is read‑only by design.
Frequently asked questions
What do I need to get started?
Node.js 20+ and a Strava app with redirect URI `http://127.0.0.1:3000/callback`. You need scopes `read`, `activity:read_all`, and `profile:read_all`.
Is this an official Strava project?
No. It is unofficial and not affiliated with, endorsed by, or supported by Strava, Inc. Use it only with your own account and in line with Strava’s API agreement.
How are my OAuth tokens handled?
Tokens are stored locally in `~/.strava-mcp/tokens.json` with `0600` permissions. They are never returned by tools and never seen by the MCP client.
Can I access GPS data?
Only if you explicitly request it with `include_gps=true` or use `raw` mode. GPS lat/lng is redacted in summary and structured modes by default.
Does this server write data to Strava?
No. Write/upload scopes are not requested by default – the server is read‑only by design.
Basic information
More Other MCP servers
MaxKB
1Panel-dev🔥 MaxKB is an open-source platform for building enterprise-grade agents. 强大易用的开源企业级智能体平台。
🚀 Model Context Protocol (MCP) Curriculum for Beginners
microsoftThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable,
ICSS
chokcoco不止于 CSS

Figs, Relationship Expert
Figs O'Sullivan, LMFTCouples therapist Figs O'Sullivan (LMFT, 17 years, endorsed by Sue Johnson, creator of EFT) inside your AI. Ask relationship questions answered from his clinical writing, name the pattern in a fight, get a three-step rep
Nginx UI
0xJackyYet another WebUI for Nginx
Comments