Skip to main content
Glama
bennythecoder

Smartlife Tuya MCP Server

README.md
# Smartlife Tuya MCP Server

Local MCP server exposing Tuya-based temperature/humidity sensors (managed via
the SmartLife app) to an MCP client. Devices, names, and capabilities are all
discovered live from the linked Tuya account — nothing is hardcoded.

## Tools exposed

- `list_devices` — every sensor linked to the account, with id/name/online status
- `get_capabilities(device_id)` — the data points a device reports (code, type, unit, range), read live from Tuya
- `get_reading(device_id)` — latest reading for one sensor; flagged `stale: true` if it hasn't reported in over an hour or is offline
- `get_all_readings` — latest reading for every sensor in one call

## Setup

1. Clone/copy this folder to the target machine.
2. Create a venv and install dependencies:
   ```
   ./setup.sh
   ```
   (On Windows, without the script: `python -m venv venv && venv\Scripts\pip install -r requirements.txt`)
3. `setup.sh` copies `.env.example` to `.env` if one doesn't exist yet. Fill it in:
   - `TUYA_ACCESS_ID` / `TUYA_ACCESS_SECRET` — from your Tuya IoT Platform Cloud project
   - `TUYA_ENDPOINT` — must match your project's Data Center (US `openapi.tuyaus.com`,
     EU `openapi.tuyaeu.com`, China `openapi.tuyacn.com`, India `openapi.tuyain.com`).
     A mismatch here is the most common setup failure — auth will still succeed, but
     every device call returns a permission/"data center suspended" error.
4. Sanity check — should start with no errors and then hang waiting on stdio (Ctrl+C to stop):
   ```
   ./venv/bin/python server.py
   ```

`.env` holds live API credentials and is gitignored — never commit it.

## Wiring into Hermes Agent

Add to `~/.hermes/config.yaml`:

```yaml
mcp_servers:
  smartlife-tuya:
    command: "/path/to/smartlife_mcp/venv/bin/python"
    args: ["/path/to/smartlife_mcp/server.py"]
    tools:
      include: ["list_devices", "get_capabilities", "get_reading", "get_all_readings"]
```

The `tools.include` allowlist isn't strictly needed (the server only exposes
these four read-only tools anyway) but matches Hermes's own recommendation to
start with the smallest tool set possible.

## Rotating credentials

Regenerate the Access Secret from the Tuya IoT Platform → your Cloud project →
Overview, then update `.env` on every machine running this server.