Polar MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Polar MCP Server How was my sleep last night?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Polar MCP Server
An MCP (Model Context Protocol) server for the Polar AccessLink API. Connect your Polar fitness data to Claude AI - access workouts, sleep analysis, recovery metrics, heart rate data, and more.
Quick Start (Public Instance)
No setup required! Use our hosted instance:
In Claude: Settings → Integrations → Add MCP Server
Enter the URL:
https://polar-mcp-server.n-neuhaeusel.workers.dev/mcpClaude will open an authorization window — log in with your Polar account
Start chatting about your fitness data!
Related MCP server: Polar MCP
Features
25 Tools Available
Category | Tools | Description |
Exercises |
| Training data with HR, speed, zones |
Exercise Export |
| Export in FIT, TCX, GPX formats |
Sleep |
| Sleep stages, score, duration |
Recovery |
| ANS charge, HRV, breathing rate |
Activity |
| Steps, calories, activity zones |
Heart Rate |
| 24/7 heart rate monitoring |
Training Load |
| TRIMP, acute/chronic load |
SleepWise |
| Alertness predictions, optimal bedtime |
Biosensing |
| Temperature, SpO2 data |
User |
| Profile, VO2max, resting HR |
Supported Devices
Polar Pacer / Pacer Pro
Polar Vantage V2 / V3
Polar Vantage M / M2
Polar Grit X / Grit X Pro / Grit X2 Pro
Polar Ignite / Ignite 2 / Ignite 3
Polar Unite
And more...
Example Prompts
Once connected, ask Claude:
"Show me my workouts from last week"
"How was my sleep last night? Compare it to my weekly average"
"Analyze my heart rate variability trends"
"What's my current training load status?"
"When should I go to bed tonight for optimal recovery?"
"Export my last run as a GPX file"
"How many steps did I take this month?"
Self-Hosting
Want to run your own instance? Two deployment options available:
Option 1: Cloudflare Workers (Recommended)
Prerequisites
Cloudflare account
Polar AccessLink API credentials
Setup
# Clone and install
git clone https://github.com/NelsonNew/polar-mcp-server.git
cd polar-mcp-server
npm install
# Create KV namespace
npx wrangler kv namespace create OAUTH_KV
# Copy the ID to wrangler.toml
# Set secrets
npx wrangler secret put POLAR_CLIENT_ID
npx wrangler secret put POLAR_CLIENT_SECRET
# Deploy
npm run deployAfter deploying, add the callback URL to your Polar app:
https://YOUR-WORKER.workers.dev/callbackOption 2: Local (Claude Desktop)
# Clone and build
git clone https://github.com/NelsonNew/polar-mcp-server.git
cd polar-mcp-server
npm install && npm run build
# Get access token
export POLAR_CLIENT_ID="your_client_id"
export POLAR_CLIENT_SECRET="your_client_secret"
npm run authAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"polar": {
"command": "node",
"args": ["/path/to/polar-mcp-server/dist/index.js"],
"env": {
"POLAR_ACCESS_TOKEN": "your_access_token"
}
}
}
}API Reference
All tools use the Polar AccessLink API v3.
Tool | Endpoint | Description |
|
| User profile |
|
| VO2max, max HR, resting HR |
|
| Last 30 days of workouts |
|
| Single workout details |
|
| Export formats |
|
| Sleep data |
|
| Recovery metrics |
|
| Daily activity |
|
| 24/7 HR |
|
| Training load |
|
| Alertness predictions |
|
| Body temp |
|
| Blood oxygen |
Troubleshooting
Error | Solution |
"Polar API error (403)" | Re-authorize or check if data sync is complete |
"Polar API error (404)" | Endpoint not available for your device/subscription |
No exercise data | Sync your Polar device to Polar Flow app first |
Privacy
Your Polar credentials are never stored
OAuth tokens are managed securely by the Cloudflare Workers OAuth provider
Each user gets their own isolated MCP session
No fitness data is logged or stored on our servers
Contributing
Contributions welcome! Please open an issue or PR.
License
MIT
Links
Available Tools
25 toolsget_activity_samplesA
Get detailed activity samples including step counts and activity zone data throughout the day. Returns intraday activity breakdown.
Inputs: date.
get_activity_samples_rangeA
Get activity samples for a date range. Maximum range is 28 days, and from date cannot be older than 365 days.
Inputs: to (required), from (required).
get_body_temperatureB
Get body temperature data from Elixir biosensing. Available on compatible Polar devices with temperature sensing capabilities.
Inputs: to, from.
get_cardio_loadB
Get cardio load (training impulse/TRIMP) data measuring cardiovascular strain from training. Shows acute load, chronic load, and load status.
Inputs: date.
get_cardio_load_historyA
Get historical cardio load data aggregated by days or months. Useful for long-term training load analysis.
Inputs: count (required), period_type (required).
get_cardio_load_rangeB
Get cardio load data for a date range. Returns training load metrics for each day in the specified period.
Inputs: to (required), from (required).
get_continuous_heart_rateA
Get 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.
Inputs: date (required).
get_continuous_heart_rate_rangeA
Get continuous heart rate data for a date range. Returns 5-minute interval heart rate samples for each day in the range.
Inputs: to (required), from (required).
get_daily_activityA
Get daily activity summary including steps, calories burned, active time, activity goal progress, and activity classification throughout the day.
Inputs: date.
get_daily_activity_rangeA
Get daily activity data for a date range. Returns activity summaries including steps, calories, active time, and goal progress for each day in the range.
Inputs: to (required), from (required).
get_exerciseA
Get detailed data for a specific exercise by ID. Can include samples and zones for detailed analysis.
Inputs: exerciseId (required), zones, samples.
get_exercise_fitB
Download exercise data in FIT format. FIT (Flexible and Interoperable Data Transfer) is a standard format used by fitness devices and apps.
Inputs: exerciseId (required).
get_exercise_gpxA
Download exercise GPS route in GPX format. GPX (GPS Exchange Format) contains the route/track data and can be used with mapping applications.
Inputs: exerciseId (required).
get_exercisesA
Get 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.
Inputs: zones, samples.
get_exercise_tcxB
Download exercise data in TCX format. TCX (Training Center XML) is compatible with many fitness platforms like Garmin Connect and Strava.
Inputs: exerciseId (required).
get_nightly_rechargeA
Get 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.
Inputs: date.
get_nightly_recharge_rangeA
Get Nightly Recharge data for a date range. Returns ANS charge, HRV, breathing rate, and recovery assessment for each night in the range.
Inputs: to (required), from (required).
get_physical_infoA
Get physical information and body metrics including weight, height, maximum heart rate, resting heart rate, VO2max, and other physical characteristics.
Inputs: no named parameters.
get_skin_temperatureA
Get sleep skin temperature data from Elixir biosensing. Measures skin temperature during sleep for recovery insights.
Inputs: to, from.
get_sleepA
Get sleep tracking data including sleep stages (deep, light, REM), sleep score, sleep duration, interruptions, and sleep quality metrics. Provides comprehensive sleep analysis.
Inputs: date.
get_sleep_rangeA
Get 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.
Inputs: to (required), from (required).
get_sleepwise_alertnessA
Get SleepWise alertness data showing predicted alertness levels throughout the day based on sleep patterns. Helps understand when you'll be most alert or tired.
Inputs: to, from.
get_sleepwise_circadian_bedtimeB
Get SleepWise circadian bedtime recommendations based on your sleep patterns and circadian rhythm. Suggests optimal bedtime for better sleep quality.
Inputs: to, from.
get_spo2B
Get SpO2 (blood oxygen saturation) test results from Elixir biosensing. Available on devices with SpO2 measurement capability.
Inputs: to, from.
get_user_infoA
Get information about the registered Polar user including name, weight, height, birthdate, and other profile data
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Each tool targets a distinct data type or operation: user info, exercises (with multiple export formats and detailed data), body metrics, sleep, activity, heart rate, cardio load, and sleepwise alerts. Even tools that query similar data (e.g., single vs. range) are clearly differentiated by the 'range' suffix and descriptions.
All tools follow the consistent 'get_<noun_pair>' pattern in snake_case. Range variants use '_range' suffixes, and exercise exports use '_fit', '_tcx', '_gpx'. The naming is predictable and uniform.
25 tools is on the higher side, but each covers a specific aspect of Polar health data (user info, exercises, sleep, activity, etc.). The count is justified by the breadth of data types, though it pushes the upper limit of an ideal scope.
The server provides comprehensive read access to Polar health data, covering user profile, exercises (with multiple export formats), sleep, activity, heart rate, cardio load, and sleepwise metrics. Missing write operations (create/update/delete) is acceptable if the server is read-only, but no tools for device settings or goal management are present.
Maintenance
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Adaptive running coach MCP server — training data, plans, and recovery for AI assistants.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients.1MIT
- AlicenseBqualityBmaintenanceLocal-first MCP server that connects AI agents to your Polar training, sleep, Nightly Recharge and continuous-sample data.38348 npm6MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server for Garmin Connect integration. Access your activities, health data, training metrics, and more through Claude and other LLMs.2268MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude access to your Garmin Connect fitness and health data, including steps, sleep, activities, heart rate, and more.1MIT