
Polarmcp
io.github.davidmosiahPublished by GitHub account davidmosiahv0.3.6Updated Oct 24, 2026
Privacy-first unofficial Polar AccessLink v4 MCP server for AI health, sleep and training agents.
Overview
Local MCP server that connects an AI assistant to a user's own Polar AccessLink account for sleep, recovery, heart-rate and training data.
- What you can do
- Check setup, scopes and readiness, and walk through onboarding and OAuth authorization locally, including revoking access and auditing privacy settings and cache state. Read daily and weekly summaries combining sleep, activity, Nightly Recharge and training load, plus a shared wellness context shape. List activity, calendar, sleep and sleep/wake vectors, Nightly Recharge, continuous heart-rate samples, PPI intervals, temperature measurements and skin-contact periods. List training sessions, training targets and favorites, tests, sports, sport profiles and devices, and fetch routes with GPS redacted by default. Read and update a local wellness profile that stores only what the user typed, and
- When to use it
- Use it when you train with a Polar device and want an assistant to reason about recovery, training load and sleep without copying numbers out of Polar Flow. It suits daily check-ins, weekly reviews and training-load investigations on a desktop MCP client.
- Requirements
- Node.js 20 or later and a local process via npx. A Polar AccessLink client with redirect URI plus POLAR_CLIENT_ID and POLAR_CLIENT_SECRET, which the setup command can store in a local config file. OAuth authorization is done once in a browser; tokens are kept in a local file. Network access to Polar is required.
Installation
In SourceWeft
- Open Polarmcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Upgrading to 0.6.0: read the migration guide for local-only HTTP, disabled authenticated-response caching, and stricter input/profile limits.
Polar MCP
Give your AI agent your Polar Nightly Recharge, training load, PPI and HRV data — locally.
Local-first MCP server — tokens never leave your machine.
[npm version] [npm downloads] [License MIT] [Site]
[GitHub stars] [Built for MCP] [Hermes one-command setup] [Polar]
⚡ One-command install with Delx Wellness for Hermes:
npx -y delx-wellness-hermes setup— preconfigures this connector and the other 8 in a dedicated Hermes profile.Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop — see the install section below.
HTTP (v2 stateless)
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
Env: POLAR_MCP_HOST, POLAR_MCP_PORT, POLAR_MCP_TRANSPORT=http.
Local-first MCP server that connects AI agents to your Polar training, sleep, Nightly Recharge and continuous-sample data.
Unofficial project. Not affiliated with, endorsed by or supported by Polar Electro Oy. Polar is a trademark of its respective owner. Use this only with your own Polar account and in line with the Polar AccessLink API terms.
Built by David Mosiah for people who use Claude, Cursor, Hermes, OpenClaw or other MCP-compatible agents to think about training load, recovery and endurance - without copy-pasting numbers from Polar Flow.
Part of Delx Wellness, a registry of local-first wellness MCP connectors.
If this connector helps your agent workflow, please star the repo. Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first wellness infrastructure.
Why this exists
Polar has one of the deepest training-physiology stacks among consumer wearables - Nightly Recharge, continuous samples, PPI (pulse-to-pulse intervals), training targets, sport profiles, orthostatic and fitness tests. The Polar AccessLink Dynamic API v4 exposes this data, but with 16 fine-grained OAuth scopes and a structure that's harder to navigate than typical consumer APIs.
This package handles the OAuth dance locally, normalizes responses across the v4 endpoints, redacts GPS by default, and exposes Polar through the Model Context Protocol. Tokens never leave your machine.
Setup in 60 seconds
You'll need a Polar AccessLink client (create one here) with redirect URI http://127.0.0.1:3000/callback.
Recommended scopes (request the ones matching the data you want):
Then add this to your MCP client config:
For Claude Desktop, run setup --client claude and the snippet is written for you.
Try it with your agent
Three things to ask first:
Data availability
This package uses the official Polar AccessLink Dynamic API v4. When this README says raw, it means the upstream Polar JSON for a supported endpoint - not raw device sensor streams.
Tools
Start with these:
polar_quickstart- personalized 3-step setup walkthrough that adapts to what's already configuredpolar_connection_status- verify local setup, scopes and readiness before calling Polarpolar_data_inventory— inventory supported data domains, scopes, privacy modes and recommended first calls without calling Polar APIs.polar_demo- synthetic example payloads so agents see the contract before calling the real APIpolar_daily_summary- sleep, activity, Nightly Recharge and training brief for todaypolar_weekly_summary- scorecard, comparison vs prior week, next-week planpolar_wellness_context- Nightly Recharge, sleep and training load in the sharedwellness_contextshape
Auth & diagnostics
polar_capabilities,polar_agent_manifest,polar_privacy_audit,polar_cache_statuspolar_get_auth_url,polar_exchange_code,polar_revoke_access
Account
polar_get_account_data,polar_list_user_devices,polar_list_subscriptions
Shared wellness profile (local, never Polar data)
polar_onboarding,polar_profile_get,polar_profile_update— the Delx Wellness profile shared with the other connectors; stores only what the user typed, never tokens or biomarkers
Activity & sleep
polar_list_activity,polar_list_calendarpolar_list_sleeps,polar_list_sleep_wake_vectors— sleep lists hydrate available dates with the v4sleep-result,sleep-evaluation, andsleep-scorefeatures by defaultpolar_list_nightly_recharge
Heart & physiology (date range)
polar_heart_series— agent-safe-series/v1 bounded HR from continuous samples (prefer this for agents)polar_list_continuous_samples,polar_list_ppi_samplespolar_list_temperature_measurements,polar_list_skin_contacts
Training
polar_list_training_sessions,polar_list_training_targets,polar_list_training_target_favoritespolar_list_tests
Sports & routes
polar_list_sports,polar_list_sport_profile_catalog,polar_list_sport_profilespolar_get_route- GPS coordinates redacted unless raw mode
Prompts
polar_daily_checkin- practical daily training and recovery check-inpolar_weekly_review- review trends across activity, sleep and recoverypolar_training_load_investigation- investigate training sessions + recovery context
Resources
polar://capabilities,polar://agent-manifest,polar://inventorypolar://summary/daily,polar://summary/weeklypolar://account-data,polar://latest/sleep
Privacy & security
- OAuth tokens are stored in
~/.polar-mcp/tokens.jsonwith0600permissions and are never returned by tools. - The server never prints access or refresh tokens.
POLAR_PRIVACY_MODEdefaults tostructured. Structured mode preserves the complete upstream physiological payload while removing secret/GPS fields; normalized aliases are additive and never replace nested v4 objects. Raw Polar JSON is opt-in viarawmode or per-call override.- GPS route geometry is redacted in
summaryandstructuredmodes - onlyrawmode exposes raw coordinates. - Date formats and supported
featuresare validated per endpoint. Feature queries that Polar limits to one day are hydrated one available date at a time. - The MCP client never sees access or refresh tokens.
- This is not medical advice. The server exposes user-authorized data for personal AI workflows, not diagnosis or training prescription.
Configuration
setup writes most of these into ~/.polar-mcp/config.json (0600). Manual env override is supported:
Hermes / remote setup
After Hermes config changes, use /reload-mcp or hermes mcp test polar. Don't restart the gateway for normal data access.
If browser OAuth has to happen on a different machine than Hermes, run auth locally and copy ~/.polar-mcp/tokens.json to the server with chmod 600.
Requirements
- Node.js 20+
- A Polar AccessLink client at https://admin.polaraccesslink.com with redirect URI
http://127.0.0.1:3000/callback
Development
Test with MCP Inspector:
Links
- npm: https://www.npmjs.com/package/polar-mcp-unofficial
- Docs site: https://wellness.delx.ai/connectors/polar
- Legacy docs: https://polarmcp.vercel.app/
- GitHub: https://github.com/davidmosiah/polar-mcp
- Delx Wellness registry: https://github.com/davidmosiah/delx-wellness
- Connector quality standard: https://github.com/davidmosiah/delx-wellness/blob/main/docs/connector-quality-standard.md
- Polar AccessLink Dynamic API v4 docs: https://www.polar.com/polar-api-v4/
See also
The full Delx Wellness connector library:
One-command setup for Hermes — preconfigures every connector above plus wellness skills + onboarding: delx-wellness-hermes.
📧 Contact & Support
- 📨 [email protected] — general questions, integration help, partnerships
- 🐛 Bug reports / feature requests — GitHub Issues
- 🐦 Updates — @delx369 on X
- 🌐 Site — wellness.delx.ai
License
MIT - see LICENSE.
Disclaimer
This software is provided as-is. It is not a medical device, does not provide medical advice, and should not be used for diagnosis, treatment or training prescription. Always consult qualified professionals for medical or training concerns.
Skill or MCP
Same package, two doors. MCP registers tools on stdio/HTTP. The skill can drive the same tools through the CLI when the client has no MCP:
Copy skill/SKILL.md into your agent skills dir.
Source: README.md at commit d04b4f8
Tools
0Version history
1- v0.3.6LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts