Skip to main content
Glama
Alpha ESS MCP Server

Alpha ESS MCP Server

by michaelkrasa

Alpha ESS MCP Server

A Model Context Protocol (MCP) server that provides access to Alpha ESS solar inverter and battery system data through the official Alpha ESS Open API.

Installation

uv sync

Related MCP server: solax-cloud-mcp

Configuration

Create a .env file in the project root:

ALPHA_ESS_APP_ID=your_app_id_here
ALPHA_ESS_APP_SECRET=your_app_secret_here

To get your Alpha ESS API credentials:

  1. Visit https://open.alphaess.com/

  2. Create a developer account

  3. Add your inverter system using the Serial Number (SN) and CheckCode

  4. Obtain your AppID and AppSecret

Usage with Claude Desktop

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "alpha-ess": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "/path/to/alpha-ess-mcp-server/main.py"
      ],
      "env": {
        "ALPHA_ESS_APP_ID": "your_app_id_here",
        "ALPHA_ESS_APP_SECRET": "your_app_secret_here"
      }
    }
  }
}

Available Tools

Authentication & System Management

  • authenticate_alphaess() - Validate API credentials

  • get_ess_list() - List all registered Alpha ESS systems

Data Retrieval

  • get_alpha_ess_data() - Get comprehensive energy statistics for all systems

  • get_last_power_data(serial?) - Get real-time power data snapshot

  • get_one_day_power_data(query_date, serial?) - Get detailed power data for a specific date

  • get_one_date_energy_data(query_date, serial?) - Get energy summary for a specific date

Battery Configuration

  • get_charge_config(serial?) - Get current battery charging configuration

  • get_discharge_config(serial?) - Get current battery discharge configuration

  • set_battery_charge(enabled, dp1_start, dp1_end, dp2_start, dp2_end, charge_cutoff_soc, serial?) - Configure battery charging schedule

  • set_battery_discharge(enabled, dp1_start, dp1_end, dp2_start, dp2_end, discharge_cutoff_soc, serial?) - Configure battery discharge schedule

Parameters

  • serial (optional) - System serial number. If not provided, automatically selects the first system if only one exists

  • query_date - Date in YYYY-MM-DD format

  • enabled - Boolean to enable/disable the configuration

  • dp1_start/dp1_end, dp2_start/dp2_end - Time periods in HH:MM format (minutes must be :00, :15, :30, :45)

  • charge_cutoff_soc/discharge_cutoff_soc - SOC percentage (0-100)

Testing

uv run python test_methods.py

License

MIT License

References

Available Tools

10 tools
authenticate_alphaessA
Authenticate with the Alpha ESS Open API to validate credentials.

Returns:
    dict: Authentication result with success status and message

Inputs: no named parameters. Returns: object

get_alpha_ess_dataB
Get statistical energy data for all registered Alpha ESS systems.

Returns:
    dict: Energy data with success status and system information

Inputs: no named parameters. Returns: object

get_charge_configA
Get battery charging configuration for a specific Alpha ESS system.
Returns structured configuration with clear period definitions and status.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured charging configuration

Inputs: serial. Returns: object

get_discharge_configA
Get battery discharge configuration for a specific Alpha ESS system.
Returns structured configuration with clear period definitions and status.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured discharge configuration

Inputs: serial. Returns: object

get_ess_listB
Get list of registered Alpha ESS systems with auto-selection logic.
Returns enhanced system information with structured metadata.

Returns:
    dict: Enhanced response with system list and auto-selection recommendations

Inputs: no named parameters. Returns: object

get_last_power_dataA
Get the latest real-time power data for a specific Alpha ESS system.
Returns structured snapshot with clear field names and units.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured real-time power data

Inputs: serial. Returns: object

get_one_date_energy_dataA
Get energy data for a specific date and Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    query_date: Date in YYYY-MM-DD format
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Energy data for the specified date with success status

Inputs: query_date (required), serial. Returns: object

get_one_day_power_dataA
Get one day's power data for a specific Alpha ESS system.
Returns structured timeseries data with hourly intervals and summary statistics.
If no serial provided, auto-selects if only one system exists.

Args:
    query_date: Date in YYYY-MM-DD format
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured timeseries data and analytics

Inputs: query_date (required), serial. Returns: object

set_battery_chargeA
Set battery charging configuration for a specific Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    enabled: True to enable charging from grid, False to disable
    dp1_start: Start time for charging period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp1_end: End time for charging period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_start: Start time for charging period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_end: End time for charging period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    charge_cutoff_soc: Percentage to stop charging from grid at (0-100)
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Result of charge configuration update with success status

Inputs: enabled (required), dp1_start (required), dp1_end (required), dp2_start (required), +3 more. Returns: object

set_battery_dischargeA
Set battery discharge configuration for a specific Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    enabled: True to enable battery discharge, False to disable
    dp1_start: Start time for discharge period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp1_end: End time for discharge period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_start: Start time for discharge period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_end: End time for discharge period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    discharge_cutoff_soc: Percentage to stop discharging battery at (0-100)
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Result of discharge configuration update with success status

Inputs: enabled (required), dp1_start (required), dp1_end (required), dp2_start (required), +3 more. Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 10 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose with no ambiguity. Authentication, data retrieval (statistical, real-time, daily), configuration management (charge/discharge), and system listing are all well-separated. The descriptions clearly differentiate between energy data, power data, and configuration operations.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern with clear, descriptive names. The naming convention is uniform throughout: authenticate_alphaess, get_alpha_ess_data, get_charge_config, get_discharge_config, get_ess_list, get_last_power_data, get_one_date_energy_data, get_one_day_power_data, set_battery_charge, set_battery_discharge.

    Tool Count5/5

    With 10 tools, this is well-scoped for an energy management system. Each tool earns its place by covering essential operations: authentication, system listing, data retrieval (statistical, real-time, daily), and configuration management (charge/discharge). The count aligns perfectly with the domain's needs.

    Completeness5/5

    The tool surface provides complete CRUD/lifecycle coverage for Alpha ESS energy systems. It includes authentication, system discovery, comprehensive data retrieval (statistical, real-time, daily), and full configuration management for both charging and discharging. There are no obvious gaps that would hinder agent workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      A
      quality
      Not graded
      maintenance
      Enables monitoring and control of EcoFlow Power Stations and devices through the Model Context Protocol. Users can manage battery levels, toggle AC/DC outputs, and configure charging settings across the DELTA and RIVER series via the EcoFlow API.
      9
      -
    • A
      license
      A
      quality
      D
      maintenance
      Provides real-time access to solar inverter data from the SolaX Cloud API, enabling queries of power output, energy yields, battery status, and grid import/export data.
      2
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI assistants to monitor and control Growatt solar installations via the ShineServer API, including reading PV generation, load, grid import/export, battery SOC, and adjusting inverter settings.
      26
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables users to read power, energy counters, events, and settings from KOSTAL PLENTICORE inverters, and to preview or apply plant-owner settings changes through the inverter's local REST API.
      11
      MIT