Growatt MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GROWATT_TOKEN | Yes | ShinePhone API token | |
| GROWATT_REGION | No | Picks the regional API host: global / eu (openapi.growatt.com), cn (openapi-cn.growatt.com), us (openapi-us.growatt.com) | global |
| GROWATT_TIMEOUT | No | HTTP timeout in seconds | 30 |
| GROWATT_BASE_URL | No | Explicit API host (https only); overrides GROWATT_REGION | |
| GROWATT_READ_ONLY | No | Set to 1 to register only the read tools; the ten state-changing tools are not exposed at all | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_plantsA | List all plants (solar installations) visible to this Growatt account. |
| get_plant_detailsA | Get basic information about a plant: name, location, peak power, timezone. |
| get_plant_dataA | Get the current energy overview for a plant: today's, monthly, yearly and total energy, current power. |
| get_plant_energyA | Get historical energy generation for a plant. |
| get_user_plantsA | List the plants that belong to a specific end user (installer / distributor accounts). |
| add_plantA | Create a new plant for an end user. Changes state on Growatt's side. |
| modify_plantA | Rename a plant and/or change its currency. Changes state on Growatt's side. |
| get_devicesA | List devices with their type ("min", "sph", "max", ...), which the other tools need. With a plant_id, returns every device of that plant (page is ignored). Without it, returns all devices on the account, paginated. |
| get_device_infoA | Get static information for a device: model, firmware, configured settings. |
| get_device_last_dataA | Get the latest real-time reading: PV power, load, grid import/export, battery SOC, temperatures, faults. |
| get_device_historyA | Get five-minute readings for a single device for one day. The "calendar" field is an epoch built from the plant's local wall-clock interpreted as UTC+8; treat it as UTC and add 8 hours to get local time. |
| check_device_snA | Look up a serial number to learn its device type and whether it is already registered. |
| get_dataloggersA | List the dataloggers (ShineWiFi / ShineLAN sticks) attached to a plant. |
| add_dataloggerA | Attach a datalogger to a plant. Changes state on Growatt's side. |
| add_storage_deviceA | Attach a storage (battery) device to a plant. Changes state on Growatt's side. |
| set_device_on_offA | Turn a device on or off. Changes state on Growatt's side. |
| set_device_powerA | Set the active power limit of a device. Changes state on Growatt's side. |
| read_device_parameterB | Read a VPP (Virtual Power Plant) parameter from a device. |
| set_device_parameterB | Write a VPP (Virtual Power Plant) parameter on a device. Changes state on Growatt's side. |
| get_max_dataA | Get the latest data for one MAX-series inverter. |
| get_max_batch_dataA | Get the latest data for several MAX-series inverters in one call. |
| set_max_parameterB | Write a setting on a MAX-series inverter. Changes state on Growatt's side. |
| list_usersA | List end-user accounts managed by this Growatt account. |
| check_userB | Check whether a Growatt user name exists. |
| register_userA | Create an end-user account under this Growatt account. Changes state on Growatt's side. |
| modify_userA | Update an end-user's mobile number. Changes state on Growatt's side. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools have distinct targets: plant details, plant data, plant energy, device info, dataloggers, users, and MAX-series inverters are clearly separated. A few pairs like get_plant_details vs get_plant_data and get_device_last_data vs get_max_data could be confused, but the descriptions disambiguate them well enough.
The dominant get_* pattern is clear, but there is a mix of list_users, check_user, read_device_parameter, add_*, set_*, modify_*, and register_user. The inconsistent use of list vs get for listing resources and get vs read vs check makes the naming readable but not fully predictable.
At 26 tools, the server is beyond the 25-tool threshold for a heavy surface. It covers many subdomains, but the count is high enough that agents will need to filter through many similar-looking operations.
The server covers plant creation/modification, device monitoring and control, user management, and MAX-specific operations. Notable lifecycle gaps exist: there are no remove/delete operations for plants, users, dataloggers, or storage devices, and some user update coverage is minimal.