Skip to main content
Glama
Victron VRM MCP Server

Victron VRM MCP Server

by gimi-q

Victron VRM MCP Server

A Model Context Protocol (MCP) server that provides read-only access to Victron VRM data.

Features

  • Read-only access to Victron VRM API v2

  • Complete implementation of all 41 GET endpoints

  • Supports comprehensive VRM monitoring:

    • User & authentication management

    • Installation discovery and search

    • Real-time system overview

    • Time-series statistics and forecasts

    • Aggregated energy totals

    • Alarms and warnings

    • Detailed diagnostics

    • 20+ widget endpoints for specific device data

    • Data export in CSV/Excel formats

    • GPS tracking for mobile installations

  • Full input validation and error handling

  • Rate limiting awareness (200 requests rolling window)

  • Comprehensive test coverage

Related MCP server: unofficial-solaredge-mcp

Installation

npm install
npm run build

Configuration

Set the following environment variables:

  • VRM_TOKEN (required): Your VRM personal access token

  • VRM_BASE_URL (optional): Default is https://vrmapi.victronenergy.com/v2

  • VRM_TOKEN_KIND (optional): Either Token (default) or Bearer

You can set these via shell env or a local .env file (auto‑loaded via dotenv). Example .env:

VRM_TOKEN=your-token-here
VRM_BASE_URL=https://vrmapi.victronenergy.com/v2
VRM_TOKEN_KIND=Token

Getting a VRM Token

  1. Log into VRM Portal

  2. Go to Preferences → Integrations → Access tokens

  3. Create a new personal access token

  4. Copy the token and set it as VRM_TOKEN

Usage

As MCP Server (stdio)

# Option A: env inline
VRM_TOKEN=your-token-here npm start

# Option B: use .env (recommended)
echo "VRM_TOKEN=your-token-here" > .env
npm start

Claude Desktop Configuration

Add to your Claude Desktop config:

{
  "mcpServers": {
    "vrm": {
      "command": "node",
      "args": ["/path/to/victron_vrm_mcp/dist/index.js"],
      "env": {
        "VRM_TOKEN": "your-token-here" // or omit if using .env alongside the binary
      }
    }
  }
}

Available Tools (41 Total)

Core Monitoring (8 tools)

  • vrm_get_user_me - Get current user information including user ID

  • vrm_list_installations - List all installations accessible to the user

  • vrm_get_system_overview - Get high-level system overview for a site

  • vrm_get_stats - Time-series statistics (venus, live_feed, consumption, kwh, solar_yield, forecast)

  • vrm_get_overall_stats - Aggregated totals for attribute codes over a period

  • vrm_get_alarms - Retrieve alarms for a site

  • vrm_get_diagnostics - Get most recent diagnostic datapoints

  • vrm_get_widget_graph - Widget graph data for specific device instances

Authentication & User Management (4 tools)

  • vrm_auth_login_as_demo - Login as demo account

  • vrm_auth_logout - Logout from current session

  • vrm_search_user_installations - Search through user's installations

Data Export & Downloads (5 tools)

  • vrm_download_installation_data - Download data in CSV/Excel formats with optional parsing

  • vrm_download_gps_data - Download GPS tracking data

  • vrm_get_installation_tags - Get installation tags and labels

  • vrm_get_custom_widget - Get custom widget configuration

  • vrm_get_dynamic_ess_settings - Get Dynamic ESS configuration

Widget State Monitoring (7 tools)

  • vrm_get_vebus_state - VE.Bus system state

  • vrm_get_inverter_charger_state - Inverter/charger operational state

  • vrm_get_charger_relay_state - Charger relay switching status

  • vrm_get_solar_charger_relay_state - Solar charger relay state

  • vrm_get_gateway_relay_state - Gateway relay state

  • vrm_get_gateway_relay_two_state - Secondary gateway relay state

  • vrm_get_status_widget - General system status

Warnings & Alarms (2 tools)

  • vrm_get_vebus_warnings_alarms - VE.Bus system warnings and alarms

  • vrm_get_inverter_charger_warnings_alarms - Inverter/charger warnings

Device Summaries (9 tools)

  • vrm_get_battery_summary - Battery voltage, current, SoC, health

  • vrm_get_solar_charger_summary - MPPT performance and yield

  • vrm_get_ev_charger_summary - EV charging status and power

  • vrm_get_global_link_summary - GlobalLink device summary

  • vrm_get_motor_summary - Motor drive RPM and power

  • vrm_get_pv_inverter_status - PV inverter AC output status

  • vrm_get_tank_summary - Tank levels and capacity

  • vrm_get_temp_summary_graph - Temperature sensors and graphs

  • vrm_get_dc_meter - DC power meter readings

Advanced Diagnostics (4 tools)

  • vrm_get_bms_diagnostics - BMS cell voltages and balancing

  • vrm_get_lithium_bms - Lithium battery BMS data

  • vrm_get_historic_data - Historic data trends

  • vrm_get_io_extender - IO extender digital/analog signals

System-Wide Information (3 tools)

  • vrm_get_data_attributes - System-wide data attributes

  • vrm_get_firmwares - Available firmware versions

  • vrm_get_reset_forecasts - Forecast reset timestamps

Example Usage in Claude

Once configured, you can ask Claude to:

  • "Show me my solar system's current status"

  • "What's my battery state of charge?"

  • "Download today's energy data as CSV"

  • "Check for any system alarms"

  • "Show me solar production for the last week"

  • "Get battery voltage trends"

  • "Export monthly energy totals"

Claude will use the appropriate VRM tools to fetch and analyze your Victron system data.

Development

# Run tests
npm test

# Run tests with UI
npm run test:ui

# Type checking
npm run typecheck

# Development mode with watch
npm run dev

Testing

The project includes comprehensive unit tests for:

  • Schema validation

  • VRM client functionality

  • MCP server integration

  • Error handling

  • Edge cases

Run tests with:

npm test

Security

  • Never logs tokens or sensitive data

  • Strict path allowlisting

  • Input validation on all tools

  • Read-only operations only

License

ISC

Available Tools

41 tools
vrm_auth_login_as_demoB

Login as a demo account to explore VRM functionality.

Inputs: no named parameters.

vrm_auth_logoutA

Logout from the current VRM session.

Inputs: no named parameters.

vrm_download_gps_dataC

Download GPS tracking data for mobile installations.

Inputs: siteId (required), start, end.

vrm_download_installation_dataC

Download installation data in various formats (CSV, Excel) with optional parsing for CSV.

Inputs: siteId (required), start, end, datatype, +2 more.

vrm_get_alarmsB

Check for any system alarms or alerts from your solar/battery installation. Supports historical time ranges to retrieve past alarms and warnings.

Inputs: siteId (required), activeOnly, page, pageSize, +4 more.

vrm_get_battery_summaryB

Get comprehensive battery summary including voltage, current, SoC, and health status.

Inputs: siteId (required), instance.

vrm_get_bms_diagnosticsB

Get Battery Management System diagnostics with cell voltages and balancing data.

Inputs: siteId (required), instance.

vrm_get_charger_relay_stateC

Get charger relay state and switching status.

Inputs: siteId (required), instance.

vrm_get_custom_widgetC

Get custom widget configuration for an installation.

Inputs: siteId (required).

vrm_get_data_attributesC

Get system-wide data attributes with filtering and sorting options.

Inputs: filter, sort, limit, offset.

vrm_get_dc_meterB

Get DC power meter readings with voltage, current, and power measurements.

Inputs: siteId (required), instance.

vrm_get_diagnosticsC

Get detailed diagnostic data and technical readings from your energy system devices.

Inputs: siteId (required), count, offset.

vrm_get_dynamic_ess_settingsB

Get Dynamic ESS (Energy Storage System) configuration settings.

Inputs: siteId (required).

vrm_get_ev_charger_summaryA

Get EV charger summary with charging status and power delivery.

Inputs: siteId (required), instance.

vrm_get_firmwaresC

Get available firmware versions and information.

Inputs: type, version.

vrm_get_gateway_relay_stateC

Get gateway relay state for remote switching control.

Inputs: siteId (required), instance.

vrm_get_gateway_relay_two_stateA

Get secondary gateway relay state for dual relay control.

Inputs: siteId (required), instance.

vrm_get_historic_dataC

Get historic data widget with time-series information and trends.

Inputs: siteId (required), instance.

vrm_get_installation_tagsB

Get tags and labels associated with an installation.

Inputs: siteId (required).

vrm_get_inverter_charger_stateB

Get inverter/charger state and operational status.

Inputs: siteId (required), instance.

vrm_get_inverter_charger_warnings_alarmsB

Get inverter/charger specific warnings and alarms.

Inputs: siteId (required), instance.

vrm_get_io_extenderC

Get IO extender input/output status for digital and analog signals.

Inputs: siteId (required), instance.

vrm_get_lithium_bmsB

Get Lithium battery BMS data with advanced cell monitoring and safety information.

Inputs: siteId (required), instance.

vrm_get_motor_summaryB

Get motor drive summary with RPM, power, and operational status.

Inputs: siteId (required), instance.

vrm_get_overall_statsA

Get aggregated energy totals (daily, monthly, yearly) for solar yield, consumption, battery performance, etc.

Inputs: siteId (required), attributeCodes (required), type, start, +1 more.

vrm_get_pv_inverter_statusA

Get PV inverter status with AC output and grid-tie information.

Inputs: siteId (required), instance.

vrm_get_reset_forecastsB

Get forecast reset timestamp for an installation.

Inputs: siteId (required).

vrm_get_solar_charger_relay_stateC

Get solar charger relay state and MPPT switching status.

Inputs: siteId (required), instance.

vrm_get_solar_charger_summaryB

Get solar charger summary with MPPT performance and yield data.

Inputs: siteId (required), instance.

vrm_get_statsC

Get time-series data for solar production, battery usage, consumption, energy yield, and forecasts over time.

Inputs: siteId (required), type (required), interval, start, +3 more.

vrm_get_status_widgetB

Get general system status information and operational state.

Inputs: siteId (required), instance.

vrm_get_system_overviewB

Get current status of your energy system including battery level, solar production, consumption, and grid usage.

Inputs: siteId (required).

vrm_get_tank_summaryB

Get tank sensor summary with fluid levels and capacity information.

Inputs: siteId (required), instance.

vrm_get_temp_summary_graphB

Get temperature sensor summary and historical graph data.

Inputs: siteId (required), instance.

vrm_get_user_meA

Get your VRM account information and user profile.

Inputs: no named parameters.

vrm_get_vebus_stateA

Get VE.Bus system state information including inverter and charger status.

Inputs: siteId (required), instance.

vrm_get_vebus_warnings_alarmsB

Get VE.Bus system warnings and alarms for troubleshooting. Supports historical time ranges to retrieve past warnings like overload events.

Inputs: siteId (required), instance, start, end.

vrm_get_widget_graphC

Get specific device performance graphs (battery voltage, inverter output, solar panel data, etc.).

Inputs: siteId (required), attributeCodes (required), instance (required).

vrm_list_installationsB

List all your Victron energy installations/sites (solar systems, batteries, etc.).

Inputs: idUser, extended.

vrm_search_user_installationsC

Search through user's installations with optional filters.

Inputs: idUser (required), query, limit.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 41 tools

    Disambiguation4/5

    Most tools target distinct subsystems (battery, solar charger, inverter, etc.), but a few like vrm_get_overall_stats, vrm_get_stats, vrm_get_system_overview, and vrm_get_status_widget have overlapping purposes that could cause confusion.

    Naming Consistency5/5

    All tools follow a consistent vrm_verb_noun pattern (e.g., vrm_get_battery_summary, vrm_list_installations, vrm_auth_login_as_demo), making the naming predictable and clear.

    Tool Count3/5

    With 41 tools, the server is on the heavy side for an MCP server, but the domain of energy system management justifies a larger surface. The count is borderline but still reasonable.

    Completeness2/5

    The tools are almost entirely read-only (get, list, search, download) with no write/control capabilities (e.g., update settings, control relays). This is a significant gap for a management server.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      An MCP server that enables natural language interaction with the MeteoControl VCOM API v2 for monitoring solar array installations. It allows users to retrieve real-time and historical energy data, system alerts, and detailed asset configuration metrics.
      4
      Apache 2.0
    • A
      license
      A
      quality
      C
      maintenance
      A lean Model Context Protocol (MCP) server that gives AI assistants like Claude structured access to a SolarEdge PV installation via the official SolarEdge Monitoring API.
      4
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      MCP server that connects to Felicity Solar cloud battery data, allowing natural language queries about battery status, cell voltages, and charge state.
      17
      54 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A read-only MCP server that monitors a Nerdaxe Gamma solo miner over its local REST API, providing tools for miner status, pool and shares, hardware health, and device info.
      MIT