trackmcp
Back to directory
lubosstrejcek

victron-tcp

View on GitHub

MCP server for Victron GX devices — real-time solar, battery, grid, and inverter data over Modbus TCP + MQTT. Local LAN, no cloud.

3 stars TypeScriptOthers Updated Aug 14, 2026
batteryenergymcpmodbusmodel-context-protocolmqttsolarvenus-osvictron

Documentation

Victron TCP — MCP Server

Connect AI assistants to Victron Energy systems. Read real-time solar, battery, grid, and inverter data from your local network — no cloud required.

> 32 tools | 23 prompts | 2 resources | 900+ registers | Modbus TCP + MQTT


Which package do I want?

This is the local / LAN half of a pair. The remote / cloud half is **`victron-vrm-mcp`**.

`victron-tcp` (this repo)**`victron-vrm-mcp`**
Transportstdio (local subprocess)Streamable HTTP (remote)
Data sourceModbus TCP + MQTT on your LANVRM cloud API
Needs access to the GX on your LANYesNo
Works when you're away from the boat / houseNoYes
Works when the internet is downYesNo
LatencyReal-time (~50 ms)~15 min (VRM sampling)
Raw register accessYes (900+ registers)No
Write coverage (planned)Broad — anything D-Bus exposesNarrow — only what VRM sanctions remotely (Dynamic ESS, clear-alarm, tags, …)
MCP Connector API compatibleNo (stdio)Yes (HTTPS)
ClientsClaude Code, Claude Desktop, Cursor, WindsurfAnthropic Messages API + anything that speaks MCP over HTTP
AuthNone locally (trusts LAN)Per-request VRM personal access token

Use this package when: you're on the same LAN as a GX device and want real-time, low-latency read access with raw-register support.

Use `victron-vrm-mcp` when: you need remote access, you're building an API-backed app via the MCP Connector, or you don't want to expose anything on your LAN.

You can use both simultaneously — they serve different use cases and carry different risk profiles.


Installation

Claude Code

bash
claude mcp add-json victron-tcp '{"type":"stdio","command":"npx","args":["-y","victron-tcp"]}'

Claude Desktop / Cursor / Windsurf

json
{
  "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"
      }
    }
  }
}

Don't know your device IP?

Just ask the AI:

code
Find my Victron GX device on the network and set it up.

It will scan your network, test connectivity, and generate the config for you.

Requirements

  • Victron GX device on your local network (Ekrano, Cerbo, Venus GX, etc.)
  • MQTT (enabled by default on Venus OS) or Modbus TCP (Settings → Services → Modbus TCP)
  • Node.js 18+

What you can do

Energy Reporting

PromptWhat it does
`hourly-snapshot`Quick power flow snapshot — SOC, PV, grid, load
`daily-report`Production, consumption, self-consumption ratio, grid dependency
`weekly-review`Yield trends, battery health, load patterns, scheduling tips
`monthly-analysis`Energy balance, cost savings, battery aging, seasonal comparison

Energy Optimization

PromptWhat it does
`energy-optimizer`AI-driven tuning — choose goal: self-consumption, cost savings, battery longevity, backup readiness, or balanced
`ess-tuning`Review ESS mode, grid setpoint, battery limits, Dynamic ESS
`storm-prep`Pre-outage readiness check

Monitoring & Troubleshooting

PromptWhat it does
`diagnose-system`Full health check with alarm scan
`solar-performance`PV yield analysis, tracker comparison, shading detection
`troubleshoot`Guided debugging with error code lookup
`tank-monitor`Fuel, water, waste levels (marine/RV/off-grid)
`generator-management`Auto-start conditions, runtime, quiet hours

Device Discovery

PromptWhat it does
`setup-guide`First-time setup wizard
`find-devices`Scan network, discover all GX devices and their connected devices
`identify-device`"What is unit ID 247?" — identify any device
`system-topology`Map AC/DC buses, connections, energy flow paths
`device-inventory`Full device table for documentation or support
`register-explorer`Browse registers, explain types and scale factors
`firmware-check`Firmware versions across all devices

For Installers

PromptWhat it does
`commissioning`New system checklist — inventory, wiring, config, pass/fail
`site-audit`Communication, alarms, measurements, performance audit

Integration

PromptWhat it does
`nodered-check`Node-RED on Venus OS — MQTT topics, flow debugging
`mqtt-debug`Broker connectivity, topic tracing, keepalive debugging

Tools Reference

Core Monitoring (9 tools)

ToolDescription
`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: power, status, session energy

Extended Devices (14 tools)

ToolDescription
`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 (4 tools)

ToolDescription
`victron_network_scan`Scan local network to find GX devices
`victron_setup`Full setup: test transports, discover devices, generate config
`victron_mqtt_discover`Auto-discover MQTT portal ID, services, device instances
`victron_discover`Scan Modbus unit IDs to find connected devices

Utility & Documentation (5 tools)

ToolDescription
`victron_read_category`Read all registers for any device category
`victron_read_register`Read raw register(s) by address (Modbus only)
`victron_list_registers`List available registers for a device category
`victron_search_docs`Search offline docs (registers + VRM API)
`victron_check_online`Get URLs for latest Victron docs

Resources

URIContent
`victron://register-list`CCGX Modbus TCP register list (Rev 3.71) — 943 registers
`victron://unit-id-mapping`Device type to unit ID mapping

Configuration

Environment Variables

All optional. Set them to avoid repeating parameters on every tool call.

VariableDefaultDescription
`VICTRON_HOST`_(none)_GX device IP or hostname
`VICTRON_TRANSPORT``modbus``modbus` or `mqtt`
`VICTRON_PORTAL_ID`_(auto)_Portal ID for MQTT
`VICTRON_MODBUS_PORT``502`Modbus TCP port
`VICTRON_MQTT_PORT``1883`MQTT broker port
`VICTRON_UNIT_ID``100`Default Modbus unit ID

Remote usage (MCP Connector API)

This package speaks stdio, which the Anthropic MCP Connector API cannot reach directly (Connector needs HTTPS). For cloud-backed remote access, use the sibling package `victron-vrm-mcp`.

If you really need the Connector API to reach *this* package (e.g. to use raw register reads remotely), you'd put it behind your own HTTPS gateway that speaks Streamable HTTP upstream and spawns `victron-tcp` downstream — not recommended for typical use.


Debugging

The MCP Inspector is the fastest way to poke at the server interactively.

bash
# Inspect a locally-built server
npm run inspect

# Inspect the published npm package as users would run it
npm run inspect:npm

Both open a browser-based UI where you can call tools, view structured content, and watch the notification stream. Logs go to stderr (stdout is reserved for the JSON-RPC stream on stdio transport — never write to stdout).

For Claude Desktop specifically, MCP server logs land in `~/Library/Logs/Claude/mcp-server-victron-tcp.log` (macOS) or `%APPDATA%\Claude\logs\mcp-server-victron-tcp.log` (Windows). See the spec's debugging guide for a full walkthrough.


Documentation

GuideContent
SetupClient configs, transport comparison, unit IDs, supported devices
ExamplesReal-world prompts with step-by-step AI behavior
TroubleshootingCommon errors and fixes
FAQFrequently asked questions
ArchitectureCode structure, register map, how it works
SecuritySecurity model, data sensitivity, network exposure

Roadmap

  • [ ] Write support — ESS mode control, grid setpoint, charge current limits, relay control (via MQTT `W/` topics)
  • [x] MCP Resources — register list + unit ID mapping (VRM API spec moved to `victron-vrm-mcp`)
  • [x] MCP Prompts — 23 guided workflows
  • [x] NPM package (`npx victron-tcp`)
  • [x] Sibling package for VRM cloud access — `victron-vrm-mcp`

References

License

MIT

Frequently asked questions

What is victron-tcp?

victron-tcp is MCP server for Victron GX devices — real-time solar, battery, grid, and inverter data over Modbus TCP + MQTT. Local LAN, no cloud.

How do I install victron-tcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is victron-tcp open source?

Yes — it is hosted on GitHub at https://github.com/lubosstrejcek/victron-tcp and has 3 stars.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP