Strava Planner MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_PUBLIC_URL | No | Exact public endpoint, e.g. https://mcp-strava.example.com/mcp. | |
| STRAVA_CLIENT_ID | No | Strava application client ID. | |
| MCP_OAUTH_CLIENT_ID | No | Fixed OAuth client ID entered in Claude. | |
| STRAVA_CLIENT_SECRET | No | Strava application client secret. | |
| STRAVA_REFRESH_TOKEN | No | Seeds authorization if no encrypted token file exists. | |
| MCP_OAUTH_CLIENT_SECRET | No | Fixed OAuth client secret entered in Claude. | |
| MCP_OAUTH_TOKEN_SIGNING_KEY | No | Signs MCP access and refresh tokens. | |
| STRAVA_TOKEN_ENCRYPTION_KEY | No | Encrypts the persisted Strava token file. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| getAthleteProfileA | Use this for identity and baseline athlete metadata. Returns the authenticated Strava athlete profile; use activity tools for training data. |
| getActivitiesA | Use this to browse activity summaries in manageable pages. Supports Unix-second date bounds and client-side activity type filtering; call getActivity for splits and full detail. |
| getActivityA | Use after finding an activity ID. Returns full activity detail including metric splits and embedded laps when Strava provides them. |
| getActivityLapsA | Use for lap-by-lap pacing, heart-rate, cadence, and elevation analysis when an activity has recorded laps. |
| getActivityZonesA | Use for time-in-zone analysis. Returns heart-rate or power zones when Strava exposes them for the athlete and activity. |
| getActivityStreamsA | Use for point-by-point analysis. Request only needed stream types to control response size; omitted streamTypes selects a useful set based on activity metadata. Strava returns only available streams. |
| getRecentRunsA | Use for current training analysis without fetching unrelated sports. Returns the newest Run activities up to the requested limit. |
| getRecentActivitiesB | Returns the most recent activities. |
| getAthleteContextA | Use alongside Strava data for user-configured goals, heart-rate zones, race targets, constraints, and training preferences. This data is optional and separate from Strava. |
| getActivitiesByTypeA | Returns one bounded page of activities of a supported type (newest first). Each page scans up to |
| getTrainingHistoryA | Returns one bounded page of activities (newest first) for long-term training analysis. When |
| getAthleteOverviewA | Returns a compact training overview and recent trends over a bounded look-back window (default last 365 days). Pass |
| getHalfMarathonTrainingContextA | Returns compact, information-dense run/walk training context for the current training cycle. The start date comes from the athlete context (trainingStartDate), else HALF_MARATHON_TRAINING_START_DATE, else a trailing 26-week window. Weeks are athlete-local and inactive weeks are included so streaks reflect real gaps. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct aspect of Strava data retrieval: activities by various criteria, activity details, laps, streams, zones, athlete profile, overview, context, training history, and a specific half marathon context. Descriptions clearly differentiate overlapping tools like getActivities, getActivitiesByType, getRecentActivities, and getTrainingHistory by specifying paging, filtering, and purpose.
All tool names use consistent camelCase verb+noun pattern (get followed by resource name). This predictable naming helps agents quickly understand the action and target resource without confusion.
With 13 tools, the server is well-scoped for a Strava planner. Each tool serves a specific purpose in retrieving training data and athlete context, without unnecessary duplication or missing essential operations for a read-only planner.
The tool surface covers core data retrieval: activity listing with filters, detailed activity data, laps, streams, zones, athlete info, training history, and half marathon context. Missing tools for updating athlete context or Strava settings, and for retrieving routes or segments, but these are minor gaps for a planner focused on training analysis.