Skip to main content

oura-mcp

La API v2 de Oura como servidor MCP. Las 19 colecciones, cuatro herramientas, cero dependencias fuera del SDK de MCP.

Lo que lo distingue: pagina. Suena a poco y es todo el punto — ver abajo.


El problema

Oura entrega sus respuestas así:

{ "data": [ ... ], "next_token": "eyJ0eXAiOi..." }

Si next_token viene y no lo sigues, recibes la primera página y nada te avisa. La respuesta es un JSON válido, con datos reales, que se ve completo.

En un día cualquiera, heartrate —que muestrea cada cinco minutos— devuelve 1,246 muestras repartidas en 2 páginas. Un cliente que no pagina te entrega la primera y tú te quedas creyendo que ésa es la frecuencia cardiaca de tu día. Un mes son ~37,000 muestras: ahí la fracción que ves es minúscula, y sigue sin avisar.

Revisamos los siete servidores MCP de Oura publicados en GitHub en agosto de 2026. El más completo de todos no pagina: en su cliente, next_token aparece una sola vez, en la definición del tipo. Los dos más estrellados están literalmente muertos — creados y abandonados el mismo día, con 28 y 31 minutos entre el primer commit y el último.

Por eso existe éste.

Instalación

pip install mcp-oura

(El nombre de instalación es mcp-oura: oura-mcp ya estaba tomado en PyPI por un paquete 0.1.0 sin autor ni repositorio. El módulo que se importa sigue siendo oura_mcp.)

Necesitas un Personal Access Token, que se saca en cloud.ouraring.com/personal-access-tokens. No hay OAuth, no hay callback, no hay aplicación que registrar: es un token y ya.

export OURA_PAT="tu-token"
oura-mcp --revisar

--revisar es el autodiagnóstico: dice si el token está puesto y si Oura responde, sin devolver el token ni un solo dato de salud. Reporta la longitud del token, nunca el token. Los mensajes de error se copian y se pegan en chats y en issues; no tienen por qué arrastrar nada más.

Conectarlo a Claude Code

claude mcp add -s user oura --env OURA_PAT=tu-token -- /ruta/a/oura-mcp

Mejor aún, con el token en un archivo aparte y no en la configuración:

printf '%s' "tu-token" > ~/.oura_pat && chmod 600 ~/.oura_pat
claude mcp add -s user oura --env OURA_PAT_FILE=$HOME/.oura_pat -- /ruta/a/oura-mcp

Un servidor MCP se registra en un JSON que se respalda, se sincroniza y se comparte al pedir ayuda. Un token ahí queda en claro; en un archivo con permisos 600 se rota sin tocar la configuración.

Conectarlo a Claude Desktop

En ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "oura": {
      "command": "/ruta/a/oura-mcp",
      "env": { "OURA_PAT_FILE": "/Users/tu-usuario/.oura_pat" }
    }
  }
}

Las herramientas

oura_colecciones Las 19 con qué trae cada una y qué parámetros pide
oura_consultar Trae una colección completa en un rango, paginando hasta el final
oura_revisar Autodiagnóstico sin exponer nada

Tres, no diecinueve. Un servidor con una herramienta por colección obliga al modelo a elegir entre 19 nombres parecidos antes de saber qué contienen. Aquí la colección es un parámetro y el catálogo se consulta cuando hace falta.

Si el rango pedido excede el tope de páginas, la respuesta trae una clave truncado que lo dice con todas sus letras. Un resultado incompleto que no se declara incompleto es peor que un error: se ve igual que uno completo.

Lo que este servidor NO hace

No analiza. Ni correlaciones, ni detección de anomalías, ni comparación de periodos — que es justo donde otros servidores ponen su valor.

La razón: un promedio calculado aquí adentro llega al modelo como un número sin su método. Sobre nueve años de datos reales, tres de cada cuatro cambios entre dos mediciones consecutivas caben dentro de la oscilación normal de la propia métrica. Un servidor que entrega «tu HRV subió 12%» sin decir cuánto oscila sola esa métrica no está informando: está fabricando una señal.

Aquí se entregan los datos. El análisis va donde se pueda citar el método — por ejemplo con cotejo, que hace exactamente esa distinción para biomarcadores de sangre.

Las 19 colecciones

Resúmenes diariosdaily_sleep, daily_readiness, daily_activity, daily_stress, daily_spo2, daily_resilience, daily_cardiovascular_age, vO2_max

El detalle que los puntajes escondensleep (etapas, HRV, temperatura, latencia), sleep_time, workout, session, rest_mode_period, tag, enhanced_tag

Alta resoluciónheartrate, ring_battery_level

Sin rangopersonal_info, ring_configuration

Las de rango de fecha usan AAAA-MM-DD. heartrate y ring_battery_level usan ISO 8601 con hora.

Licencia

MIT.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_oura-0.1.0.tar.gz (12.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_oura-0.1.0-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_oura-0.1.0.tar.gz.

File metadata

  • Download URL: mcp_oura-0.1.0.tar.gz
  • Upload date:
  • Size: 12.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for mcp_oura-0.1.0.tar.gz
Algorithm Hash digest
SHA256 256032ddec4cce22edfb29f76d1c8aad84172a24d8b925d9ca6c87167502f247
MD5 990231eaa2d1d4da72922b959bc712ed
BLAKE2b-256 4ef6959ebbe2939254ac64083dfb54913a70ef44bfe3c7769b50a21b4ab0d1b6

See more details on using hashes here.

File details

Details for the file mcp_oura-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcp_oura-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.13

File hashes

Hashes for mcp_oura-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4efc35404cb40e4d1631e2fca7d6eaee181810713e5d3bfba0b59d427ca21103
MD5 7653b6783679547cdca27acb51267082
BLAKE2b-256 64adfff8807f2a9203eb38533179180166b0b3dfc03774b686af84f7e7e10e74

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page