Apsystems MCP Server

A production-ready [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server written in Go that wraps the APsystems OpenAPI, giving AI

Local serverstdioGo

What is the Apsystems MCP server?

A production-ready Model Context Protocol (MCP) server written in Go that wraps the APsystems OpenAPI, giving AI assistants like Claude direct access to your solar monitoring data. Includes an optional. The apsystems mcp server wraps that behind the Model Context Protocol, so an assistant can use it through 14 defined tools rather than through you.

What it actually does

  • 16 MCP tools — covering all APsystems API endpoints: system details, energy summaries, ECU/inverter/meter/storage data
  • HMAC-SHA256 signature authentication — — implements the APsystems signature protocol
  • Built-in web dashboard — — dark-themed single-page app with Chart.js energy visualizations
  • Rate limiting — — configurable request throttling to respect API limits
  • Automatic retries — — exponential back-off on transient errors and rate-limit responses
  • Dual transport — — stdio (default) or SSE over HTTP, selectable via environment variable

Adding it to your client

Installation goes through your MCP client rather than a global install: point it at docker.io/mehdijrgr/apsystems-mcp-server on a container image and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.

Its toolset

Everything the assistant can do here goes through one of these:

  • get_system_details — System info: capacity, timezone, ECUs, status
  • get_inverters — List all ECUs and connected micro-inverters
  • get_meters — List all meter IDs
  • get_system_summary — Energy totals: today, month, year, lifetime (kWh)
  • get_system_energy — Energy by period: hourly/daily/monthly/yearly
  • get_ecu_summary — Energy summary for a specific ECU
  • get_ecu_energy — Period energy for an ECU (supports minutely telemetry)
  • get_inverter_summary — Per-channel energy for a single inverter
  • get_inverter_energy — Period/minutely data with DC power, current, voltage, AC telemetry
  • get_inverter_batch_energy — All inverters under an ECU in one call
  • get_meter_summary — Consumed/exported/imported/produced totals
  • get_meter_period — Period energy data for a meter

Configuration

You will need 8 environment variables: APS_SYS_ID, APS_APP_ID, APS_APP_SECRET, APS_MCP_TRANSPORT, APS_MCP_SSE_ADDR, APS_DASHBOARD, APS_DASH_ADDR, APS_BASE_URL. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.

Caveats

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Apsystems.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • MCP clients confirm each tool call by default. Leave that on until you have watched what the apsystems mcp server does with a few real requests.

When to reach for it

Among the monitoring and observability options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Apsystems's toolset — get_system_details, get_inverters, get_meters and 11 more — is a fair guide to whether it matches your workflow. It is maintained by mjrgr; worth a glance at recent repository activity before you build anything load-bearing on it.

This entry was verified against Apsystems's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.

Available tools

ToolWhat it does
get_system_detailsSystem info: capacity, timezone, ECUs, status
get_invertersList all ECUs and connected micro-inverters
get_metersList all meter IDs
get_system_summaryEnergy totals: today, month, year, lifetime (kWh)
get_system_energyEnergy by period: hourly/daily/monthly/yearly
get_ecu_summaryEnergy summary for a specific ECU
get_ecu_energyPeriod energy for an ECU (supports minutely telemetry)
get_inverter_summaryPer-channel energy for a single inverter
get_inverter_energyPeriod/minutely data with DC power, current, voltage, AC telemetry
get_inverter_batch_energyAll inverters under an ECU in one call
get_meter_summaryConsumed/exported/imported/produced totals
get_meter_periodPeriod energy data for a meter
get_storage_latestLive status: SOC, charge/discharge power
get_storage_summaryEnergy summary for a storage ECU

How to install the Apsystems MCP server

Or for Docker:

```json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "aps_sys_id",
      "description": "APsystems System ID"
    },
    {
      "type": "promptString",
      "id": "aps_app_id",
      "description": "APsystems App ID"
    },
    {
      "type": "promptString",
      "id": "aps_app_secret",
      "description": "APsystems App Secret",
      "password": true
    }
  ],
  "mcpServers": {
    "apsystems": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm", "-p", "8888:8080",
        "-e", "APS_DASHBOARD=true",
        "-e", "APS_SYS_ID=${input:aps_sys_id}",
        "-e", "APS_APP_ID=${input:aps_app_id}",
        "-e", "APS_APP_SECRET=${input:aps_app_secret}",
        "docker.io/mehdijrgr/apsystems-mcp-server"
      ]
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

VariableDescriptionRequired
APS_SYS_IDConfiguration value read at startup.Optional
APS_APP_IDConfiguration value read at startup.Optional
APS_APP_SECRETCredential the server authenticates with.Yes
APS_MCP_TRANSPORTConfiguration value read at startup.Optional
APS_MCP_SSE_ADDRConfiguration value read at startup.Optional
APS_DASHBOARDConfiguration value read at startup.Optional
APS_DASH_ADDRConfiguration value read at startup.Optional
APS_BASE_URLEndpoint or connection string the server talks to.Yes

Example prompts to try

  • Use Apsystems to get system details.
  • Use Apsystems to get inverters.
  • Use Apsystems to get meters.

Frequently asked questions

It connects Apsystems to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (get_system_details, get_inverters, get_meters, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Apsystems directly.