A Model Context Protocol (MCP) server that provides read-only access to Victron VRM data.
- 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
npm install
npm run buildSet the following environment variables:
VRM_TOKEN(required): Your VRM personal access tokenVRM_BASE_URL(optional): Default ishttps://vrmapi.victronenergy.com/v2VRM_TOKEN_KIND(optional): EitherToken(default) orBearer
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
- Log into VRM Portal
- Go to Preferences → Integrations → Access tokens
- Create a new personal access token
- Copy the token and set it as
VRM_TOKEN
# Option A: env inline
VRM_TOKEN=your-token-here npm start
# Option B: use .env (recommended)
echo "VRM_TOKEN=your-token-here" > .env
npm startAdd 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
}
}
}
}vrm_get_user_me- Get current user information including user IDvrm_list_installations- List all installations accessible to the uservrm_get_system_overview- Get high-level system overview for a sitevrm_get_stats- Time-series statistics (venus, live_feed, consumption, kwh, solar_yield, forecast)vrm_get_overall_stats- Aggregated totals for attribute codes over a periodvrm_get_alarms- Retrieve alarms for a sitevrm_get_diagnostics- Get most recent diagnostic datapointsvrm_get_widget_graph- Widget graph data for specific device instances
vrm_auth_login_as_demo- Login as demo accountvrm_auth_logout- Logout from current sessionvrm_search_user_installations- Search through user's installations
vrm_download_installation_data- Download data in CSV/Excel formats with optional parsingvrm_download_gps_data- Download GPS tracking datavrm_get_installation_tags- Get installation tags and labelsvrm_get_custom_widget- Get custom widget configurationvrm_get_dynamic_ess_settings- Get Dynamic ESS configuration
vrm_get_vebus_state- VE.Bus system statevrm_get_inverter_charger_state- Inverter/charger operational statevrm_get_charger_relay_state- Charger relay switching statusvrm_get_solar_charger_relay_state- Solar charger relay statevrm_get_gateway_relay_state- Gateway relay statevrm_get_gateway_relay_two_state- Secondary gateway relay statevrm_get_status_widget- General system status
vrm_get_vebus_warnings_alarms- VE.Bus system warnings and alarmsvrm_get_inverter_charger_warnings_alarms- Inverter/charger warnings
vrm_get_battery_summary- Battery voltage, current, SoC, healthvrm_get_solar_charger_summary- MPPT performance and yieldvrm_get_ev_charger_summary- EV charging status and powervrm_get_global_link_summary- GlobalLink device summaryvrm_get_motor_summary- Motor drive RPM and powervrm_get_pv_inverter_status- PV inverter AC output statusvrm_get_tank_summary- Tank levels and capacityvrm_get_temp_summary_graph- Temperature sensors and graphsvrm_get_dc_meter- DC power meter readings
vrm_get_bms_diagnostics- BMS cell voltages and balancingvrm_get_lithium_bms- Lithium battery BMS datavrm_get_historic_data- Historic data trendsvrm_get_io_extender- IO extender digital/analog signals
vrm_get_data_attributes- System-wide data attributesvrm_get_firmwares- Available firmware versionsvrm_get_reset_forecasts- Forecast reset timestamps
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.
# Run tests
npm test
# Run tests with UI
npm run test:ui
# Type checking
npm run typecheck
# Development mode with watch
npm run devThe project includes comprehensive unit tests for:
- Schema validation
- VRM client functionality
- MCP server integration
- Error handling
- Edge cases
Run tests with:
npm test- Never logs tokens or sensitive data
- Strict path allowlisting
- Input validation on all tools
- Read-only operations only
ISC