Skip to main content
Glama
adrienlupo

mcp-strava

by adrienlupo

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
pingA

A simple test tool that verifies the server is running

get_athlete_profileA

Get authenticated athlete's Strava profile. Returns: name, username, bio, location, weight, premium status, measurement preferences.

get_athlete_statsA

Get aggregated activity statistics by sport type. Returns: recent (4 weeks), YTD, all-time totals for ride/run/swim. Each: count, distance (m), moving_time (s), elevation_gain (m).

list_activitiesA

List activities with filtering and pagination. Returns: id, name, type, sport_type, start_date, distance (m), moving_time (s), elapsed_time (s), total_elevation_gain (m), average_speed (m/s), heartrate, watts. Use week_offset for calendar weeks (0=this week, -1=last week). Monday-Sunday.

get_activity_detailA

Get activity metadata by ID. Returns: name, description, splits, laps, segment_efforts, gear, calories. segment_efforts contains Strava segments from THIS activity only (no historical data). For segment analysis over time, pass segment_efforts[].id to get_segment_effort_streams. For full activity time-series, use get_activity_streams.

get_athlete_zonesA

Get athlete's configured HR and power zones from Strava. Returns: heart_rate.zones[], power.zones[] with min/max for each zone. Requires profile:read_all scope.

get_activity_zonesB

Get zone distribution for an activity (heart rate, pace, power). Returns zone boundaries, time in seconds, and percentage per zone. For activity-specific zone analysis with time/ratios.

get_segment_effort_streamsA

Analyze a Strava segment with full historical comparison. ONE call returns EVERYTHING: segment info, current effort stats, AND comparison with ALL previous attempts (best_time, average_time, total_efforts, rank, previous_efforts list). No need to list_activities - this tool automatically fetches all historical data. Use when user asks about segment history, progress, PRs, or performance over time. Input: segment_effort_id from get_activity_detail's segment_efforts array.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, covering activities, zones, athlete info, segments, and listing. Descriptions provide detailed distinctions, e.g., get_activity_zones vs get_athlete_zones are for activity-specific vs athlete-configured zones.

Naming Consistency5/5

Almost all tools follow a consistent verb_noun pattern with snake_case (get_*, list_*). 'ping' is a slight outlier but is a common test tool and does not confuse the overall pattern.

Tool Count5/5

8 tools is appropriate for a Strava integration, covering core read operations for activities, athletes, zones, and segments without being overly numerous or sparse.

Completeness3/5

The tool set covers main read operations, but there is a notable gap: get_activity_detail mentions using get_activity_streams for time-series data, yet that tool is not present. This creates a dead-end for agents. Missing write operations like upload or update activities, but those may be out of scope.

Maintenance

ActivityInactive
ResponsivenessNo issues