mcp-httc
by john-r-black
README.md
# mcp-httc
MCP server wrapping Honeywell **Total Connect Comfort** (legacy
`mytotalconnectcomfort.com`) so John can drive Deer Park UMC's 13
thermostats from any Claude surface.
Sister projects on the same Raspberry Pi:
[mcp-ui](https://github.com/john-r-black/mcp-ui),
[mcp-google](https://github.com/john-r-black/mcp-google),
[mcp-pco](https://github.com/john-r-black/mcp-pco).
- **Stack:** Python 3.13, FastAPI, FastMCP, AIOSomecomfort, aiohttp.
- **Backend:** `AIOSomecomfort` (the same library Home Assistant uses) —
the only Python/JS option that keeps up with Honeywell's periodic portal
breakages.
- **Transport:** Streamable HTTP only; OAuth 2.1 with HS256 JWTs and a
shared login password (1:1 port of `mcp-ui`'s auth model).
- **Deployment:** systemd on the Pi, Cloudflare Tunnel ingress at
`https://httc.1421mcps.com`. See
`references/2026-04-16_initial-deployment.md` once the first deploy is
written up.
## Tools (v1)
| Tool | Purpose |
|---|---|
| `list_thermostats` | All devices with current temp, humidity, mode, fan, setpoints, hold state |
| `get_thermostat` | One device by name (case-insensitive) or numeric id |
| `set_setpoint` | Heat and/or cool setpoint with `hold_type` ∈ {temporary, permanent, cancel} |
| `set_mode` | System mode: heat / cool / auto / off |
| `set_fan_mode` | Fan: auto / on / circulate |
| `set_humidity_setpoint` | Humidity setpoint (only on devices that have a humidifier) |
Schedule read/write and background polling/monitoring are out of scope for v1.
## Deploy a code change
```bash
git push origin main
ssh 1421mcp 'cd mcp-httc && git pull && \
.venv/bin/pip install -r requirements.txt && \
sudo systemctl restart mcp-httc && \
sudo journalctl -u mcp-httc -f --since "10 seconds ago"'
```