返回市场
八睡-mcp

八睡-mcp

作者:elizabethtrykin3 星标更新:2025-03-17

项目介绍

Eight Sleep MCP

用于访问Eight Sleep Pod数据的模型上下文协议(MCP)服务器。

设置

预备条件

  • Node.js (v16+)
  • Eight Sleep账户

安装

  1. 克隆仓库
  2. 运行:
npm install
npm run build

配置

获取您的用户ID

您需要获取一次Eight Sleep用户ID,并将其添加到您的配置中。这可以防止客户端在每次请求时都需要通过电子邮件/密码进行身份验证。您有两个选项:

选项1:直接API调用

curl -X POST https://client-api.8slp.net/v1/auth/login
-H "Content-Type: application/json"
-d '{"email":"your_email","password":"your_password"}'


2. 将用户ID添加到您的配置中,如下所示。

选项2:使用MCP客户端
1. 首先设置您的`.env`文件,不包括用户ID:
```env
EIGHT_SLEEP_EMAIL=your_email
EIGHT_SLEEP_PASSWORD=your_password
  1. 运行MCP客户端一次以获取您的用户ID:
node build/index.js getUsers

响应将包括您的用户ID。保存此值。

  1. 将用户ID添加到您的配置中,如下所示。

环境变量

创建一个.env文件:

# Eight Sleep身份验证
EIGHT_SLEEP_EMAIL=your_email
EIGHT_SLEEP_PASSWORD=your_password
EIGHT_SLEEP_USER_ID=your_user_id  # 必需:从上述方法之一添加userId
EIGHT_SLEEP_CLIENT_ID=your_client_id
EIGHT_SLEEP_CLIENT_SECRET=

Claude Desktop集成

添加到Claude Desktop的配置(设置 → 开发者 → 编辑配置):

{
    "mcpServers": {
        "eight_sleep": {
            "command": "node",
            "args": ["/绝对路径/to/eight-sleep-mcp/build/index.js"],
            "env": {
                "EIGHT_SLEEP_EMAIL": "your_email", // 一旦拥有userid,不需要email和password
                "EIGHT_SLEEP_PASSWORD": "your_password", // 一旦拥有userid,不需要email和password
                "EIGHT_SLEEP_USER_ID": "your_user_id",
                "EIGHT_SLEEP_CLIENT_ID": "your_client_id", // 可选
                "EIGHT_SLEEP_CLIENT_SECRET": "your_client_secret" // 可选
            }
        }
    }
}

重要:将用户ID添加到配置中是必需的,以避免每次请求时都必须通过电子邮件/密码进行身份验证。确保使用上述方法之一获取它。

保存后重启Claude Desktop。

可用函数

用户信息

  • getUsers - 获取用户资料信息
  • getUserPreferences - 获取用户偏好设置(单位、时区、床边)
  • updateUserPreferences - 更新用户偏好设置

设备控制

  • getDeviceStatus - 获取设备状态(在线、固件、水位)
  • setDevicePower - 打开/关闭设备
  • getPresence - 检查用户是否在床上

温度控制

  • getTemperature - 获取当前温度设置
  • setTemperature - 设置即时温度(-100至100)
  • getTemperatureSchedules - 获取温度计划
  • setTemperatureSchedule - 创建温度计划
  • updateTemperatureSchedule - 更新温度计划
  • deleteTemperatureSchedule - 删除温度计划

睡眠数据

  • getSleepData - 获取指定日期范围内的详细睡眠数据
  • getSleepScore - 获取某一天的睡眠评分
  • getSleepStages - 获取睡眠阶段(清醒、浅睡、深睡、REM)
  • getHrv - 获取心率变异性数据
  • getHeartRate - 获取心率数据
  • getRespiratoryRate - 获取呼吸频率数据
  • getSleepTiming - 获取就寝时间和起床时间
  • getSleepFitnessTrends - 获取睡眠健康趋势

报警管理

  • getAlarms - 获取所有报警
  • setAlarm - 创建新报警
  • updateAlarm - 更新现有报警
  • deleteAlarm - 删除报警

函数参数

对于基于日期的函数,请使用格式YYYY-MM-DD。例如:

getSleepData({
  startDate: "2024-03-15",
  endDate: "2024-03-16"  // 可选
})

对于温度设置:

setTemperature({
  level: 50,  // -100至100
  duration: 3600  // 秒,可选
})

对于报警:

setAlarm({
  time: "07:00",
  daysOfWeek: [1,2,3,4,5],  // 周一至周五
  vibration: true,
  sound: "chime"  // 可选
})

对于温度计划:

setTemperatureSchedule({
  startTime: "22:00",
  level: -20,
  daysOfWeek: [0,1,2,3,4,5,6]  // 每天
})