Strompreis
FreeNot checkedMCP server that gives AI agents real-time German electricity price forecasts.
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.confidencesinkt 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 callsbest_hours(count=3)→ Empfehlung aus Auktionspreisen (✓) oder Schätzung (~), inkl. Herkunft.
"What's the electricity price forecast for tomorrow?"
→ Agent callsprice_forecast(hours=48)→ Stundenpreise in ct/kWh, gemischt auction/statistical.
"Should I charge my EV now or wait?"
→ Agent callsprice_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
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_keystable - Per-key daily rate limiting
- Usage logged to
usage_logtable db_statuszeigt 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.
Install Strompreis in Claude Desktop, Claude Code & Cursor
unyly install strompreis-mcpInstalls 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-mcpFAQ
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
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Strompreis with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
