Skip to main content
Glama
aiseg2-mcp

aiseg2-mcp

by chanyou0311

aiseg2-mcp

日本語版は README.ja.md をご覧ください。

An unofficial, read-only Model Context Protocol server for the Panasonic AiSEG2 home energy management (HEMS) controller. It lets an MCP client (e.g. Claude) read your home's live power flow, per-circuit consumption, circuit names, and daily energy totals from the AiSEG2's local web interface.

This project is not affiliated with or endorsed by Panasonic. "AiSEG" is a Panasonic trademark.

Verified environment

Developed and tested against:

  • AiSEG2 model MKN713 series

  • Firmware Ver.2.97I-01

The AiSEG2 web interface is undocumented and changes between firmware revisions. On a different model or firmware the pages this server scrapes may differ and some tools may not work. If you hit a parse error, please open an issue with your model / firmware version.

Related MCP server: emoncms-mcp-server

Tools

All tools are read-only (annotated readOnlyHint, non-destructive, with a human-readable title). The server only issues GETs and the display-only refresh POSTs the web UI itself uses; it never touches settings or any /action/ endpoint.

Every result carries as_of (ISO 8601, UTC): when the server read the values from the AiSEG2, or for the two history tools, when the SD-card export behind them was downloaded.

Tool

Title

Returns

get_power_flow

Current power flow

Instantaneous generation/consumption (kW), buy/sell state, battery status, generation sources, top consuming circuits

get_circuit_breakdown

Current power by circuit

Every measured circuit's instantaneous draw (W), ranked highest first, with the total

list_circuits

Registered circuits

Registered circuit ids and names (the authoritative naming source)

get_daily_totals

Today's energy totals

Today's cumulative generation / consumption / grid-buy / grid-sell (kWh)

get_history

Energy history

Long-term energy history from the SD-card export (Wh), long-form points. Args: granularity (30min/hour/day/month/year), start/end (per granularity: YYYY-MM-DD, YYYY-MM, or YYYY), optional metrics/circuits filters, limit/offset paging

get_cost_history

Energy cost history

Long-term energy-cost history from the SD-card export (JPY). Args: granularity (day/month/year), start/end, limit/offset

The two history tools require an SD card inserted in the AiSEG2 — they read the device's SD-card CSV export. The export is downloaded once and cached (see AISEG_CACHE_DIR / AISEG_CACHE_TTL), so the first call is slow and later calls are fast.

Install & run

Three ways to run it, depending on your setup.

1. uvx (PyPI — once published)

The simplest option for a local (stdio) MCP client. Requires uv.

AISEG_URL=http://192.168.0.216 AISEG_PASSWORD=... uvx aiseg2-mcp

Add it to Claude Code:

claude mcp add aiseg2 \
  --env AISEG_URL=http://192.168.0.216 \
  --env AISEG_PASSWORD=your-digest-password \
  -- uvx aiseg2-mcp

2. docker run (GHCR)

The container defaults to the streamable-http transport (long-lived network service). Only expose it behind an authenticating proxy — see Security.

docker run --rm -p 8000:8000 \
  -e AISEG_URL=http://192.168.0.216 \
  -e AISEG_PASSWORD=your-digest-password \
  ghcr.io/chanyou0311/aiseg2-mcp:latest

3. From source

Requires Python 3.12+ and uv.

uv sync
AISEG_URL=http://192.168.0.216 AISEG_PASSWORD=... uv run aiseg2-mcp

Remote (authenticated claude.ai Custom Connector)

To reach the server from claude.ai while your AiSEG2 stays on your LAN, see examples/remote/ — a Docker Compose stack (MCP + GitHub-OAuth proxy + Cloudflare Tunnel).

Running the image

This repo's job ends at pushing the image to GHCR. Where and how it actually runs (Kubernetes manifests, etc.) is defined elsewhere — for the maintainer's own deployment, in fumo-infra. The table below is the contract another system builds against to run this image.

Image & tags

ghcr.io/chanyou0311/aiseg2-mcp:sha-<7hex> on every push to main (created timestamp = the source commit's time, not the build time); a vX.Y.Z release tag additionally publishes X.Y.Z, X.Y, and latest

Listens on

8000/tcp — streamable-http MCP endpoint at /mcp

Health checks

liveness: GET /health; readiness: TCP connect on port 8000

Required env

AISEG_URL, AISEG_PASSWORD (secret)

Optional env (default)

AISEG_USER (aiseg), AISEG_TRANSPORT (streamable-http — set as an image-level ENV; the package's own default, e.g. when run via uvx, is stdio), AISEG_HOST (0.0.0.0), AISEG_PORT (8000), AISEG_DISABLE_DNS_REBINDING_PROTECTION (false), AISEG_CACHE_DIR (<tempdir>/aiseg2-mcp-cache), AISEG_CACHE_TTL (3600), LOG_LEVEL (info) — see Configuration below for details

There is no deployment definition (Kubernetes manifests) in this repo.

Configuration (environment variables)

Variable

Required

Default

Description

AISEG_URL

yes

—

AiSEG2 base URL, e.g. http://192.168.0.216 (http only)

AISEG_PASSWORD

yes

—

HTTP Digest password for the AiSEG2 web UI

AISEG_USER

no

aiseg

HTTP Digest user

AISEG_TRANSPORT

no

stdio

stdio or streamable-http

AISEG_HOST

no

0.0.0.0

Bind host (streamable-http only)

AISEG_PORT

no

8000

Bind port (streamable-http only)

AISEG_DISABLE_DNS_REBINDING_PROTECTION

no

false

Disable the Host allowlist (by default only localhost / 127.0.0.1 / [::1] Host headers are accepted) — only behind a trusted auth proxy

AISEG_CACHE_DIR

no

<tempdir>/aiseg2-mcp-cache

Where the SD-card history export is cached

AISEG_CACHE_TTL

no

3600

Seconds to reuse a cached history export before re-downloading

LOG_LEVEL

no

info

Log level

Security

  • LAN-only by design. The AiSEG2 speaks plain HTTP with Digest auth; keep it and this server on a trusted local network. The password is read from the environment and is never logged.

  • Read-only. There is no tool that changes a device setting. The tool surface is enforced by tests (registered-tool allowlist, tool-name guard, a source scan for /action/, and read-only annotation checks).

  • Do not expose the streamable-http transport to untrusted networks without authentication. This server carries no auth of its own; if you run it as a network service, put an authenticating reverse proxy in front of it. AISEG_DISABLE_DNS_REBINDING_PROTECTION=true is only appropriate in that proxied setup.

Acknowledgements

The AiSEG2 web interface is undocumented; this project builds on the reverse-engineering knowledge shared by prior work:

License

MIT

Available Tools

6 tools
get_circuit_breakdownA
Read-onlyIdempotent

Read-only. Get the instantaneous power draw of every measured circuit, ranked highest first.

Pages through the AiSEG2's circuit list and returns each circuit's rank, name and watts, plus
the total measured watts and how many device pages were read. Circuit names here are
display-derived (they may wrap); list_circuits() is the authoritative name source.

Inputs: no named parameters. Returns: Per-circuit instantaneous consumption, paged out of the AiSEG2 and stitched tog…

get_cost_historyA
Read-onlyIdempotent

Read-only. Query the AiSEG2's long-term energy-cost history from the SD-card export (JPY).

Requires an SD card inserted in the AiSEG2. Shares the same cached download as get_history.
Returns long-form cost points ({timestamp, metric, value}) with values in Japanese yen.

Args:
    granularity: "day" takes start/end as YYYY-MM-DD; "month" as YYYY-MM; "year" as YYYY.
    start: Range start (inclusive), formatted per the granularity.
    end: Range end (inclusive), formatted per the granularity.
    limit: Maximum number of series points to return (default 200).
    offset: Number of points to skip (for pagination).

Inputs: end (required), start (required), granularity (required), limit, +1 more. Returns: A paginated slice of long-term series data. ``unit`` distinguishes energy (Wh)…

get_daily_totalsA
Read-onlyIdempotent

Read-only. Get today's cumulative energy totals (kWh) as of the AiSEG2's current day.

Returns generation, consumption, grid-buy and grid-sell totals for the day. Any meter the device reports as unavailable ("-") comes back as null.

Inputs: no named parameters. Returns: Today's cumulative energy totals in kWh (as of the AiSEG2's current day).

get_historyA
Read-onlyIdempotent

Read-only. Query the AiSEG2's long-term energy history from its SD-card export (values in Wh).

Requires an SD card inserted in the AiSEG2. The export is downloaded once and cached, so the
first call is slow and later calls are fast. Returns long-form points ({timestamp, metric,
value}); use limit/offset to page (limit caps the number of returned points).

Args:
    granularity: Time resolution. "30min"/"hour"/"day" take start/end as YYYY-MM-DD; "month"
        takes YYYY-MM; "year" takes YYYY.
    start: Range start (inclusive), formatted per the granularity.
    end: Range end (inclusive), formatted per the granularity.
    metrics: Optional filter by standard series keys (e.g. "generation_pv1", "grid_buy",
        "grid_sell", "battery_charge", "battery_discharge", "ev_charge") or their Japanese
        header names. Omit for all series.
    circuits: Optional filter by circuit name (see list_circuits). Omit for all circuits.
    limit: Maximum number of series points to return (default 200).
    offset: Number of points to skip (for pagination).

Inputs: end (required), start (required), granularity (required), limit, +3 more. Returns: A paginated slice of long-term series data. ``unit`` distinguishes energy (Wh)…

get_power_flowA
Read-onlyIdempotent

Read-only. Get the AiSEG2's instantaneous whole-home power flow right now.

Returns current generation and consumption (kW), whether the home is buying or selling grid power, storage-battery status if a battery is connected, the per-source generation breakdown, and the top consuming circuits at this moment.

Inputs: no named parameters. Returns: The instantaneous whole-home power flow (the AiSEG2 "electric flow" screen).

list_circuitsA
Read-onlyIdempotent

Read-only. List the registered measurement circuits with their stable ids and names.

This is the AUTHORITATIVE source of circuit naming (from the device's installation settings).
The names in get_circuit_breakdown() are display-derived and may differ (line wraps); prefer
these when you need a canonical circuit name.

Inputs: no named parameters. Returns: The registered circuit names — the authoritative source of circuit naming.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.7/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct aspect: instantaneous overview, per-circuit draw, canonical names, daily totals, historical energy, and historical cost. The only slight overlap is get_power_flow's top circuits vs get_circuit_breakdown, but descriptions clearly differentiate summary versus full detail.

    Naming Consistency5/5

    All tools use snake_case verb_noun patterns: get_ for data retrieval and list_ for enumerating resources. The naming is consistent and predictable, following a clear convention.

    Tool Count5/5

    6 tools is well-scoped for a read-only energy monitoring API. Each tool provides a distinct piece of data without being redundant or overwhelming.

    Completeness5/5

    The tool set covers current status, per-circuit breakdown, canonical circuit list, daily cumulative totals, long-term history, and cost history. For a monitoring-focused server, this is complete and leaves no obvious dead ends.

    Maintenance

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      An MCP server for the Octopus Energy Japan GraphQL API that allows users to retrieve electricity consumption, cost estimates, and contract details. It enables 30-minute interval usage analysis and postal code area searches while ensuring privacy by excluding personal address information.
      3
      20 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for EmonCMS energy monitoring API, enabling AI assistants to query energy feeds, inputs, and historical data.
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Unofficial MCP server for the messdienst24.de utility portal, providing tools to retrieve heating and hot-water consumption data, download PDF reports, and compare usage trends.
      3
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Read-only MCP server integrating with the Victron VRM API to monitor solar systems, batteries, alarms, and more.
      41
      22 npm
      6
      MIT