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.


mcp-name: io.github.proscar87/oura-mcp

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.1.tar.gz (14.9 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.1-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcp_oura-0.1.1.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mcp_oura-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8d6338d7903a17513dcca955e9ac098f100c7852c987428f3a39112e2bfcf901
MD5 2d88420057b0f9aabbca4433fb7ec1bc
BLAKE2b-256 30bf2ca66286dd289e4d2dc0c468d1a76ac6d275e9a6c9134156992e6099f089

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_oura-0.1.1.tar.gz:

Publisher: publicar.yml on proscar87/oura-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: mcp_oura-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mcp_oura-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0781c6cc6cf0e93f60495fca99e81f03419226cb97b7e801cf54397cb2284489
MD5 a5a33e367470ccdcab64b4f5f3867fdb
BLAKE2b-256 f14014291ace573b15136a738a296ed623e871fbc526b4322d812f5b482468f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_oura-0.1.1-py3-none-any.whl:

Publisher: publicar.yml on proscar87/oura-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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