Powerline
Uses Amazon Bedrock Converse API to generate spoken evening power briefings when configured.
Connects to the Victron Energy VRM Portal to read live solar, load, battery, and grid telemetry for power status monitoring and forecasts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PowerlineCan I run the dishwasher for the next hour?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Powerline — Alexa+ home power copilot
Build, Ship, Shape: Amazon Developer Hackathon 2026 · Alexa+ track · AWS Builder + Open Source mini-challenges
Millions of households on unreliable grids make power decisions by guesswork: Can I run the iron? Will the battery last the night? When is grid coming back? Powerline makes the inverter conversational. It is a stateful Streamable HTTP MCP server (spec 2025-11-25) that knows the household's solar array, battery, inverter and learned grid pattern, answers "can I run X?" with a real forecast, and renders an interactive MCP App dashboard card inline in the conversation.
Supported inverter platforms: Growatt (ShinePhone API token) and Victron Energy (VRM Portal access token). A built-in simulator runs without any hardware.
Quick start
npm install
npm run build # bundles the MCP App card + compiles the server
npm start # simulator; MCP endpoint at http://127.0.0.1:3000/mcp
npm run smoke # (second terminal) full protocol round-trip through every tool + alert stream
# to see an alert during smoke: SIM_START_SOC=29 SIM_CLOCK_START=2026-09-09T20:30:00Z ALERT_INTERVAL_MS=2000 npm start
npm test # forecast-engine testsLive telemetry:
# Victron — your own site (VRM Portal → Preferences → Integrations → Access tokens)
POWER_SOURCE=victron VRM_TOKEN=... VRM_SITE_ID=123456 npm start
# Victron — public demo site, no account needed
POWER_SOURCE=victron VRM_DEMO=1 VRM_SITE_ID=219742 npm start
# Growatt (ShinePhone → Me → username → API Token; app-generated tokens are most reliable)
POWER_SOURCE=growatt GROWATT_TOKEN=... npm startConnect any Streamable-HTTP + MCP-Apps client (Claude Desktop/claude.ai custom connector, VS Code, MCPJam,
Postman, Goose) to /mcp. For a public URL use ngrok http 3000 and set HOST=0.0.0.0.
Related MCP server: Home Assistant MCP Server
Tools
Tool | Say | Returns |
| "How's the power?" | Solar / load / battery / grid + 24 h battery forecast. Dashboard card. |
| "Can I run the iron for 30 minutes?" | Yes / not now, projected SOC, best start time today. |
| "Power briefing" | One spoken paragraph (Amazon Bedrock when configured). |
| "Set up my solar" | Stores array kW, battery kWh, inverter kW, reserve %. Persists across sessions. |
| "Remember the washing machine is 500 watts" | Appliances by name for planning. |
| "Plan my power for today" | Schedules all known appliances into the next 24 h, solar-surplus first. Interactive planner card — tick/untick appliances and the plan re-runs live. |
| "Grid just went off" | Feeds the learned per-weekday grid-availability pattern. |
Server-initiated alerts. Each session runs a monitor (src/alerts.ts) that pushes MCP notifications/message
over the Streamable HTTP GET stream when the battery drops within 10 points of the reserve, reaches it, or the grid
flips — no client request needed. Grid flips are also logged into the learned pattern automatically.
How it works
Alexa+ / MCP client ──Streamable HTTP (sessions, SSE)──▶ src/http.ts
└─ src/server.ts tools + ui:// resource
├─ src/forecast.ts SOC integration, can_i_run, plan_day, grid learning
├─ src/alerts.ts server→client alerts on the GET SSE stream
├─ src/store.ts per-household state (survives sessions)
├─ src/telemetry/ sim | victron (VRM v2) | growatt (OpenAPI v1)
├─ src/bedrock.ts Converse API briefing (AWS Builder)
└─ src/ui/*.html MCP App cards: dashboard + planner (Vite → single HTML)Forecast engine (src/forecast.ts, pure functions, tested): net = pv + grid − load, SOC integrated at
15-minute steps over the battery capacity and clamped; the grid covers deficits only when available.
can_i_run re-runs the forecast with the appliance added and, if the reserve would be breached, scans the
next 24 h for the earliest slot that either keeps SOC above the reserve or runs entirely on PV surplus.
Grid availability is learned from logged on/off events, binned per weekday-hour.
Telemetry adapters implement one interface (src/telemetry/types.ts) returning
{pv_w, load_w, battery_w, soc_pct, grid_w, grid_available}. Adding a brand is one file.
Victron VRM — one
stats?type=customcall (Pdc,ac_loads,bp,bs,gp). Tested live against the VRM demo installation (VRM_DEMO=1).Growatt OpenAPI v1 —
plant/list → device/list → mix_last_data | tlx_last_data. Implemented from the official docs and community libraries; field names vary by model, so the raw payload is retained for inspection. Verify against a live unit and log mismatches inFRICTION_LOG.md.
Prior art: a read-only Victron VRM MCP server wraps the VRM API 1:1. Powerline is not an API wrapper — the value is the forecast, the decision tools, cross-session household memory, multi-vendor telemetry, and the interactive card.
Environment
Var | Default | Notes |
|
|
|
| localhost only | comma-separated browser origins |
|
| household store |
|
| stand-in for authenticated identity |
|
|
|
|
| simulator; speed = sim-seconds per real second |
|
| simulator starting SOC and ISO clock start (for demos at "night") |
|
| alert poll interval; repeat while condition persists |
| — | Victron |
| — | Growatt (type 5 = SPH, 7 = MIN) |
| unset = disabled | e.g. |
Roadmap (hackathon window)
Streamable HTTP sessions, MCP App dashboard, forecast engine, Victron + Growatt + sim adapters
plan_dayinteractive planner card (toggle appliances → re-plans viacallServerTool)Server-initiated low-battery / grid alerts over the GET SSE stream
Per-household timezone (currently Africa/Lagos)
Bedrock briefing enabled + documented; DynamoDB store option
Demo video < 3 min, product feedback, friction log
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Unofficial integration! ## ✨ Key Features ### 💰 Financial Intelligence - **Smart Charging Cost An…
Solar, weatherization, EV charging, battery and heat-pump decision tools for AI agents.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
- mytesla.ioOAuthio.mytesla
Control your Tesla from your AI assistant - climate, charging, access, and security.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control and monitor Home Assistant smart home devices through natural language interactions. Supports device control, entity state monitoring, history access, and automation generation with both MCP protocol and standalone HTTP REST API modes.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Home Assistant smart home devices through natural language. Control devices, manage automations, query entity states, and retrieve historical data across your home automation system.1MIT
- AlicenseAqualityAmaintenanceConnect AI assistants to Victron Energy systems to read real-time solar, battery, grid, and inverter data from your local network via Modbus TCP or MQTT.3224 npm3MIT
- AlicenseAqualityCmaintenanceEnables access to Fronius solar inverter data via the MCP protocol, allowing real-time monitoring of energy production, consumption, and battery storage through natural language.148 npm4MIT