ecobee-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ecobee-mcpwhat's my thermostat reading right now?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ecobee-mcp
A remote Model Context Protocol server for one Ecobee account, hosted on Cloudflare Workers. It reads thermostat status and controls modes, holds, schedules, settings, vacations, fan time, and screen messages.
One Worker serves a bearer-protected, stateless /mcp endpoint. A Durable Object owns and refreshes the account's access tokens.
Setup
npm install
npx wrangler login
cp wrangler.jsonc wrangler.local.jsoncIn wrangler.local.jsonc, replace ecobee.example.com with a hostname on a Cloudflare zone you manage. Deploy using that local config:
WRANGLER_CONFIG=wrangler.local.jsonc npm run deploy
npx wrangler secret put ECOBEE_USERNAME --config wrangler.local.jsonc
npx wrangler secret put ECOBEE_PASSWORD --config wrangler.local.jsonc
openssl rand -hex 32 | tee /dev/stderr | npx wrangler secret put MCP_BEARER --config wrangler.local.jsoncThe custom-domain route creates its DNS record on first deploy.
Related MCP server: Home Assistant MCP
Tools
Tool | Description |
| Summarize all registered thermostats |
| Get selected raw details for one thermostat |
| Change HVAC mode |
| Set heat and cool hold temperatures |
| Cancel holds and resume the programmed schedule |
| Set minimum fan minutes per hour |
| Pass through raw thermostat settings |
| Pass through comfort profiles or a weekly schedule |
| Choose which sensors a comfort setting (Home/Away/Sleep…) averages, by sensor name |
| Create a vacation event |
| Delete a vacation event |
| Show a message on the thermostat screen |
Write tools change the real thermostat. Confirm changes with the user first.
Raw HTTP
The endpoint uses stateless Streamable HTTP and returns SSE-framed MCP responses.
curl -s https://ecobee.example.com/mcp -X POST \
-H 'Authorization: Bearer <MCP_BEARER>' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'GET / identifies the MCP endpoint. GET /health is public and reports whether the Durable Object has tokens without making a network request.
Local development
cp .dev.vars.example .dev.vars
npm run check
npx wrangler devNotes
Authentication uses the Ecobee web app's public Auth0 client and password grant. This is unofficial and may break if Ecobee changes that flow.
No browser authorization is needed.
Sensor participation is per comfort setting, but Ecobee's Follow Me (
followMeComfort) overrides it with whichever sensors detect motion.get_thermostatsshows both; turn Follow Me off withupdate_settings{"followMeComfort": false}for strict per-setting sensors.Tool temperatures are plain °F. Raw settings and program temperature fields use °F × 10 where noted.
Credentials are Worker secrets and are sent only to Ecobee's Auth0 token endpoint.
/mcprequiresMCP_BEARER;/and/healthare public.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Superseded by io.github.f-tiger/hvac-btu-heat-klimaanlage — same server, same URL.
Superseded by io.github.f-tiger/hvac-btu-heat-klimaanlage — same server, same URL.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Manage vacation rentals, bookings, calendars and operations with OAuth and action approvals.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables control and monitoring of Tesla vehicles through the Tessie API, providing access to vehicle state (battery, location, climate) and commands (lock/unlock, climate control, navigation) with support for both local and Cloudflare Worker deployment.11MIT
- AlicenseNot gradedqualityBmaintenanceExposes a Home Assistant instance as an MCP tool set, running as a stateful agent on Cloudflare Workers, enabling clients to read entity states, call services, run scripts and automations, and send commands to phones.83 npmApache 2.0
- FlicenseNot gradedqualityBmaintenanceA stateless MCP server for Cloudflare Workers that exposes read-only Garmin Connect data (activities, health, sleep, training status, HRV, VO2 max) for a single securely linked personal account.-
- AlicenseNot gradedqualityCmaintenanceConnects MCP clients such as Claude to a NIBE myUplink heat-pump account, letting users list systems and devices, read sensor values and common parameters, check alarms, view smart-home zones, and write settings where scopes allow. Handles the OAuth2 authorization-code and client-credentials flows, refreshing tokens automatically while keeping credentials in a local .env file.MIT