- Home
- MCP servers
- Eight Sleep
Eight Sleep
- javascript
3
GitHub Stars
javascript
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"elizabethtrykin-8sleep-mcp": {
"command": "node",
"args": [
"/absolute/path/to/eight-sleep-mcp/build/index.js"
],
"env": {
"EIGHT_SLEEP_EMAIL": "your_email",
"EIGHT_SLEEP_USER_ID": "your_user_id",
"EIGHT_SLEEP_PASSWORD": "your_password",
"EIGHT_SLEEP_CLIENT_ID": "your_client_id",
"EIGHT_SLEEP_CLIENT_SECRET": "your_client_secret"
}
}
}
}This MCP (Model Context Protocol) server provides programmatic access to Eight Sleep Pod data, letting you read user info, manage devices, control temperature, fetch sleep data, and handle alarms through a consistent, scriptable interface. It enables automation and integration with your own tools and dashboards without manual UI interaction.
How to use
You interact with the Eight Sleep MCP server through an MCP client. Once the server is running, you can call a collection of functions to read data, control your pod, and schedule actions. Typical usage patterns include retrieving your user profile, adjusting temperature settings, pulling sleep analytics for specific dates, and managing alarms and device state. When you run functions, you’ll provide the required parameters (dates, temperature levels, alarm times, etc.) and receive structured responses that you can feed into dashboards, alerts, or reports.
How to install
Prerequisites: you need Node.js version 16 or higher and an Eight Sleep account.
-
Clone the project directory.
-
Install dependencies.
-
Build the project.
-
Run or configure the MCP server as described in the configuration section.
Configuration and runtime notes
To authenticate with Eight Sleep, you will provide an email, password, and, optionally, a user ID and client credentials. You can obtain the user ID in one of two ways: either perform a direct API login to obtain the user ID, or run an MCP client once to fetch your users and then store the ID in your configuration. You should configure these values in your environment or in your MCP client’s settings to avoid sending credentials on every request.
Claude Desktop integration example
{
"mcpServers": {
"eight_sleep": {
"command": "node",
"args": ["/absolute/path/to/eight-sleep-mcp/build/index.js"],
"env": {
"EIGHT_SLEEP_EMAIL": "your_email", // email and password not required once you have userid
"EIGHT_SLEEP_PASSWORD": "your_password", // email and password not required once you have userid
"EIGHT_SLEEP_USER_ID": "your_user_id",
"EIGHT_SLEEP_CLIENT_ID": "your_client_id", // optional
"EIGHT_SLEEP_CLIENT_SECRET": "your_client_secret" // optional
}
}
}
}
Available tools
getUsers
Retrieve user profile information.
getUserPreferences
Fetch user preferences including units, timezone, and bed side.
updateUserPreferences
Update user preferences for a user.
getDeviceStatus
Query device status such as online state and firmware.
setDevicePower
Turn the Eight Sleep device on or off.
getPresence
Check if the user is currently in bed.
getTemperature
Read current temperature settings.
setTemperature
Set an immediate temperature change with an optional duration.
getTemperatureSchedules
Retrieve existing temperature schedules.
setTemperatureSchedule
Create a new temperature schedule.
updateTemperatureSchedule
Modify an existing temperature schedule.
deleteTemperatureSchedule
Remove a temperature schedule.
getSleepData
Get detailed sleep data for a specified date range.
getSleepScore
Obtain sleep score for a specific date.
getSleepStages
Fetch sleep stages such as awake, light, deep, and REM.
getHrv
Retrieve Heart Rate Variability data.
getHeartRate
Get heart rate data.
getRespiratoryRate
Fetch respiratory rate data.
getSleepTiming
Obtain bedtime and wake time information.
getSleepFitnessTrends
Get sleep fitness trends over time.
getAlarms
List all alarms.
setAlarm
Create a new alarm.
updateAlarm
Update an existing alarm.
deleteAlarm
Delete an alarm.