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. |
Capabilities
Features and capabilities supported by this server
| 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 | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Mohith1612/strava-planner-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server