Supabase
MCP server for interacting with the Supabase platform
Descripción del creador (original en inglés)
Sync WHOOP recovery, sleep, strain, and workouts into Postgres and query them from any MCP client.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET, WHOOP_REDIRECT_URI, WHOOP_DB_URLLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"whoop-postgres": {
"command": "uvx",
"args": [
"whoop-postgres-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "your-value",
"WHOOP_CLIENT_SECRET": "your-value",
"WHOOP_REDIRECT_URI": "your-value",
"WHOOP_DB_URL": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add whoop-postgres --env WHOOP_CLIENT_ID=your-value --env WHOOP_CLIENT_SECRET=your-value --env WHOOP_REDIRECT_URI=your-value --env WHOOP_DB_URL=your-value -- uvx whoop-postgres-mcpCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"whoop-postgres": {
"command": "uvx",
"args": [
"whoop-postgres-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "your-value",
"WHOOP_CLIENT_SECRET": "your-value",
"WHOOP_REDIRECT_URI": "your-value",
"WHOOP_DB_URL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"whoop-postgres": {
"type": "stdio",
"command": "uvx",
"args": [
"whoop-postgres-mcp"
],
"env": {
"WHOOP_CLIENT_ID": "your-value",
"WHOOP_CLIENT_SECRET": "your-value",
"WHOOP_REDIRECT_URI": "your-value",
"WHOOP_DB_URL": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub cunicopia-dev, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: WHOOP_CLIENT_ID, WHOOP_CLIENT_SECRET, WHOOP_REDIRECT_URI, WHOOP_DB_URL
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.1.0) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: Supabase, MongoDB MCP Server, Elasticsearch MCP Server
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
MCP server for interacting with the Supabase platform
MongoDB Model Context Protocol Server
MCP server for interacting with Elasticsearch
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
An [MCP](https://modelcontextprotocol.io) server that syncs your WHOOP data into Postgres and lets AI agents query it.
WHOOP's public API is rate-limited, cursor-paginated, and returns one record at a time. That is fine for a sync job and terrible for an agent that wants to answer "how does my HRV this week compare to my baseline?". So this server splits the job in two:
Your data lands in a database you own, in a schema you can read with any SQL client, and nothing leaves your machine except calls to WHOOP itself.
Python 3.12+ · MIT · stdio MCP server + CLI · Postgres storage
Two write-side tools talk to the WHOOP API; everything else reads Postgres only.
| Tool | Args | What it does |
|---|---|---|
whoop_auth_url | none | Returns the OAuth authorization URL to open in a browser. |
whoop_connect | code | Exchanges the OAuth code for tokens, stores them, returns the connected user. |
whoop_sync | days=7, full=false | Pulls data from WHOOP into Postgres. Returns per-collection counts and errors. |
whoop_status | none | Per-collection sync health: last sync, watermark, row count, last error. |
whoop_overview | days=7 | Latest recovery and vitals vs. 30-day baseline, last night's sleep, recent workouts and strain. |
whoop_recovery | days=7, limit=50 | Recent recovery scores, resting HR, HRV, SpO2, skin temperature. |
whoop_sleep | days=7, limit=50 | Recent sleeps and naps with stage breakdown, need, performance, efficiency. |
whoop_workouts | days=14, limit=50 | Recent workouts with strain, HR, energy, distance, and zone minutes. |
whoop_cycles | days=7, limit=50 | Recent physiological cycles (WHOOP days) with day strain and HR. |
whoop_baseline | none | 30-day mean and standard deviation per vital. |
days is capped at 365 and limit at 200. All tools return JSON text.
uv tool install whoop-postgres-mcp # or: pipx install whoop-postgres-mcp
Or run it without installing:
uvx whoop-postgres-mcp --help
You also need a Postgres database (any recent version; 14+ is fine) and a WHOOP developer app. docs/SETUP.md walks through both.
export WHOOP_CLIENT_ID=...
export WHOOP_CLIENT_SECRET=... export WHOOP_REDIRECT_URI=http://localhost:8765/callback export WHOOP_DB_URL=postgresql://whoop:whoop@localhost:5432/whoop
whoop-mcp init-db # create the whoop schema (idempotent) whoop-mcp auth-url # print the URL to visit; approve access in a browser whoop-mcp connect # paste the code from the redirect URL whoop-mcp sync --all # first backfill; later runs: whoop-mcp sync --days 7 whoop-mcp # serve MCP over stdio
The same flow is available as MCP tools (whoop_auth_url, whoop_connect, whoop_sync) so an agent can drive the whole setup.
All configuration is by environment variable. The server validates every variable at startup and exits with a message naming each missing one.
| Variable | Required | Meaning |
|---|---|---|
WHOOP_CLIENT_ID | yes | Client ID of your WHOOP developer app. |
WHOOP_CLIENT_SECRET | yes | Client secret of your WHOOP developer app. |
WHOOP_REDIRECT_URI | yes | Redirect URI, exactly as registered on the app. Any URL works; the server does not listen on it. You copy the code from the address bar. |
WHOOP_DB_URL | yes | Postgres DSN, e.g. postgresql://user:pass@host:5432/db. Tokens and data live here. |
Claude Code:
claude mcp add whoop -e WHOOP_CLIENT_ID=... -e WHOOP_CLIENT_SECRET=... \
-e WHOOP_REDIRECT_URI=http://localhost:8765/callback \ -e WHOOP_DB_URL=postgresql://whoop:whoop@localhost:5432/whoop \ -- uvx whoop-postgres-mcp
Claude Desktop (claude_desktop_config.json) or any client that takes a stdio command:
{
"mcpServers": { "whoop": { "command": "uvx", "args": ["whoop-postgres-mcp"], "env": { "WHOOP_CLIENT_ID": "...", "WHOOP_CLIENT_SECRET": "...", "WHOOP_REDIRECT_URI": "http://localhost:8765/callback", "WHOOP_DB_URL": "postgresql://whoop:whoop@localhost:5432/whoop" } } } }
WHOOP's collection endpoints filter on when a record *occurred*, not when it was last modified, and records change after creation (a sleep is created as PENDING_SCORE and scored later). The sync therefore:
days days, which catches late re-scores;newest_updated_at in whoop_sync_state). If the last sync is older than days, the window is stretched back to the watermark minus a two-day lookback so a gap never leaves a hole;id, or cycle_id for recovery), so overlapping windows are harmless and re-running is safe;whoop_sync_state and carries on with the other collections rather than aborting the run.full=true (or whoop-mcp sync --all) drops the lower bound and walks the account's entire history. Body measurements are a single current record and are refreshed on every sync.
Token refresh is proactive (five minutes before expiry) and serialized through a Postgres advisory lock, so the MCP server and a cron-driven whoop-mcp sync can share one token row without racing.
The full data model is documented in docs/SCHEMA.md.
whoop.whoop_tokens. Anyone who can read that table can call the WHOOP API as you until the refresh token is revoked. Restrict database grants accordingly and treat WHOOP_DB_URL as a secret.whoop_connect and whoop_sync talk to WHOOP. Everything else is a SQL query against your database.read:* scopes plus offline for refresh tokens. It cannot modify anything in your WHOOP account.whoop_tokens and remove the app from your WHOOP account settings.git clone https://github.com/cunicopia-dev/whoop-mcp
cd whoop-mcp uv venv && source .venv/bin/activate uv pip install -e ".[dev]"
ruff check . mypy src pytest # pure-logic tests WHOOP_TEST_DB_URL=postgresql://whoop:whoop@localhost:5432/whoop pytest # + live DB tests
The live tests apply the schema and truncate every table in the target database before each test. Point them at a scratch database.
A throwaway Postgres for local testing:
docker run -d --rm --name whoop-pg -e POSTGRES_USER=whoop -e POSTGRES_PASSWORD=whoop \
-e POSTGRES_DB=whoop -p 5432:5432 postgres:16-alpine
src/whoop_mcp/
config.py environment variables, validated at startup auth.py OAuth2 flow, token persistence, locked refresh client.py httpx client: pagination, backoff, Retry-After schema.sql the Postgres DDL (applied by whoop-mcp init-db) db.py connection + schema helpers sync.py incremental sync with per-collection watermarks queries.py read-side SQL behind the MCP tools server.py MCP server over stdio + CLI entry point docs/ SETUP.md WHOOP app registration, OAuth walkthrough, DB init, first sync SCHEMA.md column-by-column data model tests/ config, schema, client, auth, sync, and stdio protocol tests
MIT. See LICENSE.