Mirobody
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
Beschreibung vom Entwickler (englisches Original)
Self-hosted Polar health analytics with a built-in MCP server: sleep, HRV, workouts, baselines.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
DATABASE_URL, POLAR_CLIENT_ID, POLAR_CLIENT_SECRET, BASE_URLAls geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"polar-flow": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URL",
"-e",
"POLAR_CLIENT_ID",
"-e",
"POLAR_CLIENT_SECRET",
"-e",
"BASE_URL",
"docker.io/stumason/polar-flow-server:1.6.2"
],
"env": {
"DATABASE_URL": "your-value",
"POLAR_CLIENT_ID": "your-value",
"POLAR_CLIENT_SECRET": "your-value",
"BASE_URL": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add polar-flow --env DATABASE_URL=your-value --env POLAR_CLIENT_ID=your-value --env POLAR_CLIENT_SECRET=your-value --env BASE_URL=your-value -- docker run -i --rm -e DATABASE_URL -e POLAR_CLIENT_ID -e POLAR_CLIENT_SECRET -e BASE_URL docker.io/stumason/polar-flow-server:1.6.2Trag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"polar-flow": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URL",
"-e",
"POLAR_CLIENT_ID",
"-e",
"POLAR_CLIENT_SECRET",
"-e",
"BASE_URL",
"docker.io/stumason/polar-flow-server:1.6.2"
],
"env": {
"DATABASE_URL": "your-value",
"POLAR_CLIENT_ID": "your-value",
"POLAR_CLIENT_SECRET": "your-value",
"BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"polar-flow": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URL",
"-e",
"POLAR_CLIENT_ID",
"-e",
"POLAR_CLIENT_SECRET",
"-e",
"BASE_URL",
"docker.io/stumason/polar-flow-server:1.6.2"
],
"env": {
"DATABASE_URL": "your-value",
"POLAR_CLIENT_ID": "your-value",
"POLAR_CLIENT_SECRET": "your-value",
"BASE_URL": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
BASE_URL envDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto StuMason bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: DATABASE_URL, POLAR_CLIENT_ID, POLAR_CLIENT_SECRET
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.6.2) kam vor 19 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Docker auf deinem Computer.
In derselben Kategorie: Mirobody, FHIR MCP Server, Google Health MCP
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Self-hosted health analytics for Polar devices — own your data, analyze it against your own baselines, and let your AI assistant read it.
[Full Documentation](https://stumason.github.io/polar-flow-server/) · MCP Server · Integration Guide · API Reference
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:
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:
claude mcp add polar-health https://your-server.example.com/mcp \
--transport http \ --header "X-API-Key: pfk_your_key_here"
Full setup in the MCP docs.
Polar API → polar-flow SDK → Sync Service → PostgreSQL
↓ Admin Dashboard (HTMX) ↓ REST API
Stack:
Don't fancy running a server? A hosted version is in the works — join the waitlist. Self-hosting stays free forever.
# Pull and run
curl -O https://raw.githubusercontent.com/StuMason/polar-flow-server/main/docker-compose.prod.yml docker-compose -f docker-compose.prod.yml up -d
git clone https://github.com/StuMason/polar-flow-server.git
cd polar-flow-server docker-compose up -d
http://localhost:8000/admin/oauth/callback)The server syncs data every hour automatically.
The admin panel at /admin/dashboard is organised into tabs (with a floating tab bar on mobile):
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.
| Endpoint | Data |
|---|---|
| Sleep | Score, stages (light/deep/REM), duration |
| Nightly Recharge | HRV, ANS charge, recovery status |
| Daily Activity | Steps, distance, calories, active time |
| Exercises | Sport, duration, HR zones, training load |
| Cardio Load | Strain, tolerance, load ratio, status |
| SleepWise Alertness | Hourly alertness predictions |
| SleepWise Bedtime | Optimal sleep timing recommendations |
| Activity Samples | Minute-by-minute step data |
| Continuous HR | All-day heart rate (5-min intervals) |
| SpO2 | Blood oxygen tests (compatible devices) |
| ECG | Electrocardiogram tests (compatible devices) |
| Body Temperature | Continuous body temperature |
| Skin Temperature | Nightly skin temperature with baseline deviation |
| Variable | Description | Required |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | Yes |
ENCRYPTION_KEY | 32-byte Fernet key for token encryption | Yes (production) |
Generate an encryption key:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
| Variable | Description | Default |
|---|---|---|
DEPLOYMENT_MODE | self_hosted or saas | self_hosted |
SYNC_INTERVAL_HOURS | Auto-sync frequency | 1 |
SYNC_ON_STARTUP | Sync when server starts | false |
SYNC_DAYS_LOOKBACK | Days of history to sync | 28 |
LOG_LEVEL | Logging verbosity | INFO |
API_KEY | Master API key (bypasses rate limits) | None |
API endpoints require authentication. Health data should never be publicly accessible.
API_KEY env var for full access (bypasses rate limits)# With per-user API key (includes rate limit headers)
curl -H "X-API-Key: pfk_your_api_key_here" \ http://localhost:8000/api/v1/users/{user_id}/sleep?days=7
API_KEY env var) bypasses rate limitingFor 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.
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────┐
│ Your App │────▶│ polar-flow-server │────▶│ Polar Flow │ │ (Laravel etc) │ │ │ │ (OAuth) │ │ │◀────│ │◀────│ │ └─────────────────┘ └─────────────────────┘ └─────────────────┘
Step 1: Redirect user to start OAuth
GET /oauth/start?callback_url=https://yourapp.com/callback&client_id=your-app-name
| Parameter | Required | Description |
|---|---|---|
callback_url | Yes | Where to redirect after OAuth (your app's callback endpoint) |
client_id | No | Identifier for your app (validated during exchange) |
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
https://yourapp.com/callback?code=TEMP_CODE_HERE
Step 4: Exchange temp code for API key (server-to-server)
POST /oauth/exchange
Content-Type: application/json
{ "code": "TEMP_CODE_HERE", "client_id": "your-app-name" }
Response:
{
"api_key": "pfk_abc123...", "polar_user_id": "12345678", "expires_at": null }
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:
curl -H "X-API-Key: pfk_abc123..." \
"https://your-polar-server.com/api/v1/users/12345678/sleep?days=7"
In admin.polaraccesslink.com, set your app's redirect URI to:
https://your-polar-server.com/oauth/callback
# Get key info
GET /api/v1/users/{user_id}/api-key/info X-API-Key: pfk_...
POST /api/v1/users/{user_id}/api-key/regenerate X-API-Key: pfk_...
POST /api/v1/users/{user_id}/api-key/revoke X-API-Key: pfk_...
# Health check (no auth required)
curl http://localhost:8000/health
curl -H "X-API-Key: pfk_..." \ "http://localhost:8000/api/v1/users/{user_id}/sleep?days=7"
curl -H "X-API-Key: pfk_..." \ "http://localhost:8000/api/v1/users/{user_id}/activity?days=7"
curl -H "X-API-Key: pfk_..." \ "http://localhost:8000/api/v1/users/{user_id}/recharge?days=7"
curl -H "X-API-Key: pfk_..." \ "http://localhost:8000/api/v1/users/{user_id}/exercises?days=30"
curl -H "X-API-Key: pfk_..." \ "http://localhost:8000/api/v1/users/{user_id}/export/summary?days=30"
# Install dependencies
uv sync --all-extras
docker-compose up -d postgres
uv run uvicorn polar_flow_server.app:app --reload
uv run pytest
uv run mypy src/polar_flow_server
uv run ruff check src/
Deploy anywhere that runs Docker:
# Download and run
curl -O https://raw.githubusercontent.com/StuMason/polar-flow-server/main/docker-compose.prod.yml docker-compose -f docker-compose.prod.yml up -d
Coolify, Railway, Render, etc. - Point at the GitHub repo, it builds from the Dockerfile.
Required for production:
ENCRYPTION_KEY environment variable (tokens won't persist across restarts otherwise)DATABASE_URL to your PostgreSQL instanceDatabase migrations run automatically on startup.
The server supports multiple users out of the box:
user_id columnuser_idNur der Anfang wird gezeigt; den Rest findest du im Repo