An MCP server for a Meross garage door opener. It exposes three tools to an AI assistant over stdio:
Overview
An MCP server for a Meross garage door opener. It exposes three tools to an AI assistant over stdio: - garage_status — returns the door's current open/closed state - garage_open — opens the door (two-phase confirm, see Safety) - garage_close — closes the door (two-phase confirm, see Safety) Opening or closing the door is a operation, by design: 1. — call garage_open / garage_close with no arguments. It reports the current state and asks for confirmation. Relay that to the user and wait. 2. — only after the user explicitly says yes/go/open (or yes/go/close), call again with confirm="YES". The command is sent. If the user replies ABORT / STOP / CANCEL, do not make the phase 2 call. Never self-confirm. A 30-second cooldown also rejects duplicate commands while the door is in motion — use garage_status to check the state instead. - Python 3.10+ - A Meross account with a garage door opener on it - pip install mcp meross_iot 2. Log in to Meross to produce a cached token at ~/.
README
Garage MCP
An MCP server for a Meross garage door opener. It exposes three tools to an AI assistant over stdio:
garage_status— returns the door’s current open/closed stategarage_open— opens the door (two-phase confirm, see Safety)garage_close— closes the door (two-phase confirm, see Safety)
Safety
Opening or closing the door is a two-phase operation, by design:
- Phase 1 — call
garage_open/garage_closewith no arguments. It reports the current state and asks for confirmation. Relay that to the user and wait. - Phase 2 — only after the user explicitly says yes/go/open (or yes/go/close), call again with
confirm="YES". The command is sent.
If the user replies ABORT / STOP / CANCEL, do not make the phase 2 call. Never self-confirm.
A 30-second cooldown also rejects duplicate commands while the door is in motion — use garage_status to check the state instead.
Requirements
- Python 3.10+
- A Meross account with a garage door opener on it
pip install mcp meross_iot
Setup
-
Install dependencies:
pip install mcp meross_iot -
Log in to Meross once to produce a cached token at
~/.config/meross/token.json. The server reads that file at runtime — the token is never printed, and it is not part of this repo. -
Point your MCP client at the script, e.g.:
{ "mcpServers": { "garage": { "command": "python3", "args": ["/path/to/garage_mcp.py"] } } }
How it works
On each call, the server loads the cached credentials, discovers Meross devices on the account, and uses the first device that supports the garage-opener interface. Status reads the door sensor; open/close sends the command and starts the cooldown timer. If the token is expired or missing, the tool returns an error telling you to log in again — it never asks for credentials itself.
Security notes
- The token file at
~/.config/meross/token.jsonholds your Meross account credentials. Keep it private, never commit it, and never share it. - This server has no authentication of its own — it trusts whoever can run it. Keep it on a machine you control.
License
MIT — see LICENSE. Use it, fork it, improve it.
Questions or bugs
Please open an Issue on this repo.
Install
This server does not publish a one-line install command.
Open the repository installation guideConfiguration
{
"mcpServers": {
"garage": {
"command": "python3",
"args": ["/path/to/garage_mcp.py"]
}
}
}