oura-mcpSAFE
Standalone Oura Ring CLI, MCP server, and Claude Code skill
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):
- Go to the Oura Developer Portal
- Create a new personal access token
- 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):
- Create an app at [Oura OAuth Applications](https://clou
ee7a17c419e9OBSERVED · 2026-10-12Connect
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 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]{
"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}"
}
}
}
}Exposed tools (10)
10 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
oura_activity | read | |
oura_daily_summary | read | |
oura_heart_rate | read | |
oura_readiness | read | |
oura_sessions | read | |
oura_sleep | read | |
oura_spo2 | read | |
oura_stress | read | |
oura_trends | read | |
oura_workouts | read |
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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (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)
console.log(`Token saved to ${getConfigPath()}`);@modelcontextprotocol/sdk, commander, zod, @types/node, tsx, typescript
Gates applied: no_behavioural_pass.
ee7a17c419e9full audit observations/trust-audit/mcp-server/daveremy__oura-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | ee7a17c419e9 | SAFE | B | 89 | first audit |
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.