Oura MCP server
io.github.proscar87/oura-mcp·v0.4.0The Oura v2 API as an MCP server. Paginates, fixes the date range, warns when data is missing.
0 stars213 downloads/wk
Reviews
Write oneNobody has reviewed Oura yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Oura tools (6)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
oura_checkSelf-check: is there a credential, and does Oura respond? Exposing nothing.
oura_collectionsThe 19 Oura collections, what each one carries and which parameters it takes.
oura_compareIs the difference between two periods larger than this metric's own noise?
oura_queryFetches a COMPLETE Oura collection over the requested range.
oura_relateDo the day-to-day changes of two metrics move together, beyond chance?
oura_todayLast night's sleep and today's readiness, with the days before them.
Public scan report
scanner v0.1.10 · 2026-10-03 · same rubric, same numbers if you re-run it
- Code scan41 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 3 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Oura compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 65% of 48,243 servers
- Tools
- 6
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 213
- more than 76% of 12,306 servers with a package
What its tools let an agent do: 6 read
Release history: 3 versions in the registry since 2026-09-12, latest 2026-09-27, typically one every 11 days.
Install Oura in Claude Code, Cursor or VS Code
claude mcp add oura-mcp -- uvx mcp-oura
What the publisher says
From the Oura repository's README, as published. We do not edit it. Read it on GitHub
oura-mcp
English | 简体中文 | 한국어 | Español
<!-- The Glama badge is live, not a screenshot: it renders whatever that independent index scores this server at today. A badge that can only go up is decoration; one that can drop is evidence. -->
The Oura v2 API as an MCP server. All 19 collections, four tools, no dependencies beyond the MCP SDK.
One local day of heart rate is 1,231 samples across 2 pages
A client that doesn't follow Oura's nexttoken returns 1,000 of them — 81%, looking complete, with nothing saying otherwise.** Measured against the real API on 9 August 2026, one person, one ring, 24 hours.
The test to apply to any Oura MCP server, including this one: does it take next_token — or a cursor, or a limit — as a tool parameter? If it does, pagination is the model's job, and a model that forgets to ask again produces a confident answer off partial data. This server paginates to exhaustion before it returns, and tells you how many pages it took.
That's one of four ways Oura under-delivers without saying so. All four are measured below, and all four are corrected here.
Install
Download oura-mcp.mcpb from the latest release and double-click it. Claude Desktop does the rest — no terminal, no Python, no Node. It runs on Oura's official sample data out of the box, and every sample response says so, so nothing can pass for your own sleep.
Prefer the command line? uvx --from mcp-oura oura-mcp.
Prefer no Python on your machine at all?
docker run -i --rm -e OURA_SANDBOX=1 ghcr.io/proscar87/oura-mcp-i is not optional: an MCP server speaks over stdin and stdout, not over a port. Without it the container has no stdin, the handshake never arrives, and the client reports a server that doesn't show up.
The problem, measured
Oura does not return errors when it can't give you what you asked for. It returns something different, shaped like a correct response. These are the four we found by measuring against the real API on 9 August 2026:
1. Skip the pagination and you get a fraction
{ "data": [ ... ], "next_token": "eyJ0eXAiOi..." }If nexttoken comes back and you don't follow it, you receive the first page and nothing warns you. One local day of heartrate — one person, one ring, 24 hours — is 1,231 samples across 2 pages**. A client that doesn't paginate gets 1,000 of 1,231: 81%, looking complete. A month is ~37,000.
2. Asking for a single day returned zero records
enddate does not behave the same across collections**:
And on top of that, workout filters by UTC date while reporting day in local time: at -06:00, asking for July 16–18 returned records from the 15th and 16th — before the requested start.
Here the range is inclusive on both ends, always. Two extra days are requested on each side and then trimmed, which is correct whichever way a given collection behaves — and stays correct when Oura changes it.
3. latest=true is ignored where it doesn't apply
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Oura: common questions
- Is Oura MCP server safe?
- Mostly: it is graded B (83/100). Read the Oura safety report
- How do I install Oura?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Oura need an API key?
- Yes. The registry entry asks for
OURA_CLIENT_SECRET,OURA_PAT. - Is Oura maintained?
- The last commit was 36 days ago (2026-10-01). The latest release is v0.4.0.
- How does Oura compare with other MCP servers?
- safety score 83/100 (higher than 65% of 48,243 servers); tools 6 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.