Skip to main content

MCP server for controlling SmartRent smart home devices

Project description

SmartRent MCP

PyPI version Python versions License: MIT

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


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 uv or pip — 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-mcp

Setup — Claude Desktop

1. Open your Claude Desktop config file

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %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
ping Test that the server is alive none
get_device_status Read the status of all devices — locks, thermostat, switches, sensors none
switch_control Turn a light switch on or off name (e.g. "kitchen"), action ("on" / "off")
lock_door Lock or unlock the front door action ("lock" / "unlock")
set_temperature Set thermostat temperature, mode, and unit temperature (int), mode ("cool" / "heat" / "auto" / "off", default "cool"), unit ("F" / "C", default "F")

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-mcp

This 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
SMARTRENT_EMAIL Yes Your SmartRent account email
SMARTRENT_PASSWORD Yes Your SmartRent account password
TRANSPORT No stdio (default) or sse
PORT No Port to listen on in sse mode (default 8000)

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.log
  • Windows: %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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smartrent_mcp-0.1.2.tar.gz (130.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartrent_mcp-0.1.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file smartrent_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: smartrent_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 130.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for smartrent_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2fb7c213dd6c80ec0082b6dffd07cf6f053839103ae923350728d04c08a8b22e
MD5 c4dcaf2edb0451dc5e082d062967e92a
BLAKE2b-256 71c2bb186f1fa0b638aea4eac92e5d1ef5ad8c842bfdac989d2cfc53f0bf2d52

See more details on using hashes here.

File details

Details for the file smartrent_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: smartrent_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for smartrent_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c60c4293fb7481bdd4431cb021a5479afeb4100f71d9abfb5cb22a7e5061f7b
MD5 0b71057cbbb7652d66681d9eb0433b64
BLAKE2b-256 2a37b0b65f5b4a64b42706242521c5f3eac3750e768abc28ec0b55a92346f8ea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page