xert
Model Context Protocol (MCP) server for XERT API - access fitness signature, training load, workouts and activities
claude mcp add --transport stdio milofax-xert-mcp node /path/to/xert-mcp/dist/server.js
How to use
This MCP server integrates Claude with the XERT API, exposing your fitness signature, training status, workouts, activities, and the ability to upload FIT files for analysis. The server provides a set of tools that Claude can invoke to fetch your current FTP, LTP, HIE, and Peak Power, assess training load and freshness, retrieve or export workouts, and browse activities with XSS metrics and MPA data. Available commands include xert-get-training-info, xert-list-workouts, xert-get-workout, xert-download-workout, xert-list-activities, xert-get-activity, and xert-upload-fit. You can query Claude for personalized insights like your current training status, your Workout of the Day, or to export a specific workout as a ZWO or ERG file. The server handles token management and will automatically refresh tokens when needed, provided you have tokens configured correctly.
How to install
Prerequisites:
- Node.js 18 or later
- A XERT account (free or premium)
Setup steps:
-
Clone the repository and install dependencies: git clone https://github.com/Milofax/xert-mcp.git cd xert-mcp npm install
-
Authenticate with XERT (generates tokens in .env or xert-tokens.json): npm run setup-auth Enter your XERT email and password when prompted. Tokens will be saved to .env or xert-tokens.json as configured.
-
Build the project (if applicable): npm run build
-
Start the server (development): npm run dev
-
Start the production server: npm start
-
Optional: configure Claude Desktop to connect to the MCP server using the provided command and path to your built server.
Additional notes
Notes and tips:
- Access tokens expire after 7 days; refresh tokens expire after 6 months. The server is designed to refresh tokens automatically on 401 errors. If authentication fails entirely, re-run npm run setup-auth to re-authenticate and update tokens.
- If using Docker, you will need to provide token environment variables (XERT_ACCESS_TOKEN and XERT_REFRESH_TOKEN) or ensure tokens are mounted from a file. Tokens are stored in xert-tokens.json by the setup process.
- When using mcp-funnel or similar tooling, tokens from xert-tokens.json take priority over environment variables to ensure refreshed tokens are used.
- The MCP configuration example for Claude Desktop expects the server to be reachable at the given path and may require updating the path to dist/server.js after a build. Replace /path/to/xert-mcp with your actual installation path.
Related MCP Servers
Remote
A type-safe solution to remote MCP communication, enabling effortless integration for centralized management of Model Context.
pluggedin-app
The Crossroads for AI Data Exchanges. A unified, self-hostable web interface for discovering, configuring, and managing Model Context Protocol (MCP) servers—bringing together AI tools, workspaces, prompts, and logs from multiple MCP sources (Claude, Cursor, etc.) under one roof.
MCPNotes
A simple note-taking MCP server for recording and managing notes with AI models.
pinmeto-location
PinMeTo MCP server that enables users with authorized credentials to unlock their data
mongo
MCP server that provide tools to LLMs such as claude in cursor to interact with MongoDB
trainingpeaks
TrainingPeaks MCP server for Claude Desktop. No API approval needed - works with any account. Query workouts, CTL/ATL/TSB fitness data, power PRs via natural language.