npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@nixman2/stroomr-mcp

v1.0.0

Published

MCP server that helps AI assistants answer when to charge an EV, run a heat pump, or shift home energy — using live Nord Pool prices and solar forecasts.

Readme

StroomR MCP

Helps AI assistants answer “when should I use electricity?” in one call — with live Nord Pool prices, local solar forecasts, and ready-to-use load-shift advice.

Built by StroomR. Specialized for European day-ahead energy markets and home energy timing — not a general weather or finance API.


What your agent can do

| Job | Without this server | With StroomR MCP | |-----|---------------------|------------------| | EV charging advice | Agent guesses or asks user to check multiple apps | One tool call → optimal window, savings estimate, hours to avoid | | Heat pump / battery timing | Manual price lookup + weather check | Combined price + solar overlap in structured output | | “Is tomorrow sunny?” + “Are prices low?” | Two separate lookups, agent merges context | Single combined snapshot for load-shifting decisions |

Outcome, not plumbing: your agent completes energy-timing tasks with fewer steps, pre-merged context, and structured fields (recommendedWindows, avoidWindows, estimatedSavingsVsAvgEur) instead of raw API dumps.


Best use cases

  1. “When should I charge my EV tomorrow?” — cheapest consecutive window, estimated savings vs. average, evening peak to avoid.
  2. “Optimal times for my heat pump today” — price-ranked hours with solar overlap for self-consumption.
  3. “Will it be sunny tomorrow, and are electricity prices low?” — weather + Nord Pool snapshot for solar/load decisions.
  4. “What are the cheapest hours to use power this week?” — day-ahead slots for today and tomorrow.
  5. “How much sun will I get today?” — sun hours, sun windows, and rain periods for a given location.

Scope: Nord Pool day-ahead markets in Europe (NL, GER, DK1, SE3, etc.). Not for real-time trading, grid operator data, or non-European utilities.


Supported clients

Works with any MCP-compatible assistant, including:

  • Cursor (local stdio — config included in this repo)
  • Claude Desktop (add to claude_desktop_config.json)
  • Other MCP hosts that support stdio servers (ChatGPT desktop integrations, custom agents, etc.)

Requires Node.js 20+. Runs locally on your machine — no StroomR account required to use the MCP.


Auth & safety

| | | |---|---| | Runs | Locally via stdio (node dist/index.js) | | Credentials | None — no API keys, no StroomR login | | Network | Read-only outbound calls to Open-Meteo (weather) and Nord Pool public day-ahead API (prices) | | Writes | None — does not control devices, meters, or your home | | Data sent | Location (city or coordinates) and Nord Pool area — only what you pass in tool args or env config |

Set a default location in env so the agent does not need to ask every time:

"env": {
  "STROOMR_CITY": "Amsterdam",
  "STROOMR_PRICE_AREA": "NL"
}

Examples

Example 1 — EV charging (primary use case)

User prompt:

When should I charge my EV tomorrow?

Agent action: get_load_shift_advice · { "device": "ev", "day": "tomorrow" }

Agent reply (from structured output):

Charge between 10:00–14:00 tomorrow. Estimated savings: €3.73 vs. average wholesale price for a 4 h session at 11 kW. Avoid 17:00–23:00 (evening peak). Overlaps with expected sunshine — good for solar self-consumption.


Example 2 — Heat pump today

User prompt:

Optimal times for heat pump today?

Agent action: get_load_shift_advice · { "device": "heat_pump", "day": "today" }

Agent reply:

Run intensive heating between 14:00–18:00 today (~€0.68 cheaper than average for 12 kWh). Avoid 19:00–23:00.


Example 3 — Weather + prices in one step

User prompt:

Is tomorrow good for cheap charging and solar?

Agent action: get_weather_and_prices · { "days": 2 }

Agent reply:

Tomorrow: ~15 h sunshine (07:00–21:00), day-ahead prices near zero mid-day. Strong day for shifting loads to midday.


Tools (5, purpose-built)

| Tool | Agent job | |------|-----------| | get_load_shift_advice | Main tool. Optimal + avoid windows for EV, heat pump, or battery; savings estimate; solar overlap | | get_weather_and_prices | Combined snapshot when the agent needs both sun and price context | | get_energy_prices | Cheapest/expensive hours, current and tomorrow Nord Pool day-ahead slots | | get_weather_forecast | Sun windows, rain periods, precipitation — when solar matters | | resolve_location | Validate city/coordinates and resolve Nord Pool price area |

Defaults for load-shift advice:

| Device | device | Power | Duration | |--------|----------|-------|----------| | EV charger | ev | 11 kW | 4 h | | Heat pump | heat_pump | 3 kW | 4 h | | Home battery | battery | 5 kW | 2 h |

Override with power_kw and duration_hours.


Install

From npm (after publish)

{
  "mcpServers": {
    "stroomr": {
      "command": "npx",
      "args": ["-y", "@nixman2/stroomr-mcp"],
      "env": {
        "STROOMR_CITY": "Amsterdam",
        "STROOMR_PRICE_AREA": "NL"
      }
    }
  }
}

From source

npm install
npm run build

Cursor (local dev)

.cursor/mcp.json:

{
  "mcpServers": {
    "stroomr": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "STROOMR_CITY": "Amsterdam",
        "STROOMR_PRICE_AREA": "NL",
        "STROOMR_OUTPUT_FORMAT": "structured"
      }
    }
  }
}

Restart Cursor after changing MCP config.

Claude Desktop

{
  "mcpServers": {
    "stroomr": {
      "command": "node",
      "args": ["/absolute/path/to/stroomr-mcp/dist/index.js"],
      "env": {
        "STROOMR_CITY": "Amsterdam",
        "STROOMR_PRICE_AREA": "NL"
      }
    }
  }
}

Configuration

| Variable | Description | |----------|-------------| | STROOMR_CITY | Default city (geocoded) | | STROOMR_LAT / STROOMR_LON | Default coordinates | | STROOMR_PRICE_AREA | Nord Pool area (e.g. NL) | | STROOMR_CURRENCY | Default EUR | | STROOMR_TIMEZONE | Timezone override | | STROOMR_OUTPUT_FORMAT | friendly (default) or structured |

Priority: tool arguments → env vars → clear error (no silent default city).

Structured responses include a stroomr branding block and fields optimised for agent parsing (recommendedWindows, cheapestSlot, summary_nl).


Verify

npm run smoke-test

About StroomR

This MCP is a free demo of the load-shifting logic in StroomR — energy management that automatically times EV charging, heat pumps, and batteries against dynamic tariffs and solar production.

Want it to run 24/7 without asking an assistant? Join the free pilot →


Data sources & disclaimer

  • Weather: Open-Meteo (CC BY 4.0)
  • Prices: Nord Pool Group day-ahead via community-documented public API (unofficial; may change)

Load-shift advice uses wholesale day-ahead prices. Retail bills include taxes, grid fees, and supplier markups — savings estimates are indicative, not guaranteed.

Supported Nord Pool areas: DK1, DK2, FI, NO1NO5, SE1SE4, EE, LT, LV, AT, BE, FR, GER, NL, PL, BG, TEL


Publish to MCP Registry

Prepared for the official MCP Registry quickstart:

| Step | Status | |------|--------| | 1. mcpName in package.json | ✅ io.github.nixman2/stroomr-mcp | | 2. Publish to npm | ⏳ Run locally (requires npm login) | | 3. Install mcp-publisher | ✅ | | 4. Create server.json | ✅ Validated | | 5. mcp-publisher login github | — | | 6. mcp-publisher publish | — |

Step 2 — publish to npm:

npm adduser          # if not logged in
npm publish --access public

Steps 5–6 — publish registry metadata:

mcp-publisher login github
mcp-publisher publish

Verify listing:

curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.nixman2/stroomr-mcp"

Registry name: io.github.nixman2/stroomr-mcp · npm: @nixman2/stroomr-mcp