Skip to main content
Glama
jonathaneemmett

TrainingPeaks MCP Server

TrainingPeaks MCP Server

MCP server for TrainingPeaks. Reads workouts, fitness metrics (CTL/ATL/TSB), and health data. Creates, updates, and deletes planned workouts. Built with Python/FastMCP with browser-based auth and auto-refresh. Designed for AI-powered training plan management and automated adjustment based on performance, fatigue, and injury.

Setup

python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Related MCP server: claude-garmin

Usage

python -m training_peaks_mcp

On first run, a browser window opens with the TrainingPeaks login page. Enter your credentials — they're sent to localhost only, saved locally to ~/.config/training-peaks-mcp/credentials.json, and auto-refresh when expired.

CLI Options

python -m training_peaks_mcp              # Start the MCP server
python -m training_peaks_mcp --auth       # Re-authenticate
python -m training_peaks_mcp --auth-status # Check auth status
python -m training_peaks_mcp --auth-clear  # Remove stored credentials

Tools

Auth

Tool

Description

authenticate

Login with username/password via MCP

Read

Tool

Description

get_profile

Athlete profile (ID, name, account type)

get_workouts

Workouts by date range (filter: all/planned/completed)

get_workout

Single workout with full details and structure

get_fitness

CTL/ATL/TSB from the Performance Management Chart

get_metrics

Health metrics (weight, HRV, sleep, SpO2, steps)

get_training_zones

Power, heart rate, and speed/pace zones

get_nutrition

Nutrition data by date range

Write

Tool

Description

create_workout

Create a planned workout

update_workout

Update an existing workout

delete_workout

Delete a workout

log_metrics

Log health metrics (weight, HRV, sleep, injury, etc.)

add_workout_comment

Add a comment to a workout

Authentication

Three methods, checked in order:

  1. Stored credentials — saved automatically after first login, auto-refreshes on expiry

  2. Browser login — opens on first run if no credentials exist

  3. Environment variable — set TP_AUTH_COOKIE to override (for CI/containers)

Credentials are stored at ~/.config/training-peaks-mcp/credentials.json with 0600 permissions.

Architecture

src/training_peaks_mcp/
├── __init__.py
├── __main__.py      # CLI entry point
├── auth.py          # Login flow, credential storage, browser auth page
├── client.py        # Async HTTP client for tpapi.trainingpeaks.com
└── server.py        # FastMCP tool definitions

The server uses the TrainingPeaks internal API (tpapi.trainingpeaks.com). Auth cookies are exchanged for short-lived bearer tokens via /users/v3/token.

Supported Sports

Swim, Bike, Run, Brick, Crosstrain, Race, DayOff, MtnBike, Strength, Custom, XCSki, Rowing, Walk, Other

License

MIT

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Withings health data — sleep, activity, heart, and body metrics.

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

  • Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.

View all MCP Connectors

Latest Blog Posts

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/jonathaneemmett/training-peaks-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server