connect_inverterLABSCO SUMMARY
Read-write access to a piece of household infrastructure.
This is not a dashboard: set_operation_mode, set_grid_export_limit and write_setting change how the inverter behaves, so an assistant connected to it can alter what your house does with its own power. The upside is that questions like why the battery drained overnight can be answered against live sensor values instead of a vendor app, and the same session can act on the answer. Keep it on the LAN or behind a token and a TLS proxy.
What it is
A local server that talks to a GoodWe solar inverter over your own network, built on the goodwe Python library with sensor definitions and operation modes modelled on the Home Assistant integration. It reads every live sensor the inverter exposes and also writes: operation mode, grid export limit and battery depth-of-discharge are all settable.
What you get
get_runtime_datareturns all live sensor values, optionally filtered by kind — PV, AC, BAT, GRID, UPS or BMSlist_sensorsandread_sensorenumerate sensor IDs and read one at a timeget_settings_data,read_settingandwrite_settingread and change any configurable settingget_operation_modeandset_operation_modeswitch between general, eco, backup, off_grid, peak_shaving, eco_charge and eco_dischargeget_grid_export_limitandset_grid_export_limitcontrol export in watts, with 0 disabling itget_battery_dodandset_battery_dodset depth-of-dischargeconnect_inverter,get_connection_statusandget_device_infohandle the connection and report model, serial and firmware
Requirements
Python 3.10+ and a GoodWe inverter reachable on the local network, on UDP port 8899 or Modbus/TCP port 502. Install with uv pip install . (package goodwe-inverter-mcp, version 0.1.0) and run goodwe-mcp. Set GOODWE_HOST to auto-connect at startup. Stdio is the default; --transport sse, streamable-http and server are available, and for those set MCP_AUTH_TOKEN — when it is empty, authentication is off and every HTTP endpoint is public. The server does not terminate TLS, so put a reverse proxy in front of anything not on localhost.
Setup effort
Build from source — git clone https://github.com/marcinn2/goodwe-inverter-mcp.git
USE CASES
Explaining what the solar system did today
Read PV production, battery state, grid import/export and load consumption in one call.
Chasing one odd reading
List the sensor IDs, then read the single sensor you care about.
Switching the inverter for a tariff window or a storm
Check the supported modes and move between eco, backup and off-grid.
Tuning export and battery limits
Set the grid export limit in watts, or change depth-of-discharge.
15 tools
Listed in project docs. Your client may show a different list.
get_connection_statusget_device_infoget_runtime_datalist_sensorsread_sensorget_settings_dataread_settingwrite_settingget_operation_modeset_operation_modeget_grid_export_limitset_grid_export_limitget_battery_dodset_battery_dodBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- uv, to create the virtual environment and install the checkout
- Python 3.10+
- A GoodWe inverter reachable on your local network (UDP port 8899 or Modbus/TCP port 502)
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/marcinn2/goodwe-inverter-mcp.git
cd goodwe-inverter-mcp
uv venv
uv pip install .MCP Clients
Claude Desktop
{
"mcpServers": {
"goodwe": {
"command": "<YOUR_PATH_TO_GOODWE_INVERTER_MCP>/.venv/bin/goodwe-mcp",
"env": {
"GOODWE_HOST": "192.168.1.100"
}
}
}
}GOODWE_HOST is your inverter's IP address, and <YOUR_PATH_TO_GOODWE_INVERTER_MCP> the full path of the folder you cloned. uv venv created .venv inside it and uv pip install . put goodwe-mcp in .venv/bin (on Windows, .venv\Scripts\goodwe-mcp.exe); Claude Desktop does not search that folder, so the block names the command by its full path.