Atlas / MCP servers / daveremy / oura-mcp

oura-mcpSAFE

mcp/daveremy/oura-mcp

Standalone Oura Ring CLI, MCP server, and Claude Code skill

Verdict
SAFE
Grade
B
Trust score
89 /100
Exposed tools
10 10r · 0w · 0d
Transport
stdio
License
MIT
Stars
4
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

A CLI and MCP server for the Oura Ring API v2. Query sleep, readiness, activity, heart rate, stress, SpO2, workouts, and session data from the command line or through Claude Code / any MCP client.

Features

  • CLI: Query all Oura data for any date
  • MCP Server: 10 tools for integration with Claude Code and other MCP clients
  • Auth: Supports both personal access tokens and OAuth2 with automatic token refresh

MCP Tools

Install as Claude Code Plugin

claude plugin marketplace add daveremy/oura-mcp
claude plugin install oura-mcp@oura-mcp-plugins

Then set your Oura token in the plugin's env (see Auth below).

Setup

1. Get an Oura API Token

Personal Access Token (simplest):

  1. Go to the Oura Developer Portal
  2. Create a new personal access token
  3. Save it: npx @daveremy/oura-mcp config set-token YOUR_TOKEN

The token is stored at ~/.oura-mcp/config.json and works everywhere — CLI, MCP server, and Claude Code plugin. You can also set OURA_TOKEN as an environment variable (takes precedence over stored config).

OAuth2 (for automatic token refresh):

  1. Create an app at [Oura OAuth Applications](https://clou
Read from source at commit ee7a17c419e9OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add oura-mcp --env OURA_ACCESS_TOKEN=${OURA_ACCESS_TOKEN} --env OURA_CLIENT_SECRET=${OURA_CLIENT_SECRET} --env OURA_REFRESH_TOKEN=${OURA_REFRESH_TOKEN} --env OURA_TOKEN=${OURA_TOKEN} -- npx -y @daveremy/[email protected]
claude-desktop
{
  "mcpServers": {
    "oura-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@daveremy/[email protected]"
      ],
      "env": {
        "OURA_ACCESS_TOKEN": "${OURA_ACCESS_TOKEN}",
        "OURA_CLIENT_SECRET": "${OURA_CLIENT_SECRET}",
        "OURA_REFRESH_TOKEN": "${OURA_REFRESH_TOKEN}",
        "OURA_TOKEN": "${OURA_TOKEN}"
      }
    }
  }
}
03

Exposed tools (10)

10 read · 0 write · 0 destructive.

ToolRiskDescription
oura_activityread
oura_daily_summaryread
oura_heart_rateread
oura_readinessread
oura_sessionsread
oura_sleepread
oura_spo2read
oura_stressread
oura_trendsread
oura_workoutsread
04

Trust audit

SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (4 observation(s))
Shell
declared (1 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (2)

MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/cli.ts:34
console.log(`Token saved to ${getConfigPath()}`);
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, commander, zod, @types/node, tsx, typescript
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha ee7a17c419e9full audit observations/trust-audit/mcp-server/daveremy__oura-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12ee7a17c419e9SAFEB89first audit
06

Questions

What is the @daveremy/oura-mcp MCP server?

Standalone Oura Ring CLI, MCP server, and Claude Code skill

What tools does @daveremy/oura-mcp expose?

10 in total: 10 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @daveremy/oura-mcp safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.

What credentials does @daveremy/oura-mcp need?

It reads OURA_ACCESS_TOKEN, OURA_CLIENT_SECRET, OURA_REFRESH_TOKEN and OURA_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @daveremy/oura-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @daveremy/oura-mcp at 0.1.6.

How current is this page?

The grade is for one exact copy of the source (ee7a17c419e9), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement