
Polar Health Data (self-hosted)
io.github.StuMason由 GitHub 帳號 StuMason 發布v1.6.2更新於 Oct 24, 2026
Self-hosted Polar health analytics with a built-in MCP server: sleep, HRV, workouts, baselines.
概覽
自架的 Polar 健康資料分析伺服器,內建 MCP 端點,讓助理讀取你的睡眠、HRV、訓練紀錄與個人基準。
- 可以做什麼
- 取得一次性的健康評估與訓練準備度結論
- 讀取睡眠、恢復、夜間充電、活動與訓練紀錄
- 查詢連續心率、血氧、ECG、皮膚溫度等生物感測資料流
- 將數值與個人基準比對,找出模式與異常
- 觸發並控制從 Polar AccessLink 同步資料
- 適用情境
- 適合配戴 Polar 裝置、希望把完整歷史保存在自己的 PostgreSQL 而非 Polar 僅 28-30 天視窗內,並想讓助理依據這些資料回答訓練與恢復問題的人。
- 執行需求
- 以自架 Docker 容器(或從原始碼)執行,需要 PostgreSQL 資料庫(DATABASE_URL)。需要 Polar AccessLink OAuth 憑證 POLAR_CLIENT_ID 與 POLAR_CLIENT_SECRET,正式環境還需 ENCRYPTION_KEY。設定 BASE_URL 可啟用 MCP 連接器的 OAuth 登入;無介面用戶端可用 X-API-Key 標頭。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Polar Health Data (self-hosted),將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
polar-flow-server
Self-hosted health analytics for Polar devices — own your data, analyze it against your own baselines, and let your AI assistant read it.
[Tests] [Docs] [Docker] [MCP] [License: MIT]
Full Documentation · MCP Server · Integration Guide · API Reference
What This Does
Your watch knows more about you than you do — and Polar's API only lets you see the last 28-30 days of it. This server syncs everything, keeps it forever, and turns it into answers:
- Syncs all 13 Polar API endpoints automatically — sleep, HRV, activity, workouts, SpO2, ECG, skin temperature, the lot
- Stores everything in PostgreSQL. Your data, your server, no cloud between you and it
- Computes personal baselines (rolling averages, IQR anomaly bounds) so "is this normal?" means normal for you
- Ships a built-in MCP server with OAuth sign-in — ask Claude "should I train hard today?" and it answers from your overnight HRV vs your baseline
- Admin dashboard (HTMX), REST API, per-user API keys, multi-user ready
Ask Your AI About Your Body (MCP)
A built-in Model Context Protocol server — protocol revision 2026-07-28, streamable HTTP — runs inside the main server at /mcp. Ten curated tools cover the one-shot health assessment, sleep, recovery, activity, workouts, seven biosensing streams, personal baselines, patterns/anomalies, and sync control.
In clients that render MCP Apps (claude.ai, Claude Desktop, VS Code), asking "how am I doing?" draws an actual card in the conversation:
Connecting is a sign-in, not a paste. With BASE_URL set, the server is its own OAuth 2.1 authorization server: add https://your-server/mcp as a custom connector in Claude Desktop or claude.ai, click Connect, log in on your server, approve the consent screen. Tokens are user-scoped, expire hourly, refresh automatically, and every connected app is revocable from Settings. API keys still work for headless clients:
Full setup in the MCP docs.
Architecture
Stack:
- Litestar (async web framework)
- SQLAlchemy 2.0 (async ORM)
- PostgreSQL
- HTMX + Tailwind (admin UI)
- polar-flow SDK v1.5.0
Don't fancy running a server? A hosted version is in the works — join the waitlist. Self-hosting stays free forever.
Quick Start
Option 1: Docker (Recommended)
Option 2: From Source
Setup
- Open http://localhost:8000/admin
- Get Polar credentials from admin.polaraccesslink.com (set redirect URI to
http://localhost:8000/admin/oauth/callback) - Enter credentials and click "Connect with Polar"
- Hit "Sync Now" to pull your data
The server syncs data every hour automatically.
Dashboard
The admin panel at /admin/dashboard is organised into tabs (with a
floating tab bar on mobile):
- Overview - stat tiles (HRV, resting HR, SpO2, skin temp, steps, strain, sleep score, alertness...), Today's Readiness recommendations, and "Today at a Glance" mini-charts (sleep stages, heart rate, steps)
- Trends & Baselines - personal baselines and detected patterns
- Sleep - sleep score and stage-duration charts
- Heart Rate - daily HR, HRV and ANS charge charts, biosensing panel
- Training Load - activity and cardio load charts
Charts have a selectable 7/14/30-day range and CSV export. API keys are managed from the settings page, with rate limit tracking. All frontend assets are vendored - the dashboard works offline and on a LAN with no CDNs.
Data Synced (13 Endpoints)
Configuration
Required Environment Variables
Generate an encryption key:
Optional Environment Variables
API Authentication
API endpoints require authentication. Health data should never be publicly accessible.
Authentication Methods
- Per-User API Keys (recommended) - Create from the admin dashboard or via OAuth flow
- Master API Key - Set
API_KEYenv var for full access (bypasses rate limits)
Using API Keys
Rate Limiting
- Default: 1000 requests per hour per API key
- Rate limits reset hourly
- Master API key (
API_KEYenv var) bypasses rate limiting - Rate limit info returned in response headers
OAuth Integration (SaaS / Multi-User)
For applications that need to integrate with polar-flow-server (e.g., Laravel, mobile apps, web frontends).
This allows any Polar user to connect their account to your application.
OAuth Flow
Step 1: Redirect user to start OAuth
Step 2: User authorizes on Polar
User is redirected to Polar, logs in with their credentials, and authorizes your app.
Step 3: User redirected to your callback
Step 4: Exchange temp code for API key (server-to-server)
Response:
Step 5: Store and use the API key
Store api_key and polar_user_id for this user. Use the API key for all data requests:
Polar Admin Setup
In admin.polaraccesslink.com, set your app's redirect URI to:
Key Management
API Endpoints
Development
Production Deployment
Deploy anywhere that runs Docker:
Coolify, Railway, Render, etc. - Point at the GitHub repo, it builds from the Dockerfile.
Required for production:
- Set
ENCRYPTION_KEYenvironment variable (tokens won't persist across restarts otherwise) - Set
DATABASE_URLto your PostgreSQL instance
Database migrations run automatically on startup.
Multi-Tenancy
The server supports multiple users out of the box:
- Every table includes
user_idcolumn - All queries scoped by
user_id - Per-user API keys ensure users can only access their own data
- Self-hosted: typically one user
- Multi-user: many users, same codebase
Built With
- polar-flow - Python SDK for Polar AccessLink API
- Litestar - Async web framework
- SQLAlchemy - Async ORM
- HTMX - Admin UI interactions
- Tailwind CSS - Styling
License
MIT
來源:README.md,提交 dfe3fc2
工具
0版本歷史
5- v1.6.2最新Oct 19, 2026
- v1.6.1Oct 2, 2026
- v1.6.0Oct 2, 2026
- v1.5.2Oct 2, 2026
- v1.5.1Sep 16, 2026
評分
已滿足適用檢查項的 40%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。