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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/banananovej-chuan/tp-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server