home / mcp / domestique mcp server

Domestique MCP Server

Provides unified access to Intervals.icu, Whoop, and TrainerRoad data via an MCP API to query workouts, recovery, planning, and trends.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "gesteves-domestique": {
      "url": "https://domestique.fly.dev/mcp",
      "headers": {
        "REDIS_URL": "redis://localhost:6379",
        "MCP_AUTH_TOKEN": "your-secret-token",
        "WHOOP_CLIENT_ID": "your_client_id",
        "INTERVALS_API_KEY": "intervals_api_key",
        "WHOOP_REDIRECT_URI": "http://localhost:3000/callback",
        "WHOOP_CLIENT_SECRET": "your_client_secret",
        "INTERVALS_ATHLETE_ID": "12345",
        "TRAINERROAD_CALENDAR_URL": "https://trainerroad.example.com/calendar.ics"
      }
    }
  }
}

Domestique is a TypeScript MCP server that unifies access to fitness data from Intervals.icu, Whoop, and TrainerRoad, letting you query workouts, view recovery metrics, planning calendars, and trends from a single endpoint.

How to use

You connect your MCP client to the Domestique server to access multiple data sources in one place. Use the available tools to retrieve today’s data, historical trends, and planning information. You can also configure Claude to ask natural-language questions and receive consolidated responses about workouts, recovery, planning, and trends.

How to install

Prerequisites you need before running the server include Node.js 20 or newer, access to Intervals.icu with an API key, a Whoop OAuth setup, and a TrainerRoad private calendar feed.

1) Prepare environment configuration by copying the example and filling in credentials.

2) Start the Docker environment to run the server and dependencies.

3) Complete the Whoop OAuth flow to obtain and store tokens in Redis for token refresh.

Configuration and operation notes

Key configuration and runtime steps you will use include setting environment variables for MCP authentication and data source credentials, starting the server, and connecting via an MCP client or Claude.

To connect with Claude, you can use the MCP URL for the deployment and pass your secret token in the Authorization header, or include it as a query parameter if your setup requires that UI method.

Claude integration example

Use the HTTP endpoint provided by your deployment to connect Claude. The server URL exposes the MCP API under /mcp, and you can supply your secret token in the Authorization header like this: Authorization: Bearer YOUR_SECRET_TOKEN. If you prefer a query parameter approach for Claude's UI, append token=YOUR_SECRET_TOKEN to the MCP URL.

Troubleshooting and tips

If tokens or API keys are not accepted, verify that Redis is running and that all required environment variables are set. Check the logs for OAuth token refresh events and ensure your Intervals.icu and TrainerRoad feeds are reachable. Use the MCP Inspector tool to verify tool availability and parameter handling against your local server.

Available tools

get_todays_recovery

Today's Whoop recovery metrics including sleep and HRV data.

get_todays_strain

Today's Whoop strain metrics including strain score, heart rate, and calories.

get_todays_completed_workouts

Today's completed workouts from Intervals.icu.

get_todays_planned_workouts

Today's planned workouts from TrainerRoad and Intervals.icu calendars.

get_workout_history

Historical workouts with matched Whoop strain data, supporting ISO dates or natural language ranges; includes expanded metrics like speed, cadence, efficiency, and per-activity fitness snapshots.

get_strain_history

Whoop strain scores and activities for a date range.

get_recovery_trends

HRV, sleep, and recovery patterns over time with summary statistics.

get_training_load_trends

Training load trends including CTL, ATL, TSB, ramp rate, and ACWR for injury risk.

get_upcoming_workouts

Planned workouts for future date ranges from both TrainerRoad and Intervals.icu calendars.

get_planned_workout_details

Detailed information about a specific planned workout by ID or date.