get_activity_samples
Get detailed activity samples including step counts and activity zone data throughout the day. Returns intraday activity breakdown.
Your Polar training data in conversation — workouts with exports, sleep and recovery, cardio load, SpO2 and temperature, and SleepWise bedtime predictions.
LABSCO SUMMARY
Nearly every metric has both a single-day and a range variant, so "how has my HRV moved this month" is one call rather than thirty. That is the difference between a data viewer and something you can actually ask questions of. The file exports matter for the same reason from the other direction — a run leaves as a GPX or FIT file you can hand to another tool. Note that a 404 usually means the metric is not available for your watch or subscription rather than that something is broken.
An MCP server over the Polar AccessLink API, covering 25 tools across the whole of what a Polar watch records. It runs as a hosted instance you authorize with your Polar account, or self-hosted on Cloudflare Workers or locally.
get_exercises, get_exercise, get_exercise_fit, get_exercise_tcx, get_exercise_gpxget_sleep, get_sleep_rangeget_nightly_recharge, get_nightly_recharge_rangeget_daily_activity, get_daily_activity_range, get_activity_samples, get_activity_samples_rangeget_continuous_heart_rate, get_continuous_heart_rate_rangeget_cardio_load, get_cardio_load_range, get_cardio_load_historyget_sleepwise_alertness, get_sleepwise_circadian_bedtimeget_body_temperature, get_skin_temperature, get_spo2get_user_info, get_physical_infoA Polar account, authorized over OAuth. On the public instance that is all there is to it: add the hosted URL as an MCP server in your client and log in with Polar when the authorization window opens. Self-hosting on Cloudflare Workers needs a Cloudflare account, Polar AccessLink API credentials as POLAR_CLIENT_ID and POLAR_CLIENT_SECRET, a KV namespace for OAuth state, and the callback URL registered with your Polar app; running it locally instead uses POLAR_ACCESS_TOKEN obtained with npm run auth. The npm package name is polar-mcp-server (1.0.0). Data has to reach Polar before it can be read here — sync the watch to Polar Flow first, or exercises come back empty.
Add the hosted endpoint — paste it into your client
USE CASES
List the workouts, open the ones that matter for heart rate and zones, and read the cardio load trend alongside them.
Read last night's sleep and Nightly Recharge against the range for the past weeks, so one bad night is judged in context.
Compare acute against chronic cardio load and check the predicted alertness curve before committing to a session.
Export the session as GPX or FIT and hand the file to whatever mapping or analysis tool you use.
Read the circadian bedtime the watch computes and check it against your actual sleep over the past weeks.
Pull SpO2, body and skin temperature alongside resting heart rate from your physical profile to see whether something has shifted.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
get_activity_samplesGet detailed activity samples including step counts and activity zone data throughout the day. Returns intraday activity breakdown.
get_activity_samples_rangeGet activity samples for a date range. Maximum range is 28 days, and from date cannot be older than 365 days.
get_body_temperatureGet body temperature data from Elixir biosensing. Available on compatible Polar devices with temperature sensing capabilities.
get_cardio_loadGet cardio load (training impulse/TRIMP) data measuring cardiovascular strain from training. Shows acute load, chronic load, and load status.
get_cardio_load_historyGet historical cardio load data aggregated by days or months. Useful for long-term training load analysis.
get_cardio_load_rangeGet cardio load data for a date range. Returns training load metrics for each day in the specified period.
get_continuous_heart_rateGet continuous heart rate data recorded throughout the day. Returns 5-minute interval heart rate samples. Requires heart rate tracking to be enabled on the Polar device.
get_continuous_heart_rate_rangeGet continuous heart rate data for a date range. Returns 5-minute interval heart rate samples for each day in the range.
get_daily_activityGet daily activity summary including steps, calories burned, active time, activity goal progress, and activity classification throughout the day.
get_daily_activity_rangeGet daily activity data for a date range. Returns activity summaries including steps, calories, active time, and goal progress for each day in the range.
get_exerciseGet detailed data for a specific exercise by ID. Can include samples and zones for detailed analysis.
get_exercise_fitDownload exercise data in FIT format. FIT (Flexible and Interoperable Data Transfer) is a standard format used by fitness devices and apps.
get_exercise_gpxDownload exercise GPS route in GPX format. GPX (GPS Exchange Format) contains the route/track data and can be used with mapping applications.
get_exercise_tcxDownload exercise data in TCX format. TCX (Training Center XML) is compatible with many fitness platforms like Garmin Connect and Strava.
get_exercisesGet exercise data from Polar. Returns exercises from the last 30 days. Can include detailed samples (heart rate, speed, distance, etc.) and training zones for deeper analysis.
get_nightly_rechargeGet Nightly Recharge data which measures overnight recovery. Includes ANS charge (Autonomic Nervous System recovery status), HRV data (heart rate variability during sleep), breathing rate, and overall recovery assessment. Data from the last 28 days is available.
get_nightly_recharge_rangeGet Nightly Recharge data for a date range. Returns ANS charge, HRV, breathing rate, and recovery assessment for each night in the range.
get_physical_infoGet physical information and body metrics including weight, height, maximum heart rate, resting heart rate, VO2max, and other physical characteristics.
get_skin_temperatureGet sleep skin temperature data from Elixir biosensing. Measures skin temperature during sleep for recovery insights.
get_sleepGet sleep tracking data including sleep stages (deep, light, REM), sleep score, sleep duration, interruptions, and sleep quality metrics. Provides comprehensive sleep analysis.
get_sleep_rangeGet sleep data for a date range. Returns sleep tracking data including sleep stages, sleep scores, duration, and quality metrics for each night in the range.
get_sleepwise_alertnessGet SleepWise alertness data showing predicted alertness levels throughout the day based on sleep patterns. Helps understand when you'll be most alert or tired.
get_sleepwise_circadian_bedtimeGet SleepWise circadian bedtime recommendations based on your sleep patterns and circadian rhythm. Suggests optimal bedtime for better sleep quality.
get_spo2Get SpO2 (blood oxygen saturation) test results from Elixir biosensing. Available on devices with SpO2 measurement capability.
get_user_infoGet information about the registered Polar user including name, weight, height, birthdate, and other profile data
BEFORE YOU INSTALL
25 tools when we connected. All tools read. A 404 means your device or subscription lacks that data, as with get_spo2, get_body_temperature, get_skin_temperature and SleepWise tools; sync your watch to Polar Flow first or exercise tools return empty.
CONTEXT COST
Rated by the size of the 25 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
https://polar-mcp-server.n-neuhaeusel.workers.dev/mcpAdd this hosted endpoint to your MCP client.
Settings → Integrations → Add MCP Server, URL https://polar-mcp-server.n-neuhaeusel.workers.dev/mcp
git clone https://github.com/NelsonNew/polar-mcp-server.git
cd polar-mcp-server
npm install && npm run build
export POLAR_CLIENT_ID="<YOUR_POLAR_CLIENT_ID>"
export POLAR_CLIENT_SECRET="<YOUR_POLAR_CLIENT_SECRET>"
npm run authAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"polar": {
"command": "node",
"args": [
"<YOUR_PATH_TO_POLAR_MCP_SERVER>/dist/index.js"
],
"env": {
"POLAR_ACCESS_TOKEN": "<YOUR_POLAR_ACCESS_TOKEN>"
}
}
}
}git clone https://github.com/NelsonNew/polar-mcp-server.git
cd polar-mcp-server
npm install
npx wrangler kv namespace create OAUTH_KVCopy the ID to wrangler.toml
npx wrangler secret put POLAR_CLIENT_ID
npx wrangler secret put POLAR_CLIENT_SECRET
npm run deployAfter deploying, add the callback URL to your Polar app:
https://<YOUR_WORKER>.workers.dev/callback