Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Strompreis

FreeNot checked

MCP server that gives AI agents real-time German electricity price forecasts.

GitHubEmbed

About

MCP server that gives AI agents real-time German electricity price forecasts.

README

Python ≥3.11 License: MIT Smithery

MCP server that gives AI agents German electricity prices — real day-ahead auction prices where available, statistical estimates beyond. Tells your smart home agent when to run the dishwasher, charge the car, or schedule power-hungry tasks.

Built for the Model Context Protocol — works with Claude Desktop, Cline, and any MCP-compatible client.


Architecture

                    ┌────────────────────────────┐
                    │    SMARD (Bundesnetzagentur) │
                    │    Live-Strompreise 15min    │
                    └──────────┬─────────────────┘
                               │ API
                    ┌──────────▼─────────────────┐
                    │   strompreis-collector       │
                    │   (Cron: every 15 min)       │
                    └──────────┬─────────────────┘
                               │ writes
                    ┌──────────▼─────────────────┐
                    │   SQLite Database             │
                    │   ~/.strompreis/strompreis.db │
                    │   ├── price_data (historical) │
                    │   ├── api_keys (auth)         │
                    │   └── usage_log (rate limit)  │
                    └──────────┬─────────────────┘
                               │ reads
              ┌────────────────┼────────────────┐
              │                │                 │
    ┌─────────▼──────┐  ┌─────▼──────┐  ┌──────▼─────────┐
    │  MCP Server     │  │  B2C Site   │  │  CLI Tools     │
    │  (stdio/SSE)    │  │  (FastAPI)  │  │  status/vacuum │
    │  price_forecast │  │  savings    │  │                 │
    │  best_hours     │  │  checker    │  │                 │
    │  db_status      │  │  affiliate  │  │                 │
    └─────────────────┘  └────────────┘  └─────────────────┘

Quick Start

1. Install

pip install strompreis-mcp

Or from source:

git clone https://github.com/DasClown/strompreis-mcp.git
cd strompreis-mcp
pip install -e .

2. Initialize database + first data collection

# Automatic setup
bash scripts/setup.sh

# Or manual:
strompreis-collector collect
strompreis-collector status

3. Add to Claude Desktop

Edit ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "strompreis": {
      "command": "strompreis-mcp"
    }
  }
}

Or with Cline / any MCP client:

{
  "mcpServers": {
    "strompreis": {
      "command": "strompreis-mcp",
      "args": []
    }
  }
}

Tools & Resources

Built on the official MCP Python SDK (mcp.server.fastmcp.FastMCP).

Tools

Tool Parameters Returns
price_forecast hours (1-72, default 24) JSON array: [{timestamp, price_ct, confidence, is_peak, source}]
best_hours count (default 3) Human-readable cheapest hours recommendation
db_status none Database health: rows, latest timestamp, usage stats (incl. keyless quota)

Resources (read-only URIs)

URI Description
strompreis://prices/live Most recent SMARD day-ahead series (raw + ct/kWh)
strompreis://prices/history Local DB history (last 30 days)
strompreis://db/status Database health snapshot as JSON

Resources sind nützlich für Clients, die URIs bevorzugen statt Tool-Calls (z. B. zum Einbetten in Kontextfenster).

Each price_forecast entry carries a source field:

  • auction — verbindlicher Day-Ahead-Auktionspreis (EPEX, via SMARD), confidence = 1.0. Gilt typ. für die nächsten 24–36 h, sobald die Auktion veröffentlicht wurde.
  • statistical — Schätzung aus historischem Stunden-/Wochentagsprofil + kurzfristigem Trend, für Stunden jenseits des Auktionshorizonts. confidence sinkt mit der Distanz.

So weiß der Agent (und der User), ob eine Empfehlung auf echten Preisen beruht oder geschätzt ist.

Example Prompts

"When is the cheapest time to run my laundry today?"
→ Agent calls best_hours(count=3) → Empfehlung aus Auktionspreisen (✓) oder Schätzung (~), inkl. Herkunft.

"What's the electricity price forecast for tomorrow?"
→ Agent calls price_forecast(hours=48) → Stundenpreise in ct/kWh, gemischt auction/statistical.

"Should I charge my EV now or wait?"
→ Agent calls price_forecast(hours=24), findet das günstigste Fenster.

Database Persistence

The database lives at ~/.strompreis/strompreis.db. It persists:

Table Purpose Retention
price_data Historical SMARD prices + generation data; timestamp_utc ist UNIQUE (Dedup) Unlimited (for ML training)
api_keys Monetization: tier-based API access Manual expiration
usage_log Rate limiting + analytics (auch keyless, mit api_key IS NULL) Accumulates
price_meta Schema-Versionierung für automatische Migrationen Persistent

Beim Start migriert das Paket ältere Schemata automatisch (siehe CHANGELOG.md).

Cron Setup (recommended)

# Fetch data every 15 minutes
*/15 * * * * cd /path/to/strompreis-mcp && strompreis-collector collect

# Weekly database maintenance (Sunday 03:00)
0 3 * * 0 cd /path/to/strompreis-mcp && strompreis-collector vacuum

Or use the provided crontab:

crontab deploy/crontab

CLI Commands

# Fetch + store latest SMARD data
strompreis-collector collect

# Show database health
strompreis-collector status
# → 📊 Strompreis DB Status
#     Total rows:     1,248
#     Latest data:    2026-06-30T21:00:00+00:00
#     DB file size:   180 KB

# Weekly maintenance
strompreis-collector vacuum

Deployment

Transports

Der Server unterstützt alle MCP-Transporte (über STROMPREIS_TRANSPORT):

Transport Use Case Aufruf
stdio (default) Lokale Clients (Claude Desktop, Cline) strompreis-mcp
sse Remote, B2C-Site, getunnelt STROMPREIS_TRANSPORT=sse strompreis-mcp
streamable-http Modernes Remote (empfohlen für Produktion) STROMPREIS_TRANSPORT=streamable-http strompreis-mcp

Konfiguriere Host/Port via --host / --port oder MCP_HOST / MCP_PORT.

systemd (production)

# Edit deploy/strompreis-mcp.service paths for your system, then:
sudo cp deploy/strompreis-mcp.service /etc/systemd/system/
sudo systemctl enable --now strompreis-mcp

# Monitor
journalctl -u strompreis-mcp -f

B2C Website (side-stream)

# Install dependencies
pip install strompreis-mcp[b2c]

# Run
python3 -m uvicorn b2c.server:app --host 0.0.0.0 --port 8080

Then open http://localhost:8080 — users enter their annual kWh consumption and get:

  • ✅ Savings calculation (fixed vs dynamic tariff)
  • ✅ Tibber/Awattar affiliate comparison
  • ✅ 24h price forecast snippet

B2C Configuration (env vars)

Keine Secrets im Source. Alle IDs/URLs kommen aus der Umgebung:

Variable Zweck
STROMPREIS_AWIN_ID Awin Publisher-ID für Tibber-Affiliate
STROMPREIS_TIBBER_URL Override: vollständiger Tibber-Link
STROMPREIS_AWATTAR_URL Override: Awattar-Partner-Link
STROMPREIS_IMPRINT_URL Impressum-URL (DSGVO, Footer)
STROMPREIS_PRIVACY_URL Datenschutz-URL (DSGVO, Footer)
STROMPREIS_FESTPREIS_AVG Avg. Festpreis ct/kWh (Default 28.0)
STROMPREIS_BÖRSEN_AUFSCHLAG Dynamisch-Aufschlag ct/kWh (Default 5.5)

Wichtig (kommerzieller Betrieb, DSGVO): Für eine öffentliche B2C-Seite brauchst du Impressum und Datenschutzerklärung. Setze STROMPREIS_IMPRINT_URL und STROMPREIS_PRIVACY_URL — sie erscheinen im Footer.

Smithery

Smithery

One-click install for Claude Desktop via Smithery.

API Key Mode (keyed mode, for production/Multi-Tenant)

By default the server runs in keyless mode (100 req/day global limit, persisted in DB).
For production use, switch to keyed mode with the strompreis-keys CLI:

# Create a key
strompreis-keys create "my-app" --tier pro --limit 10000
# → sp_xxx... (shown once)

# List keys (masked)
strompreis-keys list
strompreis-keys list --tier pro --inactive

# Verify / revoke
strompreis-keys verify sp_xxx...
strompreis-keys revoke sp_xxx...

Then start the server with the key:

export STROMPREIS_API_KEY=sp_your_key_here
strompreis-mcp

In keyed mode:

  • All requests validated against api_keys table
  • Per-key daily rate limiting
  • Usage logged to usage_log table
  • db_status zeigt aktive Keys und heutige Abrufe

Tiers (Vorschlag für kommerzielle Preisgestaltung)

Tier Limit/Tag Use Case
free 100 Persönliche Smart-Home-Integration
pro 10.000 Kleinere SaaS-Produkte, Hobby-Projekte
enterprise 100.000+ Kommerzielle Apps, vertraglich

Limits sind pro Key konfigurierbar (--limit N); die Tier-Bezeichnung ist lediglich ein Label.

Data Sources

Source Provider API Data
Day-ahead auction prices SMARD (BNetzA) Open REST Live, hourly (verbindlich für ca. 24–36 h)
Solar generation SMARD Chart API Live, hourly
Wind generation SMARD Chart API Live, hourly
Grid load SMARD Chart API Live, hourly

Wie die Vorhersage zustande kommt (v0.3):

  • Innerhalb des Day-Ahead-Auktionshorizonts: echte, verbindliche Börsenpreise (source: "auction").
  • Darüber hinaus: statistische Schätzung aus DB-Historie (Stundenprofil, Wochentag, kurzfristiger Trend) (source: "statistical").

Geplant für v0.4+:

  • ENTSO-E Transparency (grenzüberschreitender Stromhandel, Netzengpässe)
  • DWD BrightSky (Wetter: Solarstrahlung, Windgeschwindigkeit, Temperatur)
  • ML-Modell (z. B. Random Forest / Gradient Boosting) für die Schätzung jenseits des Auktionshorizonts — solange es gemessene Qualitätsvorteile bringt.

License

MIT


Built by @DasClown — German electricity prices for AI agents.

from github.com/DasClown/strompreis-mcp

Install Strompreis in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install strompreis-mcp

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add strompreis-mcp -- uvx --from git+https://github.com/DasClown/strompreis-mcp strompreis-mcp

FAQ

Is Strompreis MCP free?

Yes, Strompreis MCP is free — one-click install via Unyly at no cost.

Does Strompreis need an API key?

No, Strompreis runs without API keys or environment variables.

Is Strompreis hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Strompreis in Claude Desktop, Claude Code or Cursor?

Open Strompreis on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Strompreis with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs