MCP server for Oura Ring API v2 (sleep, activity, readiness, heart rate, workouts).
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
A Model Context Protocol server for the Oura Ring API v2. Exposes sleep, activity, readiness, heart rate, and workout data to MCP-compatible clients (Claude Desktop, Claude Code, Cursor, ...) via OAuth.
The wizard collects your Oura Client ID/Secret, walks through browser OAuth, saves tokens to ~/.config/oura-mcp/, and adds an mcpServers.oura entry to any detected MCP client config. Restart the client and the tools below are available.
Re-running configure pre-fills the saved Client ID / port so you only need to press Enter to keep them. Type --force to wipe saved state and start from scratch:
http://localhost:54321/callback
(or http://localhost:<port>/callback if you customize OURA_CALLBACK_PORT)npx @yasuakiomokawa/oura-mcp configureThree paths depending on your client:
1. MCP Registry (auto-discovery clients)
Once published to the official MCP Registry, supported clients can install io.github.YasuakiOmokawa/oura-mcp from their UI. The wizard step still has to run once to obtain OAuth tokens.
2. Manual config (Claude Desktop / Claude Code / Cursor)
Run npx @yasuakiomokawa/oura-mcp configure β Step 4 of the wizard auto-detects:
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)~/.claude.json./.mcp.json~/.cursor/mcp.json./.cursor/mcp.jsonEach detected file is backed up to <file>.bak.<ISO-timestamp> before an atomic write.
To configure manually, add to your client config:
3. Skill (optional)
The companion oura-api-skill ships per-endpoint reference and three workflow recipes (weekly review / sleep trend / recovery check). Bundle it as a Claude Code plugin or import into your skills directory.
| Tool | Purpose |
|---|---|
oura_authenticate | Start OAuth flow in browser; returns the URL. Used after refresh_token expires. |
oura_auth_status | Check current token validity and expiry. |
oura_clear_auth | Wipe stored tokens. |
oura_api_list_paths | List every supported GET endpoint with summaries. |
oura_api_get | Generic GET to /v2/.... Auto-paginates via max_pages (1-20) or accepts next_token in params. |
oura_api_get returns structuredContent with { status, data, next_token, pages_fetched, has_more }.
Two ways. The config file (Option A) is the recommended path β it stores secrets at-rest with 0600 and is self-healing. Environment variables (Option B) are kept for CI / Docker / ephemeral environments where writing a file is impractical, but they leak more easily and are not recommended for daily use.
Run the wizard once and forget about it:
This writes:
Permissions are re-checked on every load and chmod'd back to 0600 if anything else touched them.
config.json schema:
When the server boots and both OURA_CLIENT_ID and OURA_CLIENT_SECRET are set, it uses them and emits a config.env_credentials warning to stderr.
Why not recommended:
process.env is readable from /proc/<pid>/environ by any process running as the same user.process.env will leak the secret.OURA_CLIENT_SECRET=... npx ... typed at the shell ends up in shell history.OURA_CALLBACK_PORT is not a secret and is fine to pass via env in either mode.
args for secretsProcess arguments are visible to other users via ps / /proc/<pid>/cmdline. Use the env block of your MCP client config:
oura_authenticate (in chat) or npx @yasuakiomokawa/oura-mcp configure (in terminal).OURA_CALLBACK_PORT=<other port> and update the redirect URI in your Oura developer app to match.oura_api_list_paths. Common slips: missing /v2/ prefix, typo in daily_sleep.OURA_LOG_LEVEL=debug for verbose stderr logging.Useful scripts:
npm run lint / npm run typecheck β Biome + TypeScript checksnpm run test:coverage β Vitest with V8 coveragenpm run update:docs β re-fetch the Oura OpenAPI schema and regenerate skills/oura-api-skill/references/Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/oura-ring-2)<a href="https://allmcps.com/mcp/oura-ring-2"><img src="https://allmcps.com/api/badge/oura-ring-2?style=directory" alt="Oura Ring on AllMCPs" /></a>