Ask Claude about your WHOOP recovery, sleep, strain and workouts. Self-hosted, with sign-in.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Your WHOOP data in whichever AI you use, or, soon, in your own code. Self-hosted, private, and open source.
Ask Claude, ChatGPT or another MCP app "How did I sleep this week?" and get the answer from your own recovery, sleep, strain and workouts. You run the server yourself: it fetches your data from WHOOP when you ask and keeps no copy, and only the apps you've allowed can reach it.
This is an independent open-source project. It uses the WHOOP API to access data from WHOOP products, and is not affiliated with, endorsed by, or sponsored by WHOOP.
Built on the Whoop Developer API v2, and the Model Context Protocol (MCP), the open standard AI apps use to call tools like these.
| Tool | Description |
|---|---|
get_today | Morning briefing with recovery, sleep, and strain |
get_recovery_trends | Recovery patterns over time with HRV/RHR |
get_sleep_analysis | Sleep trends: time asleep, performance, and efficiency |
get_strain_history | Daily strain and calorie trends |
get_workouts | Recent workouts with activity, duration, strain, heart rate, and calories |
get_auth_url | Link to connect your Whoop account (works once, expires in 10 minutes) |
https://github.com/yuridivonis/whoop-mcp-server/blob/main/PRIVACY.md, or your own adapted copy if you run the server for someone else. People see this link when they approve the app.https://your-app.up.railway.app/callback. If you don't have the address yet, fill this in after step 2 creates it.read:recovery, read:cycles, read:sleep, and read:workout. The server doesn't use the others. The login also asks for offline, which lets the server renew its Whoop access without you logging in again; the dashboard doesn't list it.Every release is published as a ready-made image, ghcr.io/yuridivonis/whoop-mcp-server. Deploy that: there's no need to fork this repository unless you want to change the code (see Changing the code). The steps below use Railway; to run it anywhere else, see Docker.
ghcr.io/yuridivonis/whoop-mcp-server:1.4.1. Then, in the service's Settings β Networking β Public Networking, choose Generate Domain: that's your server's address, your-app.up.railway.app below.WHOOP_CLIENT_ID: Your Whoop app client IDWHOOP_CLIENT_SECRET: Your Whoop app client secretWHOOP_REDIRECT_URI: https://your-app.up.railway.app/callbackMCP_AUTH_PASSWORD: the password each AI app asks for when you connect it. Generate one with openssl rand -base64 24 and keep it in your password manager. The server refuses to start without it (at least 16 characters).ENCRYPTION_SECRET (optional, recommended): generate one with openssl rand -base64 32. It encrypts your stored Whoop tokens, so rotating the Whoop client secret later won't disconnect your account./data. It holds the sign-ins and your encrypted Whoop tokens; without it, every redeploy signs your apps out and disconnects Whoop.https://your-app.up.railway.app/health to check it's running.Already running a fork on Railway? Switch it to the image: open the service's Settings, change Service Source to ghcr.io/yuridivonis/whoop-mcp-server:1.4.1, and turn on auto updates as in step 4. Keep the same variables and volume, so Whoop stays connected. If your fork is older than 1.3.0, read Upgrading to 1.3.0 first: every app signs in once more. Your fork is then no longer used.
Add your server's address, https://your-app.up.railway.app/mcp, to your AI app as a custom connector. It opens your server's sign-in page: check it names the app you're connecting, enter your MCP_AUTH_PASSWORD, and tick the box allowing it to read your Whoop data. For example, in Claude.ai: Customize β Connectors β + β Add custom connector.
Add to your AI has the steps for Claude, ChatGPT, Claude Code, Cursor, VS Code and Windsurf, and which have been tested. Apps stay signed in across redeploys; anyone without the password gets 401 Unauthorized from /mcp.
get_auth_url and gives you a link.1.3.0 stops keeping a copy of your Whoop data, and asks you before each app receives it. To upgrade:
:1: pull it again and restart). With a fork, use GitHub's Sync fork button, then redeploy, or switch to the image as described in Deploy.Deleted the WHOOP data stored by an earlier version.sync_data is gone. If your app still lists it, remove the connector and add it again.There's no going back to 1.2.x on the upgraded database: it can't sign apps in with the new sign-in tables.
1.1.0 puts a sign-in in front of /mcp. Version 1.0.0 had no authentication there, so any 1.0.0 server that worked with Claude over HTTP served its data to anyone who knew the URL. (Unmodified 1.0.0 also had a request-parsing bug that stopped Claude from connecting over HTTP at all; 1.1.0 fixes both.) To upgrade:
main branch), or switch the service to the image as described in Deploy.MCP_AUTH_PASSWORD in your Railway variables (see Setup, step 2). Without it, the new version won't start. That's deliberate.get_auth_url once to reconnect.read:profile and read:body_measurement. 1.1.0 no longer uses them.No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/whoop-mcp-server-2)<a href="https://allmcps.com/mcp/whoop-mcp-server-2"><img src="https://allmcps.com/api/badge/whoop-mcp-server-2?style=directory" alt="Whoop MCP Server on AllMCPs" /></a>