Whoop MCP Server

Configure your MCP server

Your MCP server is up. All that's left is to configure it, so the AI apps you use (Claude, ChatGPT and others) can talk to your WHOOP data. Three steps here, then two in your AI app. Keep this page open until the end.

  1. Server running

    It serves this page.

  2. Create your WHOOP app

    In the WHOOP Developer Dashboard, open New App and fill the form top to bottom:

    Name
    Anything, like My MCP server. You see it when you approve the app.
    Logo
    Optional. Skip it, or upload an image to see it on WHOOP's approval screen.
    Contacts
    Your email. Only WHOOP sees it.
    Privacy Policy
    This project's, or your own if you run the server for someone else:

    https://github.com/yuridivonis/whoop-mcp-server/blob/main/PRIVACY.md

    Redirect URLs
    This server's callback, exactly:

    https://mini.tailf90187.ts.net/callback

    Scopes
    Tick these four and leave the other two unticked: the server reads recovery, strain (WHOOP's cycles), sleep and workouts, and asks for nothing it doesn't use.
    • Tick read:recovery
    • Tick read:cycles
    • Tick read:sleep
    • Tick read:workout
    • Leave unticked read:profile
    • Leave unticked read:body_measurement
    Webhooks
    Leave it empty. The server gets your data from WHOOP each time you ask, so WHOOP never has to send it anything.

    Click Create App. WHOOP shows the app's Client ID and Client Secret: keep that tab open.

  3. Give this server the keys

    1. On Railway, open the service's Variables tab.
    2. WHOOP_CLIENT_ID: select replace-with-your-client-id and paste the Client ID over it.
    3. WHOOP_CLIENT_SECRET: select replace-with-your-client-secret and paste the Client Secret over it.
    4. Click Deploy at the top. When it's done, reload this page: steps 2 and 3 tick. (If you left this tab meanwhile, it has reloaded by itself.) Seeing an error page? Check on Railway that the deploy has finished, then reload.

    The two variables aren't there? Add them with New Variable. Running it with Docker or elsewhere? Set the two variables where you set MCP_AUTH_PASSWORD and restart. Steps 2 and 3 still unticked a minute after the deploy? Each variable must hold WHOOP's value alone, with nothing left of replace-with-….

Then, in your AI app

Step 4Connect your AI app

Once step 3 is done. Step 3 doesn't change the address.

The address to add as a custom connector:

https://mini.tailf90187.ts.net/mcp

It asks for the server password, which lets your AI app talk to this server: on Railway, that's the MCP_AUTH_PASSWORD variable in the service's Variables tab (click the eye to reveal it). Then you let this server read your WHOOP data, on WHOOP's own page: that's the link under Ask your first question.

Keep your WHOOP data out of model training. WHOOP's terms forbid using it to train AI, and your answers pass through your AI app. One switch in your app keeps it out. In Claude, turn off Settings → Privacy → Help Improve our AI models. In ChatGPT, turn off Settings → Data controls → Improve the model for everyone.

Claude
On claude.ai, go to Customize → Connectors, click +, then Add custom connector. Paste the address, name it, click Add, then Connect: enter the password, tick the box, sign in. In a chat, turn it on under + → Connectors.
ChatGPT
On the web, go to Settings → Plugins → Add → Create MCP App (no such button? Turn on Developer mode under Settings → Security and login). Name it, set the MCP server URL to the address, choose OAuth (and Dynamic client registration, if asked), sign in with the password and tick the box, then create the app. In a new chat, mention it (@Whoop) and ask.
Other apps
Add to your AI covers the other AI apps you may want to read your WHOOP data through this server (Claude Code, Cursor, VS Code, Windsurf), and Team and Business workspaces.

Step 5Ask your first question

Ask your AI app anything about your WHOOP data, like how you slept. The first such question brings an authorization link instead of an answer: click it, log in with your WHOOP account (the one you use in the WHOOP app, whose data you want to read), approve the app, then ask again. The server renews its access each time you ask, so you normally won't be asked again. If you are, it's the same link.

From then on, ask wherever your AI app has this connector: Claude's desktop and mobile apps use the one you added, and ChatGPT's MCP apps are web-only.

Updates

Deployed from the Railway template? New versions install themselves: nothing to do. Set up by hand on Railway? Turn on Configure Auto Updates under Settings → Source, with the :1 image tag. With Docker, pull :1 again and restart.

If you add a custom domain later, open this page again: if the Redirect URL under Create your WHOOP app changed, update it in your WHOOP app.