TrainingPeaks MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TP_AUTH_COOKIE | Yes | Your TrainingPeaks auth cookie obtained from browser developer tools. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tp_auth_statusA | Check TrainingPeaks authentication status. Returns whether you have a valid auth cookie and bearer token. If not authenticated, provides instructions for setting up credentials. |
| tp_refresh_authA | Force refresh the TrainingPeaks bearer token. Use this if you're getting authentication errors. Clears the cached token and obtains a fresh one from the auth cookie. |
| tp_get_profileA | Get your TrainingPeaks athlete profile. Returns your name, athlete ID, email, and other profile information. The athlete ID is needed for other TrainingPeaks queries. |
| tp_get_workoutsA | Get a list of workouts from TrainingPeaks. Args: start_date: Start date (YYYY-MM-DD). Defaults to 30 days ago. end_date: End date (YYYY-MM-DD). Defaults to today. workout_type: Filter by type (e.g. "Bike", "Run", "Swim", "Strength"). limit: Maximum number of workouts to return (default 20). Returns workouts with date, type, duration, distance, TSS, HR, and power data. The TP API limits requests to 90 days at a time. |
| tp_get_planned_workoutsA | Get upcoming planned workouts from TrainingPeaks. Args: start_date: Start date (YYYY-MM-DD). Defaults to today. end_date: End date (YYYY-MM-DD). Defaults to 14 days from now. workout_type: Filter by type (e.g. "Bike", "Run", "Swim", "Strength"). limit: Maximum number of workouts to return (default 20). Returns planned workouts with date, type, planned duration/distance/TSS, workout instructions, and coach comments. Sorted chronologically (nearest first). The TP API limits requests to 90 days at a time. |
| tp_get_workoutA | Get detailed information about a specific workout. Args: workout_id: The TrainingPeaks workout ID. Returns full workout details including power, HR, speed, elevation, description, and coach comments. |
| tp_get_fitnessA | Get CTL (fitness), ATL (fatigue), and TSB (form) performance data. Args: days: Number of days to look back (default 90). Ignored if start_date is set. start_date: Start date (YYYY-MM-DD). Overrides days parameter. end_date: End date (YYYY-MM-DD). Defaults to today. Returns daily training load data with computed CTL/ATL/TSB values and current fitness status. To get accurate CTL/ATL values, the API fetches extra history for the exponential decay calculation. |
| tp_get_workout_prsB | Get personal records from a specific workout. Args: workout_id: The TrainingPeaks workout ID. Returns all PRs achieved in this workout, grouped by class (Power, HR, etc.) and time frame (All-Time, Last 90 Days, etc.). |
| tp_get_peaksA | Get personal records by scanning recent workouts for a given sport. Args: sport: Sport type — "Bike", "Run", "Swim", or "Hike" (default "Bike"). days: Number of days to scan (default 90, max 365). pr_class: Filter by PR class — "Power", "HeartRate", or None for all. Scans workouts that have PRs and aggregates the best values per type. Shows the top record for each duration/distance across the time range. |
| tp_training_load_summaryB | Analyze training load trends over time. Args: days: Number of days to analyze (default 90). Returns weekly and monthly TSS totals, averages, load ramp rate, and comparison between recent and previous periods. |
| tp_fitness_trendA | Analyze CTL/ATL/TSB trajectory and project future values. Args: days: Number of days to analyze (default 90). Returns trend direction, rate of change, and 7-day projected CTL/ATL/TSB. |
| tp_workout_analysisA | Deep analysis of a specific workout with derived metrics. Args: workout_id: The TrainingPeaks workout ID. Returns efficiency factor (NP/avg HR), variability index (NP/avg power), intensity distribution, and comparison context. |
| tp_performance_summaryA | Aggregated performance summary for a sport over time. Args: sport: Sport type — "Bike", "Run", "Swim" (default "Bike"). days: Number of days to analyze (default 90). Returns volume, intensity distribution, consistency metrics, and PR timeline for the specified sport. |
| tp_training_zones_distributionA | Analyze training time and TSS distribution across intensity zones. Args: start_date: Start date (YYYY-MM-DD). Defaults to {days} days ago. end_date: End date (YYYY-MM-DD). Defaults to today. days: Days to look back if start_date not set (default 30). Breaks down workouts by IF-based training zones showing how training time and stress are distributed. Helps identify polarized vs pyramidal vs threshold-heavy training patterns. |
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 14 tools
Each tool serves a distinct purpose without overlap. For example, tp_get_fitness returns daily CTL/ATL/TSB, tp_fitness_trend projects future values, and tp_training_load_summary provides weekly/monthly TSS totals. Similarly, tp_get_workout gives raw data while tp_workout_analysis computes derived metrics. Auth tools are separate, and each analytics tool focuses on a unique aspect.
All tools follow a tp_ prefix with snake_case naming. The verb usage is mostly consistent, with many using 'get_' (e.g., tp_get_fitness, tp_get_workouts) and others using descriptive verbs like 'fitness_trend' or 'performance_summary'. Some names like tp_auth_status or tp_training_zones_distribution are nouns rather than verbs, but overall the pattern is predictable.
14 tools cover a broad yet focused range of fitness data operations including authentication, profile, workouts (planned and completed), fitness metrics, trends, peaks/PRs, and detailed analysis. Each tool earns its place without redundancy or excessive specialization.
The tool set provides comprehensive coverage for a read-only analytics server. It includes auth, profile, workout retrieval (planned and historical), fitness metrics, trends, peaks/PRs, workout analysis, training load summary, and zones distribution. No obvious gaps for the domain.