MCP server for Fronius solar inverters — real-time PV, battery, and grid data in Claude
Project description
fronius-mcp
Real-time solar data from your Fronius inverter, directly in Claude.
Ask things like:
"How much solar power am I generating right now?"
"What's my battery charge level?"
"Am I currently importing or exporting to the grid?"
"How much energy did I produce this year?"
"What can you do with my solar system?"
"Analyse my photovoltaics for me."
Connects to the Fronius Solar API v1 directly on your local network — no cloud account, no subscription, no data leaving your home.
How it works
fronius-mcp is a Model Context Protocol (MCP) server. MCP is an open standard that lets AI assistants like Claude connect to external tools and data sources. Once configured, Claude can call your inverter's local API in real time — whenever you ask a question about your solar system, Claude fetches live data and answers based on what's actually happening right now.
Requirements
- A Fronius inverter on your local network with the Solar API (JSON API) enabled
- Claude Desktop
uv— a fast Python package manager (one-line install)
Setup
1. Install uv
uv is a fast Python package manager used to run fronius-mcp without a permanent install.
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
Restart your terminal after installing.
2. Add to Claude Desktop
Open your claude_desktop_config.json and add the fronius block inside mcpServers:
{
"mcpServers": {
"fronius": {
"command": "uvx",
"args": ["fronius-mcp"]
}
}
}
Config file location:
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Windows (Store app) | %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json |
Tip: If the
mcpServerskey already exists, just add thefroniusblock inside it — don't create a secondmcpServers.
3. Restart Claude Desktop
Close and reopen Claude Desktop so it picks up the new server config.
4. Configure your inverter
In a new Claude conversation, say:
"Configure my Fronius inverter at 192.168.178.35"
Claude will save your inverter's IP and confirm the connection. This is a one-time step — the address is stored in ~/.fronius-mcp.json and persists across restarts.
Don't know your inverter's IP? Tell Claude: "I want to configure my Fronius inverter but I don't know the IP." Claude will walk you through finding it via your router, Fronius Solar.web, or the inverter's touch display — and how to enable the Solar API in the inverter's web interface if you haven't done that yet.
What you can ask
Once set up, just talk to Claude naturally. Some examples:
- "What's my current solar output?" — live PV generation in watts
- "How self-sufficient am I right now?" — autonomy and self-consumption percentages
- "Is my battery charging or discharging?" — battery power flow and state of charge
- "How much have I fed into the grid today?" — energy totals from the smart meter
- "What devices are connected to my inverter?" — full system topology
- "Give me a full overview of my solar system." — Claude combines all data sources into a summary
Tools
| Tool | What it does |
|---|---|
configure_inverter |
Set your inverter's IP address — run this once on first setup |
solar_power_flow |
PV generation, grid exchange, house load, battery power, autonomy, energy totals |
solar_meter |
Grid power per phase, cumulative energy in/out, voltage, current, frequency |
solar_battery |
State of charge, voltage, current, temperature, capacity, status |
solar_devices |
All connected devices with type, bus index, and serial number |
Compatible Hardware
Developed and tested on:
- Fronius Symo GEN24 10.0 Plus
- BYD Battery-Box Premium HV (13.824 kWh)
- Fronius Smart Meter (grid feed-in point, 3-phase)
Other Fronius inverters with Solar API v1 support should work. Some API endpoints behave differently across models — if something doesn't work on your hardware, open an issue.
License
Apache 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fronius_mcp-0.1.2.tar.gz.
File metadata
- Download URL: fronius_mcp-0.1.2.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
523980da1e9a111f4a3382c614601c9afacf0784f752da5c76ffc352324f4192
|
|
| MD5 |
7e5d05c364e0cc99aa08d68ea78890d8
|
|
| BLAKE2b-256 |
a03aa482df255c3f70fd35cdd2e617be8d8ab3b3adaef86f102ac92d3fa24e56
|
File details
Details for the file fronius_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fronius_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05db483e1925d667e3893c251efa17241088b72e90093f4722118df6cd476208
|
|
| MD5 |
a74debd7c1592ba3e9d793e4c81fed4b
|
|
| BLAKE2b-256 |
18508e864e54a90b435bb8e0c65fde19713890d2def809283c5216dfc567a9ae
|