Official Model Context Protocol (MCP) server for Runalyze, the analytics platform for runners, triathletes and endurance athletes. Connect your preferred AI assistant to your own training and health data: activities and laps, training load and shape, sleep, HRV, resting heart rate, body composition, injuries and race prognosis.
The server is read-only. It never creates, changes or deletes anything in your Runalyze account.
| Name | Runalyze MCP Server |
| MCP Server URL | https://runalyze.com/mcp |
| Transport | Streamable HTTP |
| Protocol | MCP 2025-06-18 (2024-11-05, 2025-03-26 and 2025-11-25 negotiated as well) |
| Authentication | OAuth 2.1 with PKCE / Personal API Token |
| Access | Runalyze Premium |
| Setup page | Settings → MCP |
- Activity analysis. List activities for any date range and pull full details for a single activity: pace, heart rate, power, cadence, running dynamics, elevation, TRIMP, VO2max, splits and streams.
- Training status. Fitness (CTL), fatigue (ATL), performance (TSB), acute:chronic workload ratio, monotony, training strain, marathon shape and the easy TRIMP load needed to get back to TSB 0.
- Race prognosis and personal bests. Predicted finish times for standard distances from your configured prediction model, alongside your actual PBs.
- Race history. Historical race results with official times and distances, placings and participant counts.
- Health and recovery. Sleep, HRV, resting heart rate, blood pressure, blood glucose, body temperature, body composition, mental state and daily notes — either as the latest snapshot or as a trend over a date range.
- Injuries and illness. Disease and injury entries with duration, affected body part and recorded pain levels.
The assistant picks the tools itself. These are questions the available data can genuinely answer — each one lists the tools it ends up touching.
"Break down yesterday's interval session — did I hold the pace across all reps?" Pulls the activity with its device laps and compares the active reps against each other, including heart rate drift from rep to rep.
get_activities·get_activity_details
"My easy runs feel much harder than the pace suggests. Is that in the data?" Cross-reads RPE and subjective feeling against heart rate and pace for the last few weeks of easy runs, and checks aerobic decoupling for evidence of cardiac drift.
get_activities·get_activity_details
"Compare my two fastest 10Ks — what did I do differently?" Lines up pace distribution, cadence, stride length, ground contact time and vertical oscillation side by side.
get_historical_races·get_activity_details
"How much can I train this week without digging myself into a hole?" Reads the easy TRIMP recommendation with its A:C bounds and turns it into a concrete weekly load budget.
get_calculations
"My A:C ratio jumped above 1.3 — which sessions pushed it there?" Combines the current ratio with the TRIMP of every activity in the ramp-up window to name the specific culprits.
get_calculations·get_activities
"Is my training too monotonous?" Reads monotony and training strain, then shows the TRIMP spread across the week that produced them.
get_calculations·get_activities
"Should I take a rest day or is a threshold run fine?" Weighs TSB and the rest-days estimate against your HRV baseline and normal range, and the last nights of sleep.
get_calculations·get_hrv_trend·get_sleep_summary
"My resting heart rate has been up for four days. Should I worry?" Puts the RHR trend next to HRV, sleep, body temperature and recent training load to separate an infection from ordinary fatigue.
get_resting_heart_rate_trend·get_hrv_trend·get_body_temperature_trend·get_calculations
"What marathon time is realistic for me right now, and what would move it?" Reads the prognosis for 42.195 km, checks which model produced it, and compares long-run and threshold history against what the target pace needs.
get_prognosis·get_activities
"How much of my last half marathon PB was fitness and how much was the day?" Compares the race against the prognosis at the time, the placings in the field, and the training block that led into it.
get_historical_races·get_prognosis·get_activities
"Has my VO2max actually improved this year, or is it noise?" Tracks effective VO2max across the season and separates it from the weight changes underneath it.
get_activities·get_calculations·get_weight_trend
"Write me a race report for Sunday." Turns splits, heart rate, placing and your own notes into a readable report you can post.
get_historical_races·get_activity_details
"Am I always getting injured at the same point in a build?" Lines up every injury entry with the training load in the weeks before it and looks for a repeating pattern.
get_health_diseases·get_calculations·get_activities
"Does my achilles pain track with hard weeks or with new shoes?" Reads the recorded pain levels next to weekly load and whatever you wrote in your daily notes.
get_health_diseases·get_daily_notes·get_activities
"How does my weight trend line up with my training volume this season?" Overlays body composition against monthly distance and duration.
get_weight_trend·get_activities
"Which weeks last year did I feel worst, and what was going on?" Finds the low points in the mental state trend and pulls together the load, sleep and notes from those weeks.
get_mental_state_trend·get_sleep_summary·get_calculations·get_daily_notes
"Does my morning blood glucose react to hard evening sessions?" Pairs each glucose reading with the training load of the day before.
get_blood_glucose_trend·get_activities
Setup is done at Settings → MCP in your Runalyze account. Ready-made connections exist for:
| Client | Authentication | Help |
|---|---|---|
| Claude (Web, Desktop, Code) | OAuth 2.1 | Settings → MCP |
| ChatGPT | OAuth 2.1 | Guide |
| Mistral | OAuth 2.1 | Guide |
| Gemini CLI | Personal API Token | Guide |
| Antigravity | Personal API Token | Guide |
| Any other MCP client | Personal API Token | Guide |
Settings → Connectors → Add custom connector:
- Name:
Runalyze - Remote MCP Server URL:
https://runalyze.com/mcp
OAuth is handled automatically on first use.
claude mcp add --transport http runalyze https://runalyze.com/mcp{
"mcpServers": {
"runalyze": {
"url": "https://runalyze.com/mcp",
"transport": { "type": "http" }
}
}
}For clients without OAuth support, create a personal API token in Runalyze at Settings → MCP and send it as a bearer token:
Authorization: Bearer <your-personal-api-token>
The server supports two methods:
-
OAuth 2.1 with PKCE. Recommended for third-party MCP hosts. Discovery is standard:
https://runalyze.com/.well-known/oauth-protected-resourcehttps://runalyze.com/.well-known/oauth-authorization-server
Supported scopes:
mcp.read,offline_access. Grant types:authorization_code,refresh_token. Code challenge method:S256. -
Personal API Token. Recommended for self-built agents and local LLM workflows. The token carries the fine-grained read scopes of your account.
The mcp.read scope expands to the individual read scopes the tools need: activity_read, athlete_statistics_read and the health read scopes for sleep, HRV, resting heart rate, blood glucose, blood pressure, weight, body temperature, mental state and daily notes.
All tool names, descriptions and JSON schemas can be listed by the MCP client. Date arguments are YYYY-MM-DD; ranges are inclusive and default to the last 30 days (14 for sleep) ending today.
| Tool | Description | Arguments | Scope |
|---|---|---|---|
get_activities |
List activities for a date range, with optional device and custom laps | start_date?, end_date?, limit? (≤200, default 50), include_splits? |
activity_read |
get_activity_details |
Full detail for one activity: metrics, running dynamics, FIT-file values, laps and streams | activity_id |
activity_read |
get_historical_races |
Race results with official time and distance, placings and participant counts | start_date?, end_date? |
activity_read |
get_prognosis |
Race prognosis for standard distances and durations, plus personal bests | – | activity_read |
get_calculations |
Fitness (CTL), fatigue (ATL), performance (TSB), A:C ratio, easy TRIMP, rest days, marathon shape, HRV baseline, monotony and strain | – | athlete_statistics_read |
| Tool | Description | Arguments | Scope |
|---|---|---|---|
get_health_metrics |
Latest value of every health metric in one call | – | any health read scope |
get_sleep_summary |
Sleep duration, REM / light / deep / awake, quality, heart rate and respiration | start_date?, end_date? |
health_sleep_read |
get_hrv_trend |
HRV values with metric, measurement type and unit | start_date?, end_date? |
health_hrv_read |
get_resting_heart_rate_trend |
Resting heart rate over time | start_date?, end_date? |
health_heart_rate_rest_read |
get_weight_trend |
Weight and body composition (fat, water, muscle, bone) | start_date?, end_date? |
health_weight_read |
get_blood_pressure_trend |
Systolic, diastolic and heart rate | start_date?, end_date? |
health_blood_pressure_read |
get_blood_glucose_trend |
Blood glucose readings | start_date?, end_date? |
health_blood_glucose_read |
get_body_temperature_trend |
Body temperature with measurement location | start_date?, end_date? |
health_body_temperature_read |
get_mental_state_trend |
Fatigue, stress, mood and the computed overall state | start_date?, end_date? |
health_mental_read |
get_daily_notes |
Free-text daily notes | start_date?, end_date? |
health_daily_note_read |
get_health_diseases |
Disease and injury entries with duration, body part and pain levels | start_date?, end_date? |
mcp.read |
Every tool declares an output schema, so hosts receive structured content rather than free-form text.
- All tools are read-only. There is no write, update or delete tool; nothing an assistant does through this server can change your Runalyze data.
- The server only ever accesses the account behind the presented token. Data of other athletes you can see in Runalyze as a friend or coach stays invisible to the MCP server.
- Tools whose scope your token does not carry fail with an explicit error instead of returning partial data.
get_health_metricsreturns only the metric types your scopes cover.
Training and health data is sensitive, and LLMs make mistakes. Nothing an assistant derives from this data is medical advice or a substitute for a qualified coach, a physician or your own judgement. Responsibility for health-related use of the data stays with you, as set out in the Terms of Use.
No MCP client has access to your Runalyze data until you explicitly connect it, and you can revoke any connection or personal API token at any time in Settings → MCP. Runalyze is GDPR compliant; see the Privacy Policy. Data sent through a hosted AI provider is subject to that provider's privacy policy — use a local LLM if you want everything to stay on your own device.
- Setup: Settings → MCP
- Forum: board.runalyze.com
- Help center: runalyze.com/help
- Model Context Protocol: modelcontextprotocol.io