Mcp Server For Victron Energy Gx Devices
Description
<!-- mcp-name: io.github.lubosstrejcek/victron-tcp --> # Victron TCP — MCP Server An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects to Victron Energy GX devices on your local network via **MQTT** (recommended) or **Modbus TCP**. Get direct…
About
<!-- mcp-name: io.github.lubosstrejcek/victron-tcp --> # Victron TCP — MCP Server An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects to Victron Energy GX devices on your local network via **MQTT** (recommended) or **Modbus TCP**. Get direct, low-latency access to real-time solar…
Details
- Author
- lubosstrejcek
- Downloads
- 303
- Categories
- Developer Tools, Other
Jump to
- 30 specialized tools for reading Victron device data
- Dual transport — MQTT (zero-config) or Modbus TCP
- Network discovery to find GX devices without an IP
- One-shot setup probing both transports and generating config
- Read-only and safe with readOnlyHint: true
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Mcp Server For Victron Energy Gx DevicesCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install with npx victron-tcp and configure via environment variables VICTRON_HOST, VICTRON_TRANSPORT, and VICTRON_PORTAL_ID. Use with Claude Code (claude mcp add --transport stdio victron-tcp -- npx victron-tcp) or add to Claude Desktop / Cursor / Windsurf MCP config. The AI can also run victron_network_scan and victron_setup to auto-discover devices.
victron_system_overview
Get system overview: battery SOC/voltage/current/power, PV power, grid power, AC consumption, inverter state, and Dynamic ESS status. Unit ID is always 100.
victron_battery_status
Get detailed battery monitor data: SOC, voltage, current, power, temperature, cell voltages, time-to-go, history, and alarms. Specify unitId for the battery monitor (check victron_discover to find it).
victron_solar_status
Get solar charger data: PV voltage, current, power, yield today/yesterday/total, charger state, error code, and tracker data. Specify unitId for the solar charger (check victron_discover to find it).
victron_grid_status
Get grid meter data: power per phase (L1/L2/L3), voltage, current, frequency, and energy counters (forward/reverse). Specify unitId for the grid meter (check victron_discover to find it).
victron_vebus_status
Get VE.Bus inverter/charger (Multi/Quattro) data: AC input/output voltage, current, power per phase, DC voltage, input current limit, mode, state, alarms, and ESS settings. Specify unitId for the VE.Bus device (check victron_discover to find it).
victron_tank_levels
Get tank sensor data: level, capacity, remaining, and fluid type (fuel, fresh water, waste water, live well, oil, black water, gasoline). Specify unitId for the tank sensor (check victron_discover to find it).
victron_temperature
Get temperature sensor data from com.victronenergy.temperature: temperature, type (battery, fridge, generic), humidity, pressure, and status. Note: Battery temperatures measured by inverters/chargers or solar chargers are reported in their own device registers (use victron_vebus_status or victron_solar_status), not here. This tool reads dedicated temperature sensor inputs only. Specify unitId for the temperature sensor (check victron_discover to find it).
victron_inverter_status
Get standalone inverter data (Phoenix, Inverter RS, VE.Direct inverters): AC output voltage, current, power, frequency, state, and alarms. This is for standalone inverters — for Multi/Quattro, use victron_vebus_status instead.
victron_evcs_status
Get EV Charging Station status by connecting directly to the EVCS device (not through the GX). Reads charger status, power per phase, charging current, session energy, mode, phase configuration, temperatures, and errors. The host parameter should be the EVCS IP address (not the GX). For EV charger data proxied through the GX device, use victron_read_category with category "evcharger" instead.
victron_discover
Discover connected Victron devices via Modbus TCP by probing unit IDs. Scans a range of unit IDs to find active devices and identify their service type. Modbus only — for MQTT discovery use victron_mqtt_discover instead. This is the first tool you should use with Modbus transport to find what devices are available and their unit IDs.
victron_read_register
Read raw Modbus register(s). Modbus TCP only — not available via MQTT. Advanced tool for reading specific register addresses with explicit data type and scale factor. Use victron_search_docs or victron_list_registers first to find the correct address, data type, and scale factor for the register you want to read.
victron_list_registers
List available Modbus registers for a given device category. Shows register addresses, names, data types, and units. For free-text search across all docs use victron_search_docs instead.
victron_read_category
Read all registers for any Victron device category by service name. Covers all 33 categories including digital inputs, genset, PV inverter, settings, GPS, meteo, and more. Use victron_discover to find connected devices and their unit IDs first.
victron_gx_info
Get GX device identity and connection info: serial number, relay states, system time, and connection details. MAC address and hostname are NOT available via Modbus TCP. Unit ID is always 100.
victron_digital_inputs
Read digital input data from the GX device. On Cerbo GX, this reads the primary digital input. Includes state (open/closed/running/stopped), input type (door, bilge, alarm, generator), alarm status, and pulse count. Unit ID is always 100.
victron_pvinverter_status
Get AC-coupled PV inverter data (SolarEdge, Fronius, ABB, etc.): power per phase, voltage, current, energy totals, frequency, position, serial, and power limit. Use victron_discover to find the PV inverter unit ID.
victron_acload_status
Get AC load and current sensor data: per-phase power, voltage, current, energy totals, frequency, and power factor. Used for AC current sensors measuring PV inverter output or other AC loads. Use victron_discover to find the unit ID.
victron_gps_status
Get GPS position data: latitude, longitude, altitude, course, speed, fix status, and number of satellites. Works with USB GPS (NMEA 0183) and NMEA 2000 GPS devices connected to the GX. Unit ID is always 100.
victron_meteo_status
Get meteorological sensor data from IMT Solar irradiance sensors: solar irradiance (W/m²), wind speed, cell temperature, and external temperatures. Connected via RS485/USB. Unit ID is always 100.
victron_alternator_status
Get alternator data from Wakespeed WS500, Arco Zeus, Revatek Altion, or other NMEA 2000 DC alternator regulators: battery voltage/current, auxiliary voltage, temperature, energy produced, engine/alternator RPM, field drive %, alarms, and state. Use victron_discover to find the unit ID.
victron_charger_status
Get AC charger data (Skylla-i, Skylla-IP44, Smart IP43, Blue Smart IP22): output voltage/current/temperature for up to 3 outputs, AC current/power, charge state, error code, current limit, and alarms. Use victron_discover to find the unit ID.
victron_dcdc_status
Get Orion XS DC-DC converter data: battery voltage/current/temperature, input voltage/power, charge state, error code, switch position, and accumulated Ah. Use victron_discover to find the unit ID.
victron_genset_status
Get AC generator/genset controller data (Fischer Panda, ComAp, DSE, CRE, DEIF): 3-phase AC voltage/current/power/frequency, engine temperature/load/speed/RPM, oil pressure, coolant temperature, exhaust temperature, starter voltage, model name, and error codes. Use victron_discover to find the unit ID.
victron_generator_status
Get GX generator auto start/stop status and control: manual start/stop command, start condition (SOC/load/voltage/manual), runtime, quiet hours, start/stop state, auto start enabled, service countdown, and alarms. This controls the GX relay-based generator start/stop logic. Unit ID is always 100.
victron_multi_status
Get Multi RS inverter/charger data: AC input/output voltage/current/power per phase, input frequency, AC source type, current limits, battery voltage/current/power/SOC/temperature, charger/inverter state, and alarms. Use victron_discover to find the unit ID.
victron_dcenergy_status
Get DC energy meter data from SmartShunts configured in DC meter mode: voltage, current, auxiliary voltage, temperature, energy produced/consumed, and alarms. Specify type: "source" (alternator, solar, wind), "load" (fridge, pump, generic DC load), or "system" (aggregate DC system). Unit ID is always 100.
victron_dcgenset_status
Get DC generator data (Fischer Panda, Hatz fiPMG): DC voltage/current, engine load/speed/RPM, coolant/winding/exhaust temperature, oil pressure, starter battery voltage, status, error codes, and start command. Use victron_discover to find the unit ID.
victron_mqtt_discover
Discover Venus OS devices via MQTT. Auto-discovers the portalId, lists all available services, maps them to tools, and outputs a ready-to-use MCP server config. Run this first when setting up MQTT transport.
victron_network_scan
Scan the local network to find Victron GX devices. Probes for Modbus TCP (port 502) and MQTT (port 1883) services, then verifies Victron devices via Modbus. Use this when you don't know the IP address of the GX device. Specify a subnet or let it auto-detect from local network interfaces.
victron_setup
Complete system setup and discovery for a Victron GX device. Tests both Modbus TCP and MQTT connectivity, discovers all connected devices and services, recommends the best transport, and generates ready-to-use MCP server configuration. Use this as the first step after finding a device with victron_network_scan, or directly if you already know the host IP.
victron_search_docs
Search the local offline Victron register list (900+ registers with addresses, types, scale factors). Use this BEFORE making online requests — the local docs cover most questions about registers, unit IDs, data types, and device categories. For VRM cloud API search, use the victron-vrm-mcp sibling package.
victron_check_online
Get URLs for the latest Victron local-access documentation sources. Use this only when victron_search_docs does not have the answer — for example, when checking for newer register list revisions or firmware changes. For VRM cloud API docs, use the victron-vrm-mcp sibling package.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp server for victron energy gx devices": {
"victron-tcp": {
"command": "npx",
"args": [
"victron-tcp"
]
}
}
}
}
McpServers
{
"victron-tcp": {
"command": "npx",
"args": [
"victron-tcp"
]
}
}
Victron TCP — MCP Server
An MCP (Model Context Protocol) server that connects to Victron Energy GX devices on your local network via MQTT (recommended) or Modbus TCP. Get direct, low-latency access to real-time solar, battery, grid, and inverter data — no cloud required.
900+ registers across 33 device categories, built from the official CCGX Modbus TCP register list (Rev 50). MQTT transport uses the Venus OS built-in broker for zero-config auto-discovery.
Features
- 30 specialized tools for reading Victron device data
- Dual transport — MQTT (port 1883, zero-config) or Modbus TCP (port 502, raw register access)
- 900+ registers across 33 device categories
- Network discovery — scan the local network to find GX devices, no IP needed
- One-shot setup — victron_setup probes both transports, discovers everything, generates ready-to-use config
- Read-only and safe — all tools annotated with readOnlyHint: true
Prerequisites
1. A Victron GX device on your local network (Ekrano, Cerbo, Venus GX, etc.)
2. MQTT (enabled by default) or Modbus TCP (Settings → Services → Modbus TCP)
3. Node.js 18+
Quick Start
Claude Code (recommended)
claude mcp add --transport stdio victron-tcp -- npx victron-tcp
With environment variables pre-configured:
claude mcp add --transport stdio \
-e VICTRON_HOST=192.168.1.50 \
-e VICTRON_TRANSPORT=mqtt \
-e VICTRON_PORTAL_ID=ca0f0e2e2261 \
victron-tcp -- npx victron-tcp
Claude Desktop / Cursor / Windsurf
{
"mcpServers": {
"victron-tcp": {
"command": "npx",
"args": ["-y", "victron-tcp"],
"env": {
"VICTRON_HOST": "192.168.1.50",
"VICTRON_TRANSPORT": "mqtt",
"VICTRON_PORTAL_ID": "your-portal-id"
}
}
}
}
See docs/setup.md for per-client config paths, project/user scopes, and building from source.
Don't know your GX device IP?
Ask the AI:
Find my Victron GX device on the network and set it up.
The AI will use victron_network_scan to find it, then victron_setup to configure everything.
Available Tools
Core Monitoring
| Tool | Description |
|------|-------------|
| victron_system_overview | Battery SOC, PV power, grid power, AC consumption, ESS status |
| victron_battery_status | SOC, voltage, current, power, temperature, cell data, time-to-go |
| victron_solar_status | PV power, yield today/yesterday/total, charger state, tracker data |
| victron_grid_status | Grid power per phase (L1/L2/L3), voltage, current, frequency |
| victron_vebus_status | Multi/Quattro: AC in/out, current limit, mode, state, alarms |
| victron_tank_levels | Tank level, capacity, remaining, fluid type |
| victron_temperature | Temperature, sensor type, humidity, pressure |
| victron_inverter_status | Standalone inverter: AC output, state, alarms |
| victron_evcs_status | EV Charging Station (direct connection): power, status, session energy |
Extended Devices
| Tool | Description |
|------|-------------|
| victron_multi_status | Multi RS inverter/charger |
| victron_pvinverter_status | AC-coupled PV inverters (Fronius, SolarEdge, ABB) |
| victron_genset_status | AC genset controllers |
| victron_dcgenset_status | DC generators |
| victron_alternator_status | NMEA 2000 alternators |
| victron_charger_status | AC chargers (Skylla, Blue Smart) |
| victron_dcdc_status | Orion XS DC-DC converter |
| victron_acload_status | AC load / current sensors |
| victron_dcenergy_status | DC energy meters (SmartShunts in DC meter mode) |
| victron_gx_info | GX device identity, relay states |
| victron_digital_inputs | Digital input state and type |
| victron_gps_status | GPS position, altitude, speed |
| victron_meteo_status | Solar irradiance, wind speed, temperatures |
| victron_generator_status | Generator auto start/stop, runtime, alarms |
Discovery & Setup
| Tool | Description |
|------|-------------|
| victron_network_scan | Scan local network to find GX devices by probing Modbus TCP and MQTT ports |
| victron_setup | Full system setup: test transports, discover devices, generate MCP config |
| victron_mqtt_discover | Auto-discover MQTT portal ID, services, and device instances |
| victron_discover | Scan Modbus unit IDs to find all connected devices |
Utility
| Tool | Description |
|------|-------------|
| victron_read_category | Read all registers for any device category by service name |
| victron_read_register | Read raw register(s) by address (Modbus only) |
| victron_list_registers | List available registers for a device category |
Environment Variables
Set these to skip repetitive parameters:
| Variable | Description | Example |
|----------|-------------|---------|
| VICTRON_HOST | GX device IP or hostname | 192.168.1.50 |
| VICTRON_TRANSPORT | modbus or mqtt | mqtt |
| VICTRON_PORTAL_ID | Portal ID for MQTT | ca0f0e2e2261 |
| VICTRON_MODBUS_PORT | Modbus TCP port | 502 |
| VICTRON_MQTT_PORT | MQTT broker port | 1883 |
| VICTRON_UNIT_ID | Default Modbus unit ID | 100 |
Documentation
| Guide | Content |
|-------|---------|
| Setup | Client configuration, transport comparison, finding unit IDs, supported devices |
| Examples | 15 real-world prompts with step-by-step AI behavior |
| Troubleshooting | Common errors and debugging |
| FAQ | Frequently asked questions |
| Architecture | Code structure, how it works, register map |
Roadmap
- [ ] Phase 2: Write support — ESS mode control, grid setpoint, charge current limits, relay control
- [ ] Phase 3: Resources — expose live device data as MCP resources with subscription notifications for real-time updates
- [x] Claude Desktop Extension packaging (.mcpb)
- [x] NPM package publishing (npx victron-tcp)
References
- Victron Modbus TCP FAQ
- CCGX Modbus TCP Register List (Excel)
- Venus OS on GitHub
- MCP Protocol Specification
- Venus OS MQTT documentation
License
MIT
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





