Sigen config
Safe configuration workflow for Sigenergy ESS inverters. Guides through EMS mode changes, charge/discharge limit adjustments, and direct register writes with safety validation. Always reads current state first, validates ranges against documented limits, and requires user confirmation before executing any write. Use when the user wants to change EMS mode, set charge/discharge limits, write a register, or change inverter configuration.From its SKILL.md
npx -y skills add paulczar/sigen-mcp --skill sigen-configAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.8 KB, as published. Nobody here has run it
sigen-config — Safe Configuration Changes
Guided workflow for making configuration changes to the Sigenergy ESS system. Always validates inputs before writing and confirms with the user before making changes.
Prerequisites
sigen-mcpMCP server must be connected- User must explicitly confirm the change before any write is executed
- Know the current inverter state before making changes (read it first)
Safety Rules (ALWAYS FOLLOW)
- Read before write: Always call the corresponding read tool first to show the user the current value.
- Confirm with user: Present the proposed change and ask for explicit confirmation before executing.
- Validate ranges: Never write values outside documented safe ranges.
- Log changes: Include what changed in the response.
Procedure
EMS Mode Change
Register: 40031 (slave 247, holding)
Valid modes (from REMOTE_EMS_MODES in registry.ts):
| Value | Mode | Description |
|---|---|---|
| 0 | MaxSelfConsumption | Self-consumption priority |
| 1 | AI | Cloud-optimized |
| 2 | TOU | Time-of-use schedule |
| 3 | Manual | Manual control |
| 4 | Off-Grid | Force islanding |
| 5 | FullFeedIn | All PV to grid |
| 6 | Backup | Battery backup reserve |
| 7 | Economy | Grid-tied savings mode |
| 8 | Emergency | Emergency power mode |
| 9 | Custom | User-defined parameters |
Workflow:
- Call
read_ems_mode()to show current mode - Present the current and proposed mode to the user
- Call
set_ems_mode({ mode: <number> })only after explicit confirmation
Charge/Discharge Limit Change
Registers:
- Max charging: 40032 (slave 247, holding) — in kW
- Max discharging: 40034 (slave 247, holding) — in kW
Valid range: 0 to the inverter's rated power (typically 5–15 kW depending on model)
Workflow:
- Call
read_plant()— note the current active power flow and battery SOC - Check: if battery SOC is very low (< 10%), warn the user before setting a discharge limit
- Present the proposed limit to the user
- Call
set_charge_limit({ kw: <value> })orset_discharge_limit({ kw: <value> })only after confirmation
Validation rules:
- Must be >= 0 kW
- Should not exceed the inverter's rated power (check nameplate or documentation)
- Setting to 0 kW blocks that direction entirely
- Discharge limit during low battery can cause system instability
Direct Register Write
For advanced users who know exactly what they're writing:
WARNING: Direct register writes can:
- Change system behavior unexpectedly
- Invalidate warranties
- Cause equipment damage if incorrect values are written
Workflow:
- Read the current register value first:
read_registers({ address, slave }) - Confirm the user understands the risk
- Execute only after explicit confirmation:
write_register({ address, value, slave })
General Precautions
| Situation | Action |
|---|---|
| User wants to set EMS mode during off-grid | Warn: mode change while off-grid may not take effect until grid returns |
| User sets charge limit higher than inverter rating | Reject — clamp to rated max |
| User sets discharge limit above available battery power | Accept but note: actual discharge will be limited by battery BMS |
| User asks to write registers they don't understand | Push back — ask them to explain what they're trying to achieve |