{"name":"io.github.rajdeepmondaldotcom/whoop-mcp","slug":"rajdeepmondaldotcom-whoop-mcp","title":null,"description":"WHOOP recovery, sleep, strain, and workouts for any AI. Analysis tools, demo mode, fast setup.","url":"https://mcp.market/server/rajdeepmondaldotcom-whoop-mcp","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":19,"stars":2,"forks":0,"downloads_week":55,"last_push_at":"2026-06-12T20:24:44.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/rajdeepmondaldotcom/whoop-mcp-server","website":null,"version":"0.0.5","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"whoop-mcp-server","version":"0.0.5","transport":{"type":"stdio"},"environmentVariables":[{"description":"Set to 1 to serve realistic generated data (no WHOOP account needed)","name":"WHOOP_MCP_DEMO"}]}],"tools":[{"name":"compare_periods","description":"Compare two date ranges across recovery, HRV, resting heart rate, sleep, strain, calories, and workout count - with per-metric change, percent change, and an improved/declined/unchanged assessment. Period A is the baseline; period B is compared against it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"connect_whoop_account","description":"Connect or re-authorize the user's WHOOP account from inside the chat: opens the WHOOP consent page in the user's browser on this machine and waits up to 3 minutes for them to approve. Only call this when the user explicitly asks to connect, reconnect, or fix authorization. Requires WHOOP app credentials to be configured already (otherwise it returns setup steps instead of opening anything).","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_data","description":"Export every WHOOP record in a date range to local files on this machine: data.json (complete transformed dataset, plus raw API records when include_raw is true), daily_summary.csv (one row per day), and workouts.csv. Nothing is uploaded anywhere. Returns the file paths and record counts. Large ranges can take a minute or two.","write_action":false,"price_micros":0,"input_schema":null},{"name":"fetch","description":"Fetch the full document for an id returned by `search`. Supported id forms: day:YYYY-MM-DD, sleep:<uuid>, workout:<uuid>, cycle:<int>, recovery:<cycle_int>, profile.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_connection_status","description":"Whether this server is connected to a WHOOP account: app credentials, token state and expiry, granted scopes, and a live API check. Call this first when WHOOP data tools fail.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_correlations","description":"How the user's metrics move together day-to-day (7-180 day window): strain vs next-morning recovery, sleep duration vs recovery, sleep consistency vs recovery, strain vs that night's sleep, HRV vs recovery. Pearson r with strength labels and plain-English interpretations - correlation, not causation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_cycle","description":"Get one cycle by id, optionally with the recovery and sleep that belong to it (WHOOP links each recovery and primary sleep to a cycle). Set include_raw=true to also attach WHOOP's untouched API records.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_cycles","description":"List physiological cycles (WHOOP's wake-to-wake \"days\"): day strain, calories, heart rate. Newest first; the newest cycle is usually still in progress.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_daily_summary","description":"One day of WHOOP data in a single call: recovery score, sleep, day strain, and workouts, with a one-line summary. The best first tool for \"how am I doing\" or \"how did I sleep\" questions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_health_overview","description":"The holistic everything-at-once view (7-180 day window): today's status, recovery/sleep/strain trend directions, training load, personal records and streaks, and the strongest behavior-physiology correlations. The best first call for \"give me the full picture of my health\".","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_personal_records","description":"Bests, worsts, and streaks over a window (7-180 days): best/worst recovery, highest HRV, lowest resting heart rate, longest sleep, highest strain day, biggest workout, green-recovery streaks, and totals.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_profile","description":"Get the user's WHOOP profile and body measurements (name, email, height, weight, max heart rate).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recoveries","description":"List recovery records (recovery %, HRV, resting heart rate, SpO2, skin temperature), newest first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_recovery_trends","description":"Recovery trends over a window (7-180 days): statistics, trend direction, and unusual days for recovery %, HRV, and resting heart rate, plus a daily table. Trend directions account for metric polarity (rising HRV is good, rising resting heart rate is not).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sleep","description":"Get one sleep record by its UUID (from get_sleeps or a recovery's sleep_id). Set include_raw=true to also attach WHOOP's untouched API record.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sleep_stream","description":"Minute-level overnight sensor data for one sleep: heart rate and skin temperature curves (downsampled to resolution_minutes buckets) plus overnight stats like the lowest heart rate and when it happened. Get the sleep_id from get_sleeps, get_daily_summary, or a recovery record. WHOOP does not expose this stream for every account/app - if unavailable, a clear note is returned instead of an error.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sleep_trends","description":"Sleep trends over a window (7-180 days): hours slept, performance, efficiency, consistency, and sleep debt - statistics, trend directions, unusual nights, and a nightly table. Naps are counted but excluded from nightly averages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_sleeps","description":"List sleep records (duration, stages, efficiency, performance, sleep debt), newest first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_strain_trends","description":"Strain and training-load trends over a window (7-180 days): daily strain statistics, calories, workout totals by sport, and the acute:chronic load ratio (7-day vs 28-day average strain) when enough data exists.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_weekly_report","description":"Monday-to-Sunday report: a per-day grid of recovery, sleep, and strain, plus weekly averages and workout totals.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_workout","description":"Get one workout by its UUID (from get_workouts). Set include_raw=true to also attach WHOOP's untouched API record.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_workouts","description":"List workouts (sport, strain, calories, heart rate, distance, HR zones), newest first. Optionally filter by sport name (substring match, e.g. \"run\").","write_action":false,"price_micros":0,"input_schema":null},{"name":"search","description":"Search WHOOP data with a natural-language query (e.g. \"sleep last week\", \"runs this month\", \"recovery yesterday\"). Returns matching day summaries, workouts, and sleeps as documents whose ids can be passed to `fetch`.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-27T05:28:59.345Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T05:28:59.348Z","components":{"code":{"score":25,"max":25,"notes":["19 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":8,"max":15,"notes":["last push 106 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"whoop-mcp-server","version":"0.0.5","found":true,"weeklyDownloads":55,"license":"MIT","dependencyCount":5,"publishedAt":"2026-06-12T11:29:27.536619Z","repositoryUrl":"https://github.com/rajdeepmondaldotcom/whoop-mcp-server"}],"repo":{"found":true,"owner":"rajdeepmondaldotcom","repo":"whoop-mcp-server","archived":false,"pushedAt":"2026-06-12T20:24:44Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/129278342?v=4","ownerCreatedAt":"2023-03-29T10:12:23Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/129278342?v=4&s=128","source":"github"},"presence":{"stars":2,"forks":0,"downloadsWeek":55,"license":"MIT","lastPushAt":"2026-06-12T20:24:44.000Z","score":19}}}},"grade_history":[],"reviews":[]}