用于访问Eight Sleep Pod数据的模型上下文协议(MCP)服务器。
npm install
npm run build
您需要获取一次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
node build/index.js getUsers
响应将包括您的用户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的配置(设置 → 开发者 → 编辑配置):
{
"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] // 每天
})