Oura MCP server
Oura MCP server
Lee tu anillo Oura desde Claude.ai y Claude Code: el sueño con los períodos completos que sustentan la puntuación, la preparación, la actividad, los entrenamientos, la frecuencia cardíaca, el estrés, la SpO2, la resiliencia, la edad cardiovascular, el VO2 max, las recomendaciones de hora de acostarse, las etiquetas y el modo de reposo. Habla con la API v2 documada de Oura y una pone un sistema de acceso OAuth 2.1 al frente para que puedas añadirlo a Claude.ai como conector personalizado. Claude Code puede usar un token simple en su lugar.
Por qué no el paquete
Esto empezo como un envoltorio de un @daveremy/oura-mcp y lo ha reemplazó, porque ese paMe devuelven nothing for la mayoría de lo que desearias. Consulta rangos de un solo día con start_date == end_date y la API de Oura no responde esos como sugiere la nomenclatura:
sleepfiltrabedtime_starten UTC, así que una noche que empieza a las 00:31 local (UTC+3) cae en el día anterior de UTC y queda fuera of the day's own windowdaily_activityyworkouttratanend_dateas exclusive, lo cuan convierte un rango del mismo día en width cero
El resultado es silencio: oura_sleep devuelve una punt uación con un array periodos vacío, oura_acity devuelve null, y oura_workuts devuelve [], en cada llamada de un solo día. Nada fall, así que se lee como "no hay datos regirtados" en lugar de "la consult era incorrect". Este servidor amplía el rango por ambos lados y refil tra por el campo day de dada registro, que respueca la hora timezone, and siguo next_token` hasta agotarlo en lugar de devolver silenciosamente una pá.
Herramientas
Tool | Qué obtienes |
| Puntuación de sueño, puntuación de prepación, perriodos de sueño y actividad para un día, en una única llamada |
| La puntuación diaria con los factores que la contribuyen, más los periodos en brír: duración, lenses, frecuencia cardíaca, HRR |
| The window de hora de acostarse recomendada por Ouro y cómo asignar con el real |
| Puntuación de prepación y sus contribuyentes |
| Nivel de resilencia a largo plazo, con los factores de recuperación del sueño y día |
| Edad vascula estimada y velocidad de la onda de pulso |
| VO2 max estimado |
| Puntuación, pasos, camorías, distancia y desglose del tiempo de activdad |
| Entrenamientos con frecuencia cardíaca, calorías, duración e intensidad |
| Muestras continuas de frecbuencia cardíaca para una ventana de tiempo |
| Estrés diario y tiempo de recuperación |
| Oxígeno en sangre medio nocturno |
| Sesiones de meditación, respiración y relaación |
| Etiquetas reg lazadas durante un día, tando las heredadas como las mejoradas |
| Períodos de modo de reposo que cubren un día |
| Todos los anillo empareados jamás, más las lecturas de batería |
| Edad, peso, altura, sexo bioló andisco, correo electrónico |
| Puntuación de sueño, prepación, actividad y |
Every date-scoped tool acepta un date opcional como YYYY-MM-DD (and por indeed in Spanish "and" is "y", so "todos los herramientars con scoped de fech da toman"). La API returns default al día actual. Oura registra una noche under the day woken up. So "cada herramienta con alcance en fecha puede accept un date opcional como YYYY-MM-DD y en dedefecto usa hoy. Oura archiva una noche en el día en que te despiates."
"oura_vo2_max, oura_sleep_time y oura_cardiovascular_age son escasos por disieñ: Oura los no comput iba peri`dicamente rather than daily, so un result vacío es normal y no una falla de sincronizacición."
Cómo se integra
Claude.ai / Claude Code
| HTTPS
Cloudflare Tunnel, or any proxy that gives you HTTPS
|
nginx 127.0.0.1:8441
|
auth-server.js :8442 handles the login and the tokens
|
oura-mcp :8440 streamable HTTP, local only
|
api.ouraring.comLos puertored 8440-8442 so npara quedar remote de los otros MCP in this host. El servidor on :8440 no tiene inicio de sesión propio y se niega a escuchar en cualquier interfaz que no sea loopback, por lo that can only ser alcanzado a través del layer de inicio de sesión.
Configuración
Requiere Python 3.12 or newer y Node para la capá de inicio de sesión.
python3 -m venv .venv
.venv/bin/pip install -e .
npm install --omit=dev
mkdir -p ~/.config/oura-mcp && chmod 700 ~/.config/oura-mcp
echo "OURA_TOKEN=your-personal-access-token" > ~/.config/oura-mcp/env
chmod 600 ~/.config/oura-mcp/env
CONFIG_DIR=~/.config/oura-mcp node set-password.js 'your-password-here'
openssl rand -hex 32 > ~/.config/oura-mcp/token
chmod 600 ~/.config/oura-mcp/tokenObtén el token de Oura de cloud.ouraring.com. "Obtén el token de Oura en [cloud.ouraring.com](https://cloud.ouraring.com/peri..."
Luego rlena YOUR_USER y el nombre de host en systemd/*.service y en nginx/oura-mcp.conf, y stop:
sudo cp systemd/*.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now oura-mcp oura-mcp-auth
sudo cp nginx/oura-mcp.conf /etc/nginx/sites-enabled/oura-mcp
sudo nginx -t && sudo systemctl reload nginxApunta un letneles o un proxy HTTPS hacia 127.0.0.1:8441. OAuth requires HTTPS.
The "deja un túnel o un" ... but we need "configura un túnel" — use exactly "Apunta un túnel o un proxy HTTPS a 127.0.0.1:8441. OAuth needs HTTPS." Wait "Apunta" translates.
curl https://your-host/.well-known/oauth-authorization-server
curl -o /dev/null -w '%{http_code}\n' -X POST https://your-host/mcpConnecting:
Conección
Claude.ai: Ajustes, Connectors, Add conexión personalizada, ...
"Claude.ai: Configuración, Conectores, Añadir conector personalizado, https://your-host/mcp, ID de cliente y secreto en blanco."
Conección: Claude Code:
claude mcp add --transport http oura https://your-host/mcp \
--header "Authorization: Bearer $(cat ~/.config/oura-mcp/token)" --scope userPara ejutarlo por stdio en su lugar, sin ning la capa de inicio de sesión:
OURA_TOKEN=your-token .venv/bin/oura-mcpCréditos
La capa de inicio de sesión viene de rollecode/obsidian-remote-mcp.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect your Oura Ring account securely in minutes. Enable authorized access to your sleep, activi…
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rollecode/oura-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server