Polar MCP Server

MCP server for Polar AccessLink API to export data from Polar watches.

Polar MCP Server

License: MIT Cloudflare Workers MCP

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:

  1. Visit polar-mcp-server.n-neuhaeusel.workers.dev
  2. Click "Connect with Polar" and authorize with your Polar account
  3. Copy the MCP Server URL you receive
  4. In Claude: Settings β†’ Integrations β†’ Add MCP Server
  5. Paste the URL and start chatting about your fitness data!

Features

25 Tools Available

CategoryToolsDescription
Exercisesget_exercises, get_exerciseTraining data with HR, speed, zones
Exercise Exportget_exercise_fit, get_exercise_tcx, get_exercise_gpxExport in FIT, TCX, GPX formats
Sleepget_sleep, get_sleep_rangeSleep stages, score, duration
Recoveryget_nightly_recharge, get_nightly_recharge_rangeANS charge, HRV, breathing rate
Activityget_daily_activity, get_daily_activity_range, get_activity_samples, get_activity_samples_rangeSteps, calories, activity zones
Heart Rateget_continuous_heart_rate, get_continuous_heart_rate_range24/7 heart rate monitoring
Training Loadget_cardio_load, get_cardio_load_range, get_cardio_load_historyTRIMP, acute/chronic load
SleepWiseget_sleepwise_alertness, get_sleepwise_circadian_bedtimeAlertness predictions, optimal bedtime
Biosensingget_body_temperature, get_skin_temperature, get_spo2Temperature, SpO2 data
Userget_user_info, get_physical_infoProfile, 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 deploy

After deploying, add the callback URL to your Polar app:

https://YOUR-WORKER.workers.dev/callback

Option 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 auth

Add 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.

ToolEndpointDescription
get_user_info/users/{id}User profile
get_physical_info/users/physical-informationVO2max, max HR, resting HR
get_exercises/exercisesLast 30 days of workouts
get_exercise/exercises/{id}Single workout details
get_exercise_fit/tcx/gpx/exercises/{id}/fit|tcxgpx
get_sleep/users/sleepSleep data
get_nightly_recharge/users/nightly-rechargeRecovery metrics
get_daily_activity/users/activitiesDaily activity
get_continuous_heart_rate/users/continuous-heart-rate24/7 HR
get_cardio_load/users/cardio-loadTraining load
get_sleepwise_alertness/users/sleepwise/alertnessAlertness predictions
get_body_temperature/users/biosensing/bodytemperatureBody temp
get_spo2/users/biosensing/spo2Blood oxygen

Troubleshooting

ErrorSolution
"Session expired"Visit /authorize again to create a new session
"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 dataSync your Polar device to Polar Flow app first

Privacy

  • Your Polar credentials are never stored
  • OAuth tokens are stored in Cloudflare KV with 24-hour expiration
  • Each user gets their own isolated session
  • No fitness data is logged or stored on our servers

Contributing

Contributions welcome! Please open an issue or PR.

License

MIT

Links

  • Polar AccessLink API
  • Polar Developer Portal
  • MCP Protocol
  • Cloudflare Workers

Related Servers