WHOOP MCP Server for Poke

WHOOP MCP Server for Poke

Connects WHOOP fitness data to Poke AI assistant, enabling natural language queries for recovery scores, sleep analysis, strain tracking, and healthspan metrics.

Category
访问服务器

README

WHOOP MCP Server for Poke

Connect your WHOOP fitness data to Poke AI assistant using the Model Context Protocol (MCP).

Deploy to Render


🎯 What This Does

This MCP server lets you query your WHOOP fitness data through Poke AI assistant using natural language:

  • "What's my recovery score today?" - Get your daily recovery metrics
  • "How did I sleep last night?" - Analyze your sleep performance
  • "Show me my strain data" - View workout strain and heart rate zones
  • "What's my biological age?" - Check your WHOOP Age and healthspan metrics

✨ Features

  • 🏃 5 WHOOP Data Tools: Overview, Sleep, Recovery, Strain, Healthspan
  • 🔄 Automatic Token Refresh: Handles authentication seamlessly
  • 🌐 Cloud Ready: Deploy to Render with one click
  • 🤖 Poke Compatible: Works out of the box with Poke AI

🔑 What Makes This Different

This is a reverse-engineered implementation that directly interfaces with WHOOP's private API. No official SDK, no OAuth flows, no waiting for API approval. Perfect for developers who don't want to go through the hassle of WHOOP's official development program but still want programmatic access to their comprehensive fitness data.


🚀 Quick Start

Prerequisites

Option 1: Deploy to Render (Recommended)

  1. Click the "Deploy to Render" button above

  2. Configure your deployment:

    • Name: whoop-mcp-server (or your choice)
    • Branch: main
  3. Set environment variables:

    • WHOOP_EMAIL: Your WHOOP account email
    • WHOOP_PASSWORD: Your WHOOP account password
  4. Wait for deployment (~5-10 minutes)

  5. Get your MCP URL:

    https://your-service-name.onrender.com/mcp
    
  6. Connect to Poke:

    • Go to https://poke.com/settings/connections/integrations/new
    • Add your MCP URL
    • Start asking questions!

Option 2: Run Locally

  1. Clone the repository:

    git clone https://github.com/kabirrgrover/whoop-mcp-poke.git
    cd whoop-mcp-poke
    
  2. Create virtual environment:

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. Install dependencies:

    pip install -r requirements.txt
    
  4. Configure environment:

    cp .env.example .env
    # Edit .env with your WHOOP credentials
    
  5. Run the server:

    python src/server.py
    
  6. Server runs at: http://localhost:8000/mcp


🔧 Configuration

Environment Variables

Variable Required Description
WHOOP_EMAIL ✅ Yes Your WHOOP account email
WHOOP_PASSWORD ✅ Yes Your WHOOP account password
PORT ❌ No Server port (default: 8000, auto-set by Render)

WHOOP Credentials

Get your WHOOP credentials:

  1. Sign up at https://www.whoop.com
  2. Ensure you have an active WHOOP subscription
  3. Use your login email and password

Security Note: Your credentials are stored securely in environment variables and never logged or exposed.


📱 Using with Poke

Connect to Poke

  1. Deploy your server to Render (or run locally with ngrok)
  2. Go to https://poke.com/settings/connections/integrations/new
  3. Add your MCP server URL
  4. Test the connection

Testing the Connection

After connecting to Poke, test with:

"Use the test_connection tool"

You should see: ✅ MCP Server is working! Connection successful.

Available Tools

1. Overview Data

Ask Poke: "What's my WHOOP data for today?"

Returns:

  • Recovery score
  • Day strain
  • Sleep hours
  • Calories burned
  • HRV, RHR trends
  • Today's activities

2. Sleep Analysis

Ask Poke: "How did I sleep last night?"

Returns:

  • Sleep performance score
  • Hours slept vs needed
  • Sleep consistency
  • Sleep efficiency
  • Insights and recommendations

3. Recovery Metrics

Ask Poke: "What's my recovery score?"

Returns:

  • Recovery score (0-100%)
  • HRV with trends
  • RHR with trends
  • Respiratory rate
  • Coach insights

4. Strain Tracking

Ask Poke: "Show me my strain data"

Returns:

  • Strain score
  • Heart rate zone distribution
  • Strength activity time
  • Steps
  • Individual workouts

5. Healthspan

Ask Poke: "What's my biological age?"

Returns:

  • WHOOP Age (biological age)
  • Age comparison vs chronological
  • Pace of aging
  • Weekly trends

Example Conversation

User: What's my recovery score today?

Poke: [Calls whoop_get_recovery tool]

Response: Your recovery is 72% (Green - Ready to perform)

📊 Key Metrics:
  • HRV: 65ms (↑ 8% vs baseline)
  • RHR: 52bpm (↓ 3% vs baseline)
  • Sleep Performance: 85%

💡 Coach Insight: "Your recovery is in the green. Your body 
is ready for a high-intensity workout today."

User: Should I do a hard workout?

Poke: Based on your 72% recovery (green zone), yes! Your HRV 
is trending up 8% and your RHR is down 3%, indicating your 
body has recovered well. Your sleep was also strong at 85%. 
This is a great day for high-intensity training.

🏗️ Architecture

Poke AI ←→ MCP Server (Render) ←→ WHOOP API
         HTTPS/MCP              HTTPS/AWS Cognito

Technology Stack

  • FastMCP 2.0 - MCP server framework
  • Python 3.10+ - Runtime
  • httpx - Async HTTP client
  • Render - Cloud hosting
  • AWS Cognito - WHOOP authentication

🛠️ Development

Project Structure

whoop-mcp-poke/
├── src/
│   ├── server.py           # FastMCP server
│   ├── whoop_client.py     # WHOOP API client
│   ├── config.py           # Configuration
│   └── tools/
│       └── whoop.py        # Tool handlers
├── requirements.txt        # Python dependencies
├── render.yaml            # Render configuration
└── README.md              # This file

Running Tests

Test your MCP server with the MCP Inspector:

# Start your server
python src/server.py

# In another terminal
npx @modelcontextprotocol/inspector

Open http://localhost:3000 and connect to http://localhost:8000/mcp using "HTTP" transport.


🔒 Security

  • ✅ Credentials stored in environment variables only
  • ✅ WHOOP tokens auto-refresh (24-hour lifetime)
  • ✅ No credentials in code or logs
  • ✅ HTTPS for all API calls
  • ✅ AWS Cognito authentication

Best Practices:

  • Never commit .env file
  • Use strong WHOOP password
  • Rotate credentials if exposed
  • Use Render's environment variable encryption

🐛 Troubleshooting

"Authentication failed" Error

Solution:

  1. Verify your WHOOP email and password in Render environment variables
  2. Try logging into https://app.whoop.com with the same credentials
  3. Ensure your WHOOP subscription is active

"Invalid MCP server URL" in Poke

Solution:

  1. Verify your URL is exactly: https://your-service-name.onrender.com/mcp
  2. Check that your Render service is running (green status)
  3. Test the endpoint in a browser - you should see JSON response

Deployment Timeout on Render

Solution:

  1. Check Render logs for specific errors
  2. Verify all environment variables are set
  3. Ensure requirements.txt has all dependencies

Server responds but no data returned

Solution:

  1. Verify your WHOOP subscription is active
  2. Check you have recent WHOOP data (wear your strap!)
  3. Try querying data from a specific date: "What was my recovery on 2025-11-01?"

"No module named 'fastmcp'" Error

Solution:

  1. Verify requirements.txt has fastmcp>=2.0.0
  2. On Render, trigger a manual deploy to reinstall dependencies
  3. Check Render logs for failed dependency installation

📚 Resources

Documentation

Related Projects


🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


📄 License

MIT License - feel free to use this for your own projects!


⭐ Acknowledgments


💬 Support

If you have questions or issues:

  1. Check the Troubleshooting section above
  2. Open an issue on GitHub
  3. Review FastMCP documentation
  4. Check Poke's integration guide

🚀 Quick Links

  • Use This Template: Click "Use this template" button above
  • Report Issues: GitHub Issues
  • Star on GitHub: Show your support! ⭐

Made with ❤️ for the WHOOP and Poke communities

This is an open-source project. Contributions, issues, and feature requests are welcome!

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选