{"name":"io.github.davidmosiah/garminmcp","slug":"davidmosiah-garminmcp","title":null,"description":"Privacy-first unofficial Garmin Connect MCP for AI health, sleep, activity & recovery agents.","url":"https://mcp.market/server/davidmosiah-garminmcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":29,"stars":12,"forks":7,"downloads_week":null,"last_push_at":"2026-08-29T10:26:33.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/davidmosiah/garmin-mcp","website":"https://wellness.delx.ai/connectors/garmin","version":"0.5.3","remotes":[],"packages":[{"registryType":"npm","identifier":"garmin-mcp-unofficial","version":"0.5.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Optional local path for Garmin Connect tokens. Defaults to ~/.garmin-mcp/garmin_tokens.json. Create it with garmin-mcp-server auth (self-contained Node login, no Python).","format":"string","name":"GARMIN_TOKEN_PATH"},{"description":"Optional payload mode: summary, structured, or raw. Defaults to structured. raw means full supported Garmin Connect payloads, not unrestricted raw sensor telemetry.","format":"string","name":"GARMIN_PRIVACY_MODE"},{"description":"Optional SQLite cache toggle. Set to true or sqlite to enable.","format":"string","name":"GARMIN_CACHE"},{"description":"Optional local SQLite cache path. Defaults to ~/.garmin-mcp/cache.sqlite.","format":"string","name":"GARMIN_CACHE_PATH"},{"description":"Optional Garmin domain override. Use garmin.cn only for China accounts; default is garmin.com.","format":"string","name":"GARMIN_DOMAIN"},{"description":"Set to true to bypass the in-memory HTTP response cache (60s TTL for GET only). POST/PUT/DELETE and 4xx/5xx responses are never cached regardless.","format":"string","name":"GARMIN_NO_CACHE"}]}],"tools":[{"name":"garmin_agent_manifest","description":"Machine-readable install, runtime and client guidance for AI agents. Does not call Garmin or expose secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_auth_instructions","description":"Explain the local Garmin Connect authentication flow without asking the user to paste secrets into an agent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_cache_status","description":"Show optional local SQLite cache status. Enable with GARMIN_CACHE=sqlite or GARMIN_CACHE=true.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_capabilities","description":"Explain supported Garmin data, privacy boundaries, recommended agent workflow and project links.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_connection_status","description":"Check local Garmin config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Garmin or exposing secrets.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_daily_summary","description":"Build a practical daily summary from Garmin activity, sleep, heart-rate, HRV, stress and Body Battery when available. Read-only and non-medical.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_data_inventory","description":"Inventory supported Garmin data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Garmin APIs or expose user data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_demo","description":"Returns realistic example payloads of garmin_daily_summary, garmin_wellness_context, and garmin_get_body_battery_day so agents see the contract before any real Garmin Connect call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_disconnect_local","description":"Delete the local Garmin token file. This does not change the Garmin account; use only when the user explicitly wants to disconnect this MCP.","write_action":true,"price_micros":0,"input_schema":null},{"name":"garmin_get_weight_range","description":"Get Garmin weight/body-composition logs for a date range. Not medical advice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_onboarding","description":"Return the 11-question Delx wellness onboarding flow (in English or pt-BR) plus the current shared profile state and missing critical fields. Read-only. The agent should ask these questions one-by-one, then call garmin_profile_update with explicit_user_intent=true to save. The same profile is reused by every Delx Wellness connector (WHOOP, Oura, Nourish, etc.) — agents can call the equivalent {con","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_privacy_audit","description":"Return local privacy, cache, token-path and env-presence posture without revealing secret values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_profile_get","description":"Read the shared Delx wellness profile (~/.delx-wellness/profile.json). Returns the user's preferred name, body basics, goals, devices, training context, nutrition context, agent preferences, and missing critical fields. Cross-connector — the same profile is also available from other Delx Wellness MCPs (WHOOP, Oura, Nourish, Fitbit, etc). Read-only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_profile_update","description":"Persist a partial patch to the shared Delx wellness profile (~/.delx-wellness/profile.json). REQUIRES explicit_user_intent=true. Top-level fields stored: profile (preferred_name, language, timezone, units, age_or_birth_year, height, weight, sex_or_gender_context), goals, devices, training, nutrition, preferences, safety, notes. NEVER stores OAuth tokens, API keys, refresh tokens, cookies, or any s","write_action":true,"price_micros":0,"input_schema":null},{"name":"garmin_quickstart","description":"Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Garmin?'","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_weekly_summary","description":"Build a weekly Garmin scorecard with movement, sleep, HRV, stress, Body Battery, bottlenecks and actions. Read-only and non-medical.","write_action":false,"price_micros":0,"input_schema":null},{"name":"garmin_wellness_context","description":"Normalize Garmin readiness, sleep score, Body Battery and recent movement load into the shared wellness_context shape for recommendation engines.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-26T11:37:38.898Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T11:37:38.941Z","components":{"code":{"score":25,"max":25,"notes":["60 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 28 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"garmin-mcp-unofficial","version":"0.5.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":5,"publishedAt":"2026-06-27T13:26:06.856Z","repositoryUrl":"git+https://github.com/davidmosiah/garmin-mcp.git"}],"repo":{"found":true,"owner":"davidmosiah","repo":"garmin-mcp","archived":false,"pushedAt":"2026-08-29T10:26:33Z","stars":12,"forks":7,"openIssues":1,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/624359?v=4","ownerCreatedAt":"2011-02-18T00:23:21Z","license":"MIT"},"icon":{"url":"https://wellness.delx.ai/favicon.svg","source":"site"},"presence":{"stars":12,"forks":7,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-29T10:26:33.000Z","score":29}}}},"grade_history":[],"reviews":[]}