Comparison

FitnessPeak vs self-hosting a WHOOP MCP server

There are good open-source WHOOP MCP servers. They are free. Here is exactly what you take on by running one, and exactly what you give up by not.

The short version. Self-hosting is free and private. Hosting is instant and stays working. If you'd enjoy the setup, self-host — genuinely. If you want to ask your assistant a question tonight, that's what $39 a year buys.

Self-hosted open-source MCPFitnessPeak
Time to first answer30–60 minutes~2 minutes
WHOOP developer app requiredYesNo
Client secret in a local fileYesNo
Node/Python runtime neededYesNo
Works with your laptop closedNoYes
Works from a phone assistantNoYes
Works in mobile and browser clientsNoYes
Refresh-token rotation handledVaries by projectYes
Told when the connection breaksNoYes
Survives WHOOP API v2-style changesYou update itYes
Multiple clients share one connectionCopy config to eachYes
Tokens never leave your hardwareYesNo
Modify the tool codeYesNo
CostFree$39/year
The work

What self-hosting actually involves

Not a strawman — this is the real sequence, and it's the same for every open-source WHOOP MCP server we've looked at.

1. Register a WHOOP developer app

Sign in to WHOOP's developer dashboard, create an app, choose scopes, and register a redirect URI. Get the redirect URI wrong by one character and the OAuth exchange fails with an error that doesn't say which character.

2. Run the OAuth flow on your own machine

typical self-host setup
npm install && npm run build
node dist/cli.js auth   # opens a browser, listens on localhost:8788

This writes tokens to ~/.whoop-mcp/credentials.json. Now those tokens exist on that machine and nowhere else.

3. Wire it into every client separately

Each MCP client needs an absolute path to the built CLI. Move the folder, upgrade Node, or switch laptops and every client breaks at once.

4. Keep it alive

A stdio MCP server is spawned by the client and dies with it. Nothing runs when the laptop sleeps, which rules out scheduled agents and anything on your phone.

5. Maintain it

WHOOP's v1 → v2 migration changed sleep and workout IDs from integers to UUIDs and deprecated sport_id in favour of sport_name. Every self-hoster had to notice and update. Anyone hosted had nothing to do.

The trade

What you give up by hosting

We'd rather say this plainly than have you discover it later.

Your tokens sit on our servers

They're encrypted at rest with AES-256-GCM and never returned to a model or a client — but they are on infrastructure you don't control. Self-hosting is the only way to avoid that, and if it's your requirement it's the right answer. Read exactly how we store them.

You can't change the tools

Want a custom aggregation, a different date-bucketing rule, or a sixth WHOOP endpoint? Self-hosting means editing a file. Here it means emailing us and waiting.

It costs money

$39 a year against free. If your time is genuinely free and you enjoy this kind of setup, the maths favours self-hosting.

You depend on us existing

If FitnessPeak shuts down, your connection stops. Your data is unaffected — it lives at WHOOP — but you'd be back to self-hosting. Worth weighing.

The case for hosting

What the money buys

01No WHOOP developer account

Self-hosting means registering your own app on WHOOP's developer dashboard, naming a redirect URI, and copying a client secret into a config file. With FitnessPeak you click Connect WHOOP, approve, done.

02Nothing to keep running

A stdio MCP server only exists while your laptop is awake and the client that spawned it is open. Ours answers over HTTPS from a server that stays up — so the same key works from your phone's assistant, your work laptop, and a scheduled agent at 6am.

03Token refresh is our problem

WHOOP access tokens last about an hour and the refresh token rotates on every use. Get that wrong once and the connection silently dies. We serialise refreshes per account and tell you by email if one ever fails for good.

04Works in clients that can't spawn processes

Mobile assistants, browser-based clients and scheduled agents cannot launch a local binary. A hosted HTTPS endpoint is the only thing they can talk to at all.

05Updates without a git pull

WHOOP moved from API v1 to v2 and changed sleep and workout IDs from integers to UUIDs. Self-hosters had to notice, read the changelog, and update. Hosted users had nothing to do.

Decide

Which one are you?

Self-host if…

  • Your health tokens must stay on your own hardware
  • You want to modify or extend the tools
  • You only ever use one desktop MCP client
  • Running a small service is something you enjoy

Search GitHub for “whoop mcp” — there are several, and they're MIT-licensed.

Use FitnessPeak if…

  • You want it working in the next five minutes
  • You use a phone assistant, or more than one client
  • You'd rather not own a token-refresh bug
  • $39 a year is cheaper than an evening of your time
Start 14-day trial
Is self-hosting a WHOOP MCP server actually hard?
The first hour is fine — clone, npm install, register a developer app, run an OAuth command. The hard part is month three, when the refresh token has rotated a few hundred times, WHOOP has shipped an API change, and you've forgotten which machine the process is on.
So why would I ever self-host?
If your WHOOP tokens must never leave hardware you control, self-host. That's a real, legitimate requirement and no hosted service can match it. Same if you want to modify the tools, add custom aggregations, or you simply enjoy running your own infrastructure.
Can I move from self-hosted to FitnessPeak?
Yes, and there's nothing to migrate. Connect WHOOP here, swap the entry in your MCP client config, and delete the old one. Your data lives at WHOOP either way.
Do you contribute back to the open-source servers?
FitnessPeak's tool descriptions, markdown formatting and WHOOP API notes started from open-source work, and we say so. If you self-host, those projects deserve your star more than we deserve your money.

Try hosted for seven days

14-day free trial. Card required so there's no second signup at the end; cancel before day 14 and you're charged nothing.