About StravaMcp.Server
StravaMcp.Server is an MCP server published by OnefoursevenLabs in the Blockchain category: a Model Context Protocol (MCP) server for browsing and querying the Strava API. Provides 21 tools for activities, segments, routes, clubs, gear, and more with automatic OAuth2 token refresh.
Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/OnefoursevenLabs/Strava-MCPThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (21)
explore_segmentsFind popular segments in a geographic bounding box
Parameters not published.
get_activityGet full activity details (splits, laps, segments, gear)
Parameters not published.
get_activity_commentsGet comments on an activity
Parameters not published.
get_activity_kudosGet kudos givers for an activity
Parameters not published.
get_activity_lapsGet laps for an activity
Parameters not published.
get_activity_streamsGet time-series data (GPS, HR, power, cadence, altitude)
Parameters not published.
get_activity_zonesGet HR/power zone distribution for an activity
Parameters not published.
get_athleteGet authenticated athlete profile
Parameters not published.
get_athlete_statsGet aggregated athlete statistics (run/ride/swim totals)
Parameters not published.
get_clubGet club details
Parameters not published.
Show all 21 tools
get_club_activitiesList recent club member activities
Parameters not published.
get_club_membersList club members
Parameters not published.
get_gearGet gear details (bikes, shoes)
Parameters not published.
get_routeGet route details
Parameters not published.
get_segmentGet segment details
Parameters not published.
get_segment_effortsList athlete's efforts on a segment
Parameters not published.
list_activitiesList activities with pagination and time-range filtering
Parameters not published.
list_clubsList athlete's clubs
Parameters not published.
list_routesList athlete's routes
Parameters not published.
list_starred_segmentsList athlete's starred segments
Parameters not published.
update_activityUpdate activity name, description, sport type, gear, etc.
Parameters not published.
Ask AI
Ask AI about StravaMcp.Server
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Strava MCP Server
A Model Context Protocol (MCP) server that exposes the Strava API as tools for LLM assistants. Built with C# / .NET 8.
Features
- OAuth2 token management with automatic refresh and persistent token storage
- 21 tools covering the full Strava read API plus activity updates
- Stdio transport — works with Claude Desktop, Claude Code, and any MCP-compatible client
Available Tools
| Tool | Description |
|---|---|
get_athlete |
Get authenticated athlete profile |
get_athlete_stats |
Get aggregated athlete statistics (run/ride/swim totals) |
list_activities |
List activities with pagination and time-range filtering |
get_activity |
Get full activity details (splits, laps, segments, gear) |
get_activity_laps |
Get laps for an activity |
get_activity_zones |
Get HR/power zone distribution for an activity |
get_activity_comments |
Get comments on an activity |
get_activity_kudos |
Get kudos givers for an activity |
get_activity_streams |
Get time-series data (GPS, HR, power, cadence, altitude) |
update_activity |
Update activity name, description, sport type, gear, etc. |
get_segment |
Get segment details |
get_segment_efforts |
List athlete's efforts on a segment |
explore_segments |
Find popular segments in a geographic bounding box |
list_starred_segments |
List athlete's starred segments |
list_routes |
List athlete's routes |
get_route |
Get route details |
get_gear |
Get gear details (bikes, shoes) |
list_clubs |
List athlete's clubs |
get_club |
Get club details |
get_club_activities |
List recent club member activities |
get_club_members |
List club members |
Prerequisites
- .NET 8 SDK or later
- A Strava API application (create one here)
- A valid refresh token with
read_all,activity:read_all,activity:writescopes
Getting a Refresh Token
- Create an app at https://www.strava.com/settings/api
- Use the OAuth2 authorization flow to get a refresh token with the required scopes. You can use the Strava OAuth2 playground or a manual flow:
https://www.strava.com/oauth/authorize?client_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=http://localhost&scope=read_all,activity:read_all,activity:write&approval_prompt=force
- Exchange the authorization code for tokens:
curl -X POST https://www.strava.com/oauth/token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=AUTHORIZATION_CODE \
-d grant_type=authorization_code
Installation
As a .NET global tool (recommended)
dotnet tool install --global StravaMcp.Server
Then run it anywhere with:
strava-mcp-server
From source
cd src/StravaMcp.Server
dotnet build
Set environment variables:
export STRAVA_CLIENT_ID="your_client_id"
export STRAVA_CLIENT_SECRET="your_client_secret"
export STRAVA_REFRESH_TOKEN="your_refresh_token"
# Optional: custom path for cached tokens
export STRAVA_TOKEN_FILE="/path/to/strava_tokens.json"
Usage
With Claude Desktop
If installed as a global tool:
{
"mcpServers": {
"strava": {
"command": "strava-mcp-server",
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
Or from source:
{
"mcpServers": {
"strava": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/src/StravaMcp.Server"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
With Claude Code
# Global tool
claude mcp add strava -- strava-mcp-server
# Or from source
claude mcp add strava -- dotnet run --project /path/to/src/StravaMcp.Server
Make sure the environment variables are set in your shell before launching.
Direct / Standalone
strava-mcp-server
# or: dotnet run --project src/StravaMcp.Server
The server communicates via JSON-RPC over stdin/stdout. Diagnostic output goes to stderr.
Architecture
src/StravaMcp.Server/
├── Program.cs # Entry point, wires up config + tools + server
├── Strava/
│ ├── StravaClient.cs # HTTP client with auto token refresh
│ ├── StravaConfig.cs # Configuration model
│ ├── StravaApiException.cs
│ └── TokenData.cs # Token persistence model
├── Mcp/
│ ├── McpServer.cs # JSON-RPC stdio server loop
│ ├── JsonRpcMessage.cs # Request/response models
│ └── ToolDefinition.cs # Tool + result models
└── Tools/
├── IStravaTool.cs # Tool interface
├── ToolHelpers.cs # Schema builder + argument helpers
└── *.cs # One file per tool (21 tools)
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.