Skip to main content
Glama
solarnetwork-mcp

solarnetwork-mcp

by hoodsy

solarnetwork-mcp

Read-only MCP server for SolarNetwork — query solar generation, consumption, and other DER telemetry over the SolarQuery API. Zero config against a public demo node. Public (/pub) mode only; authenticated (sec) mode is not implemented.

Setup

npm install
npm run build
npm test        # offline, against captured fixtures
npm run smoke   # live check against demo node 108

MCP client config (stdio):

{
  "mcpServers": {
    "solarnetwork": {
      "command": "node",
      "args": ["/path/to/solarnetwork-mcp/dist/index.js"]
    }
  }
}

Related MCP server: Victron VRM MCP Server

Tools

Tool

Answers

get_reportable_interval

What date range has data? (call first)

list_sources

Which source IDs exist?

get_latest

Most recent datum per source

query_datum

Time series between two node-local dates (Day/Hour/Month; raw guarded)

get_meter_reading

Energy used/generated over a period

Responses are compact { data, meta } JSON; meta reports count, truncated, and paging. Day aggregation by default, 500-row cap, raw queries over 7 days require allowRaw.

Demo node

Node 108 — public, posting since 2013, time zone Pacific/Auckland. Sources: DB (bidirectional meter, richest stream), Main (intermittent), A/B/C (phase watts), OfficeTemp (dormant). A complete month to query: June 2026.

Environment

Variable

Default

SN_HOST

https://data.solarnetwork.net

SN_TOKEN, SN_SECRET

unset; sec mode is unimplemented and the server fails fast if they are set

Available Tools

5 tools
get_latestMost recent datumA
Read-only

What is the most recent datum for each of a node's sources, and when was it recorded? Values are the device's own property map (e.g. watts, wattHours) passed through as-is — property names are the only unit hints; do not invent units. Sources silent for ~90 days are omitted unless you pass sinceDate to look further back.

Inputs: nodeId (required), sinceDate, sourceIds.

get_meter_readingMeter reading over a periodA
Read-only

How much energy (or any accumulating meter property, e.g. wattHours) was used or generated between two node-local dates? Computes a meter-style difference between readings nearest the period boundaries — the natural fit for 'total for June'. Each row shows the difference plus the _start/_end raw readings; only sources with accumulating properties appear.

Inputs: nodeId (required), endDate (required), startDate (required), sourceId.

get_reportable_intervalReportable date rangeA
Read-only

What date range does a node have data for? Call this first for an unfamiliar node so you never query an empty range. Returns startDate/endDate in the node's local time zone, the timeZone name, and day/month/year counts.

Inputs: nodeId (required), sourceId.

list_sourcesList source IDsA
Read-only

Which data streams (source IDs) does a node have? Without a date window this lists every source that ever posted — including long-dead ones — so pass a UTC window to see only sources active in that period.

Inputs: nodeId (required), endDate, startDate.

query_datumQuery time seriesA
Read-only

Time series for a node between two node-local dates (end exclusive) — answers 'how much / what pattern over time'. Default Day aggregation gives one row per source per day; Hour suits intra-day shape (the API silently coarsens Hour to Day beyond 32 days); None returns raw samples and is refused over 7 days unless allowRaw=true. Responses are capped at 500 rows — when meta.truncated is true, page with offset.

Inputs: nodeId (required), endDate (required), startDate (required), offset, +3 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A4.4/5.0

    Scored across 5 tools

    Disambiguation4/5

    Tools have distinct purposes: obtaining date ranges, listing sources, retrieving latest data, querying time series, and computing meter readings. Minor potential overlap between query_datum and get_meter_reading is clarified by descriptions.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., get_reportable_interval, list_sources) with underscores, ensuring predictability.

    Tool Count5/5

    Five tools cover the essential operations for a solar network data API without being excessive or insufficient, well-scoped for the purpose.

    Completeness4/5

    The tools cover data availability, source listing, latest data, time series queries, and meter readings. Minor gaps like source metadata are absent but acceptable for a read-only API.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      F
      maintenance
      One-call Australian energy-market plumbing via AEMO — cited, structured responses for market data and analysis, not a data broker.
      5
      129 PyPI
      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
      39 npm
      6
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      A read-only MCP server for querying telemetry data from configurable backends. Provides tools to list sources, describe schemas, run bounded queries, and compute aggregates.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      A lean Model Context Protocol (MCP) server that gives AI assistants like Claude structured access to a SolarEdge PV installation via the official SolarEdge Monitoring API.
      4
      MIT