io.github.Evin009/smartrent-mcp
This server lets Claude control SmartRent smart-home devices via MCP tools.
Test server health with
ping.Read status for all SmartRent locks, thermostat, switches, and sensors with
get_device_status.Turn a light switch on or off by partial/full name with
switch_control.Lock or unlock the front door with
lock_door.Set thermostat temperature, mode (
cool/heat/auto/off), and unit (F/C) withset_temperature.Device matching is partial and case-insensitive.
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., "@io.github.Evin009/smartrent-mcp Turn off the kitchen lights and lock the front door"
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.
SmartRent MCP
An MCP (Model Context Protocol) server that lets Claude control your SmartRent smart home devices — locks, thermostat, light switches, and sensors — through natural conversation.
You: "Turn off the kitchen lights and lock the front door"
Claude: "Kitchen turned off. Front Door - Lock is now locked."Table of Contents
Related MCP server: LMStudio-MCP
Requirements
A SmartRent account with devices already set up in the SmartRent app (this only works if your building/home uses SmartRent hardware — front door locks, thermostats, switches, or sensors)
Python 3.10+
Either
uvorpip— you likely already have one of these
Installation
Option A — using uv (recommended, no separate install step)
If you don't have uv yet, install it once:
# Mac/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"That's it — uvx will download and run the package automatically the first time Claude needs it. No manual install command required.
Option B — using plain pip
pip install smartrent-mcpSetup — Claude Desktop
1. Open your Claude Desktop config file
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
2. Add the server entry
If you installed via uv (Option A):
{
"mcpServers": {
"smartrent-mcp": {
"command": "uvx",
"args": ["smartrent-mcp"],
"env": {
"SMARTRENT_EMAIL": "your_smartrent_email",
"SMARTRENT_PASSWORD": "your_smartrent_password"
}
}
}
}If you installed via pip (Option B):
{
"mcpServers": {
"smartrent-mcp": {
"command": "smartrent-mcp",
"env": {
"SMARTRENT_EMAIL": "your_smartrent_email",
"SMARTRENT_PASSWORD": "your_smartrent_password"
}
}
}
}If you already have other servers under "mcpServers", just add "smartrent-mcp" as another entry — don't replace the existing ones.
3. Restart Claude Desktop
Fully quit the app (Cmd+Q on Mac, or right-click the tray icon and Quit on Windows) and reopen it. Closing the window alone is not enough.
4. Try it
Ask Claude:
"What's the status of my home?"
"Turn on the kitchen lights"
"Lock the front door"
"Set temperature to 72 cool mode"
Setup — Claude Web
Claude Web only connects to remote MCP servers over a URL — it cannot run local commands like uvx. To use this server with Claude Web, you need to self-host a remote instance. See Self-Hosting below, then add your deployed URL in Claude Web → Settings → MCP Servers.
Available Tools
Tool | Description | Parameters |
| Test that the server is alive | none |
| Read the status of all devices — locks, thermostat, switches, sensors | none |
| Turn a light switch on or off |
|
| Lock or unlock the front door |
|
| Set thermostat temperature, mode, and unit |
|
Device matching is partial and case-insensitive — "dining" will match a switch named "Dining Room".
Self-Hosting (Remote / SSE mode)
By default this package runs in stdio mode for local use with Claude Desktop. To run it as a remote, always-on server (for Claude Web or shared use), set the TRANSPORT environment variable:
TRANSPORT=sse SMARTRENT_EMAIL=you@example.com SMARTRENT_PASSWORD=yourpassword smartrent-mcpThis starts an HTTP/SSE server (default port 8000, override with PORT). Deploy it anywhere that runs Python — Railway, Render, Fly.io, etc. — with these environment variables set:
Variable | Required | Description |
| Yes | Your SmartRent account email |
| Yes | Your SmartRent account password |
| No |
|
| No | Port to listen on in |
Once deployed, connect to it at https://your-deployment-url/sse.
Troubleshooting
"Invalid Host header" or connection refused on a remote deployment
The server disables DNS rebinding protection by default to support remote access. If you've changed this, make sure TransportSecuritySettings(enable_dns_rebinding_protection=False) is set in server.py.
Claude Desktop doesn't show any tools Make sure you fully quit and restarted the app (not just closed the window). Check the MCP logs:
Mac:
~/Library/Logs/Claude/mcp-server-smartrent-mcp.logWindows:
%APPDATA%\Claude\logs\mcp-server-smartrent-mcp.log
"Username or password was wrong" Verify your SmartRent credentials work by logging into the SmartRent mobile app with the same email/password.
"No switch/lock/thermostat found on this account" Your SmartRent account needs the corresponding device type already set up in the SmartRent app.
Security
Your SmartRent credentials are passed as environment variables directly to the server process and are never sent anywhere except SmartRent's own login API. They are not logged or stored by this package.
If you're self-hosting in sse mode, anyone with your server's URL can control your home — there is currently no authentication layer on remote mode. Keep your deployment URL private, or restrict network access to it.
Built With
License
MIT
Available Tools
5 toolsget_device_statusA
Get the current status of all SmartRent devices (locks, thermostat, switches, sensors)
Inputs: no named parameters. Returns: result
lock_doorA
Lock or unlock the front door. action: 'lock' or 'unlock'
Inputs: action (required). Returns: result
pingA
Test that the server is alive
Inputs: no named parameters. Returns: result
set_temperatureB
Set thermostat temperature and mode. temperature: the temperature value mode: 'cool', 'heat', 'auto', or 'off' unit: 'F' for farenheit (default) or 'C' for celcius
Inputs: temperature (required), mode, unit. Returns: result
switch_controlA
Turn a light switch on or off. name: partial or full name of the switch (e.g. 'bedroom', 'living room') action: 'on' or 'off'
Inputs: name (required), action (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool serves a unique purpose: health check, read all devices, control lights, lock door, set thermostat. No overlap.
All tool names follow a consistent verb_noun snake_case pattern (ping, get_device_status, switch_control, lock_door, set_temperature).
5 tools cover the essential smart home operations without being excessive or insufficient. Well-scoped for a minimal server.
Core device types are covered (lock, switch, thermostat, sensors), but missing specific device querying or advanced features like scenes. Minor gaps.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Hosted CallRail MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP Server for the Notion API, enabling Claude to interact with Notion workspaces.311,700 npm924MIT
- AlicenseNot gradedqualityDmaintenanceA Model Control Protocol (MCP) server that allows Claude to communicate with locally running LLM models via LM Studio.MIT
- AlicenseAqualityDmaintenanceMCP server for controlling Wyze smart home devices (plugs, switches, thermostats, air purifiers) via Claude Desktop or Home Assistant.726 npmMIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that lets Claude read and switch the 3 lights in the innovation room through ThingsBoard, using natural language.10 npmISC