Milofax/xert-mcp

🏃 Sports
0 Views
0 Installs

📇 ☁️ - MCP server for XERT cycling analytics — access fitness signature (FTP, HIE, PP), training status, workouts, activities with XSS metrics, and MPA analysis.

Quick Install

One-Click IDE Configuration
claude_desktop_config.json
{
  "mcpServers": {
    "milofax-xert-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "milofax-xert-mcp"
      ]
    }
  }
}
Or

Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.

Documentation Overview

XERT MCP Server

A Model Context Protocol (MCP) server that connects Claude to the XERT API, providing access to your fitness signature, training load, workouts, and activities.

Features

  • 📊 Fitness Signature - Get your current FTP, LTP, HIE, and Peak Power
  • 🎯 Training Status - Check freshness, training load, and recommended XSS
  • 🏋️ Workout of the Day - AI-powered workout recommendations
  • 📋 Workouts - List, view details, and export (ZWO/ERG)
  • 🚴 Activities - Browse activities with full XSS metrics and MPA data
  • ⬆️ Upload - Upload FIT files for analysis

Installation

Prerequisites

  • Node.js 18 or later
  • A XERT account (free or premium)

Setup

  1. Clone the repository:

    git clone https://github.com/Milofax/xert-mcp.git
    cd xert-mcp
    
  2. Install dependencies:

    npm install
    
  3. Authenticate with XERT:

    npm run setup-auth
    

    Enter your XERT email and password when prompted. Tokens will be saved to .env.

  4. Build the project:

    npm run build
    

Configuration

Add to your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "xert": {
      "command": "node",
      "args": ["/path/to/xert-mcp/dist/server.js"]
    }
  }
}

Replace /path/to/xert-mcp with the actual path to your installation.

Restart Claude Desktop to load the server.

Docker

You can also run the server via Docker:

1. Build the image

docker build -t xert-mcp .

2. Get your XERT tokens

Run the setup script locally first to authenticate:

npm install
npm run setup-auth

This creates xert-tokens.json with your access and refresh tokens.

3. Configure Claude Desktop

{
  "mcpServers": {
    "xert": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "XERT_ACCESS_TOKEN",
        "-e", "XERT_REFRESH_TOKEN",
        "xert-mcp"
      ],
      "env": {
        "XERT_ACCESS_TOKEN": "your-access-token-from-xert-tokens.json",
        "XERT_REFRESH_TOKEN": "your-refresh-token-from-xert-tokens.json"
      }
    }
  }
}

Note: Access tokens expire after 7 days. When they expire, run npm run setup-auth again and update the tokens in your config.

Available Tools

ToolDescription
xert-get-training-infoGet fitness signature, training status, load, and WOTD
xert-list-workoutsList all your saved workouts
xert-get-workoutGet detailed workout intervals
xert-download-workoutExport workout as ZWO or ERG file
xert-list-activitiesList activities in a time range
xert-get-activityGet activity details with XSS metrics
xert-upload-fitUpload a FIT file for analysis

Usage Examples

Ask Claude questions like:

  • "What's my current FTP and training status?"
  • "Show me my workout of the day"
  • "List my activities from the last 7 days"
  • "What was my XSS breakdown for yesterday's ride?"
  • "Did I have any breakthroughs this week?"
  • "Show me my saved workouts"
  • "Export my 'Sunday Endurance' workout as a ZWO file"

XERT Concepts

  • FTP - Functional Threshold Power (1-hour sustainable power)
  • LTP - Lower Threshold Power (fat-burning threshold)
  • HIE - High Intensity Energy (anaerobic work capacity)
  • PP - Peak Power (maximum instantaneous power)
  • XSS - Xert Strain Score (training load metric)
  • MPA - Maximum Power Available (real-time power limit)

Development

# Run in development mode
npm run dev

# Build for production
npm run build

# Start production server
npm start

Token Management

The server handles tokens automatically:

  • Access tokens expire after 7 days
  • Refresh tokens expire after 6 months
  • Tokens are stored in xert-tokens.json (created automatically)
  • On 401 errors, tokens are refreshed automatically
  • New tokens are persisted to survive server restarts

If authentication fails completely, run npm run setup-auth again.

MCP Funnel / Environment Variables

When using mcp-funnel or similar tools, tokens from xert-tokens.json take priority over environment variables. This ensures refreshed tokens are used even when env vars contain outdated values.

License

MIT

Credits

Related MCP Servers

anup-shesh/garmin-local-mcp

🐍 🏠 🍎 🪟 🐧 - Local-first Garmin data warehouse: incremental sync into SQLite you own, with server-side trends, lag-aware correlations, personal baselines, and anomaly detection returned as compact tables. Analysis keeps working offline when Garmin's API breaks, and a zero-auth FIT-bundle import fills gaps with no login at all.

🏃 Sports0 views
arturogarrido/claudinho

📇 🏠 🍎 🪟 🐧 - Live scores, fixtures, standings, and read-only prediction-market signals for the 2026 World Cup. No API keys.

🏃 Sports0 views
Backspace-me/sportscore-mcp

📇 ☁️ 🍎 🪟 🐧 - Live scores, standings, top scorers, player stats, and knockout brackets for football, basketball, cricket, and tennis. Free public API, no key required.

🏃 Sports0 views
chessceo/chessceo-mcp

📇 ☁️ 🏠 🍎 🪟 🐧 - Chess data via chess.ceo — 11.7M+ games and 1.5M FIDE player profiles. 8 tools: player search, per-player opening preparation (opening tree with frequency + win rate), position statistics from the full game database, head-to-head records, and live tournament broadcasts. No API key. Remote server at https://mcp.chess.ceo/mcp or local via npx -y @chessceo/mcp.

🏃 Sports0 views

Engagement

Views
0
Installs
0
Upvotes
0

Views and upvotes are unique per visitor network (hashed IP). Installs count copy actions.

Status

Health: Not checked yet

We have not completed a health check for this listing yet.

No check timestamp yet.

Unclaimed listing (imported or pending owner verification). Claim it →
★ Spotlight Slot

Feature Your MCP Server

Get maximum visibility for your server across our directory, search results, and detail pages.

Spotlight Your Server

Own this project?

This directory is pre-filled from public sources. Claim via GitHub README, site badge, or DNS TXT to get the verified badge and attach your website.

Claim this listing

Promote this listing

Optional paid placement. Free listings stay free forever.

Share & Embed

Add our SVG badge (dark/light directory styles) or embeddable widget to your site.