Oura MCP server
Oura MCP server
Получайте данные кольца Oura из Claude.ai и Claude Code: сон — с полными периодами, из которых складывается оценка, готовность, активность, тренировки, пульс, стресс, SpO2, устойчивость, сердечно-сосудистый возраст, VO2 max, рекомендации по времени сна, теги и режим отдыха. Сервер работает с документированным Oura API v2, а перед ним находится вход через OAuth 2.1, так что вы можете добавить его в Claude.ai как кастомный коннектор. Claude Code может использовать обычный токен.
Почему не npm-пакет
Сначала это было обёрткой над @daveremy/oura-mcp, а затем она заменила исходный пакет, потому что тот не возвращает ничего на большую часть запросов. Такие пакеты запрашивают диапазон из одного дня как start_date == end_date, а Oura API отвечает на такие запросы не так, как можно было бы ожидать по названию:
sleepфильтрует поbedtime_startв UTC, поэтому ночь, начавшаяся в 00:31 по местному времени (UTC+3), попадает на предыдущий UTC-день и выпадает из окна собственного дня;daily_activityиworkoutсчитаютend_dateисключительным, поэтому диапазон одного дня становится нулевой ширины.
Результат оказывается молчаливым: oura_sleep возвращает оценку с пустым массивом periods, oura_activity возвращает null, а oura_workouts возвращает [] при каждом запросе за один день. Ошибок не возникает, поэтому это выглядит как «данные не записаны», а не как «неверный запрос». Этот сервер расширяет диапазон на один день в обе стороны и затем фильтрует лишние записи по полю day каждой записи — такой подход корректен с учётом часовых поясов, — а также перебирает next_token до исчерпания, а не молча отдаёт одну страницу.
Инструменты
Tool | What you get |
| Оценка сна, оценка готовности, периоды сна и активность за день — одним вызовом |
| Оценка с её составляющими и исходные периоды: длительность, стадии сна, пульс, HRV |
| Рекомендованное Oura окно для отхода ко сну и то, как фактическое время отбоя в него ложилось |
| Оценка готовности и её составляющие |
| Долгосрочная устойчивость и факторы восстановления во сне и в течение дня |
| Оценочный сосудистый возраст и скорость пульсовой волны |
| Оценочный VO2 max |
| Оценка, шаги, калории, дистанция и разбивка по времени активности |
| Тренировки с пульсом, калориями, длительностью и интенсивностью |
| Непрерывные замеры пульса за временное окно |
| Дневной стресс и время восстановления |
| Средний ночной уровень кислорода в крови |
| Сеансы медитации, дыхательных упражнений и расслабления |
| Теги, внесённые за день, — как старые, так и улучшенные |
| Периоды режима отдыха, покрывающие день |
| Каждое кольцевое устройство, когда-либо связанное с аккаунтом, и показания заряда батареи |
| Возраст, вес, рост, биологический пол, email |
| Оценки сна, готовности, активности и стресса за период дней |
Каждый инструмент с датой принимает необязательный аргумент date в формате YYYY-MM-DD; по умолчанию это сегодня. Oura относит ночь к тому дню, когда вы проснулись.
oura_vo2_max, oura_sleep_time и oura_cardiovascular_age по замыслу редкие данные: Oura вычисляет их периодически, а не ежедневно, поэтому пустой результат — это нормально, а не сбой синхронизации.
Как это устроено
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.comПорты — 8440-8442, чтобы не пересекаться с другими MCP-серверами на этом хосте. Сервер на :8440 не имеет собственного входа и не привязывается никуда, кроме loopback, поэтому до него доступ только через слой входа.
Установка
Нужны Python 3.12 или новее и Node для слоя входа.
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/tokenПолучите токен Oura на странице cloud.ouraring.com.
Затем подставьте YOUR_USER и имя хоста в systemd/*.service и
nginx/oura-mcp.conf, и:
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 nginxНаправьте туннель или HTTPS-прокси на 127.0.0.1:8441. OAuth требует HTTPS.
Проверьте снаружи: discovery должен возвращать метаданные, а /mcp без токена — 401.
curl https://your-host/.well-known/oauth-authorization-server
curl -o /dev/null -w '%{http_code}\n' -X POST https://your-host/mcpПодключение
Claude.ai: Настройки, Коннекторы, Добавить кастомный коннектор, https://your-host/mcp, client ID и secret оставьте пустыми.
Claude Code:
claude mcp add --transport http oura https://your-host/mcp \
--header "Authorization: Bearer $(cat ~/.config/oura-mcp/token)" --scope userЗапуск через stdio вместо этого — безо всякого слоя входа:
OURA_TOKEN=your-token .venv/bin/oura-mcpБлагодарности
Слой входа взят из 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