oura
Oura MCP server for poke.com and other agents.
claude mcp add --transport stdio meimakes-oura-mcp-server node dist/index.js \ --env PORT="3001" \ --env NODE_ENV="production" \ --env AUTH_TOKEN="your-generated-auth-token" \ --env CORS_ORIGIN="*" \ --env OURA_CLIENT_ID="your-oura-client-id" \ --env OURA_REDIRECT_URI="https://your-app.up.railway.app/oauth/callback" \ --env OURA_CLIENT_SECRET="your-oura-client-secret" \ --env TOKEN_ENCRYPTION_KEY="your-generated-token-encryption-key"
How to use
This MCP server provides OAuth2-authenticated access to your Oura Ring data and exposes a set of MCP tools that let AI assistants query sleep, readiness, activity, heart rate, workouts, and more. It supports both Streamable HTTP and classic SSE transports for compatibility with different MCP clients. After startup, you can connect MCP clients (such as Poke) using the server URL and your API key (AUTH_TOKEN). The server handles token encryption at rest, automatic OAuth token refresh, and smart caching to minimize redundant API calls. Use the provided endpoints to authorize your Oura account and then browse or query data via the 9 available MCP tools like get_sleep_summary, get_activity_summary, get_heart_rate, and get_health_insights. Mobile and cloud integrations can use the same server URL via SSE transport or the Streamable HTTP endpoint for efficient, real-time interactions.
How to install
Prerequisites:\n- Node.js 18 or higher\n- npm (comes with Node.js)\n- An Oura Ring account with API access\n- Optional: Railway or ngrok for remote access\n\n1. Clone the repository:\nbash\ngit clone https://github.com/meimakes/oura-mcp-server.git\ncd oura-mcp-server\n\n2. Install dependencies:\nbash\nnpm install\n\n3. Copy example environment file and configure secrets:\nbash\ncp .env.example .env\n``\n4. Generate required secrets (example):\nbash\nopenssl rand -hex 32 # for AUTH_TOKEN\nopenssl rand -hex 32 # for TOKEN_ENCRYPTION_KEY\n\n5. Build the TypeScript sources (if applicable):\nbash\nnpm run build\n\n6. Start the server locally (development):\nbash\nnpm start\n```\n7. For production, deploy to your preferred environment (Railway,/Vercel, etc.) and configure environment variables accordingly.\n
Additional notes
Tips and common issues:\n- Ensure AUTH_TOKEN is kept secret; it is the key for MCP client authentication.\n- If running behind a reverse proxy, set CORS_ORIGIN to the exact domain instead of *. to improve security.\n- If your tokens are not decrypting, verify TOKEN_ENCRYPTION_KEY is correctly set and matches the key used to encrypt tokens.\n- When using ngrok for local development, update OURA_REDIRECT_URI and environment variables to reflect the ngrok URL.\n- The server supports both SSE and Streamable HTTP transports; use the Streamable endpoint for Poke or other MCP clients that prefer one-shot JSON-RPC requests.\n- Regularly rotate AUTH_TOKEN and TOKEN_ENCRYPTION_KEY and redeploy; update Railway or your hosting environment accordingly.\n- Monitor rate limits: MCP endpoints allow roughly 100 requests per 15 minutes per IP; Oura API has its own rate limits. Consider caching strategies to minimize calls.\n
Related MCP Servers
obsidian -tools
Add Obsidian integrations like semantic search and custom Templater prompts to Claude or any MCP client.
mcp
Octopus Deploy Official MCP Server
furi
CLI & API for MCP management
mcp -arangodb
This is a TypeScript-based MCP server that provides database interaction capabilities through ArangoDB. It implements core database operations and allows seamless integration with ArangoDB through MCP tools. You can use it wih Claude app and also extension for VSCode that works with mcp like Cline!
amazon
MCP server for your Amazon cart. Made for Poke.com but works for everyone.
CodeRAG
Advanced graph-based code analysis for AI-assisted software development