A production-ready [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server written in Go that wraps the APsystems OpenAPI, giving AI
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.
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.
Everything the assistant can do here goes through one of these:
get_system_details — System info: capacity, timezone, ECUs, statusget_inverters — List all ECUs and connected micro-invertersget_meters — List all meter IDsget_system_summary — Energy totals: today, month, year, lifetime (kWh)get_system_energy — Energy by period: hourly/daily/monthly/yearlyget_ecu_summary — Energy summary for a specific ECUget_ecu_energy — Period energy for an ECU (supports minutely telemetry)get_inverter_summary — Per-channel energy for a single inverterget_inverter_energy — Period/minutely data with DC power, current, voltage, AC telemetryget_inverter_batch_energy — All inverters under an ECU in one callget_meter_summary — Consumed/exported/imported/produced totalsget_meter_period — Period energy data for a meterYou 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.
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.
| Tool | What it does |
|---|---|
| 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 |
| get_storage_latest | Live status: SOC, charge/discharge power |
| get_storage_summary | Energy summary for a storage ECU |
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.
| Variable | Description | Required |
|---|---|---|
| APS_SYS_ID | Configuration value read at startup. | Optional |
| APS_APP_ID | Configuration value read at startup. | Optional |
| APS_APP_SECRET | Credential the server authenticates with. | Yes |
| APS_MCP_TRANSPORT | Configuration value read at startup. | Optional |
| APS_MCP_SSE_ADDR | Configuration value read at startup. | Optional |
| APS_DASHBOARD | Configuration value read at startup. | Optional |
| APS_DASH_ADDR | Configuration value read at startup. | Optional |
| APS_BASE_URL | Endpoint or connection string the server talks to. | Yes |
Give your coding agent the full DevTools toolbox: traces, network, console, heap snapshots and Lighthouse.
Dashboards, Prometheus and Loki queries, incidents and alerts — observability by conversation.
Errors with full context — stack traces, issue triage and AI-powered root-cause analysis from Sentry's server.
Enables enhanced web research capabilities for large language models through intelligent search queuing and advanced content extraction.
Automates browser interactions and enables Large Language Models (LLMs) to interact with web pages through Playwright and Chrome DevTools Protocol
Guides tool usage by providing recommendations for MCP tools at each problem-solving stage.