bayernwerk-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bayernwerk-mcpList my open orders"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bayernwerk-mcp
MCP server for the Bayernwerk Netz Mein.Auftragsportal (MAP) and e-fix Installateur-Portal, exposing both via the Model Context Protocol.
Built on top of the bayernwerk-client library, which also ships a standalone CLI and can be used directly as a Python library. This repository only adds the MCP interface on top - it's an inoffizieller (unofficial) integration, reverse-engineered, not supported or authorized by Bayernwerk/E.ON. Use at your own risk, only with your own, authorized account.
Looking for the Python library or CLI? Head over to bayernwerk-client.
Authentication
Both portals sit behind a Cloudflare-JS-challenge and a Salesforce Aura login, so logging in always means a real, Playwright-driven browser - there's no way around that. This server just decides when that browser opens, in one of two modes:
Automatic login (recommended if you're at the keyboard)
Set MAP_EMAIL/MAP_PASSWORD as environment variables on the MCP server
itself (in your MCP client's server config, e.g. claude_desktop_config.json
or .vscode/mcp.json - see Configuration
below). Whenever a tool call finds no cached token, or a cached token has
expired, the server logs in for you automatically - a Chromium window briefly
opens on the machine the server runs on (headed by default, so you can
see and intervene if e.g. an unexpected MFA/consent prompt shows up), fills
in the credentials, and closes again once the token is captured. MAP and
e-fix share one Bayernwerk-Netz account, so one pair of env vars covers both.
Set BAYERNWERK_LOGIN_HEADLESS=true to suppress the visible window - only
worth it on a host nobody is watching, and more likely to get stuck on the
Cloudflare challenge (see the bayernwerk-client README for why headed is the
default).
Access tokens last about an hour and there's no reliable silent refresh, so expect a browser flash roughly every hour during a long session - that's normal, not a bug.
Manual login (no credentials on the server)
Without MAP_EMAIL/MAP_PASSWORD configured, tool calls never open a
browser themselves. Install bayernwerk-client with its login extra and
run the CLI login once per service, outside of any MCP client, in a normal
terminal:
uv tool install "bayernwerk-client[login]"
playwright install chromium
bayernwerk map login
bayernwerk efix loginThis caches a token under ~/.cache/bayernwerk-client/{map,efix}-tokens.json,
which this server's tools then read directly. If a tool call reports an
authentication error (missing or expired token), re-run the matching login
command and retry.
Related MCP server: OpenProject MCP Server
Tools
MAP - Mein.Auftragsportal
Tool | Description |
| List all orders, optionally filtered to |
| Fetch a single order by ID |
| Additional detail data for an order |
| List an order's documents (for download, see |
| List an order's notes |
| Raw "Anschluss" tree (meter → consumers/generators → inverters → storages/PV) |
| Same tree, flattened into one deduplicated list |
| Download an order's missing documents into a local folder |
| Own installer master data known to MAP |
| Inverter master data, filtered by |
| Storage master data |
| Product orders (separate from regular orders) |
e-fix - Installateur-Portal
Tool | Description |
| Own installer master data known to e-fix (more extensive than |
| Own "Anträge" (applications) with status/type/date |
| Account status: role, notification counters, subscription |
| Registered events/training sessions |
Installation
Prerequisites
Python ≥ 3.11
A cached login token from
bayernwerk-client(see Authentication)
Install dependencies
uv sync
bayernwerk-clientisn't published on PyPI yet, sopyproject.tomlcurrently pins it to a local editable checkout via[tool.uv.sources]. Once it's on PyPI, that override (and this note) go away.
Start the server (development)
uv run bayernwerk-mcp
# or
uv run python -m bayernwerk_mcp.serverTest with MCP Inspector
uv run mcp dev src/bayernwerk_mcp/server.pyConfiguration in VS Code / Claude Desktop
Add the server to your MCP configuration (.vscode/mcp.json or claude_desktop_config.json).
The env block is optional - add it to enable automatic login;
leave it out for manual login via the CLI instead.
Local development (workspace checkout):
{
"servers": {
"bayernwerk": {
"command": "bash",
"args": [
"-l",
"-c",
"uv --directory ${workspaceFolder} run bayernwerk-mcp"
],
"env": {
"MAP_EMAIL": "your@email.de",
"MAP_PASSWORD": "your-password"
}
}
}
}Install from GitHub (latest unreleased):
{
"servers": {
"bayernwerk": {
"command": "bash",
"args": [
"-l",
"-c",
"uvx --from git+https://github.com/the78mole/bayernwerk-mcp.git bayernwerk-mcp"
],
"env": {
"MAP_EMAIL": "your@email.de",
"MAP_PASSWORD": "your-password"
}
}
}
}Once both bayernwerk-client and bayernwerk-mcp are published on PyPI,
uvx bayernwerk-mcp will work directly without the git+ install.
Note:
bash -lloads the login shell profile, which ensuresuvx/uvare found in~/.local/binwithout any additionalenvconfiguration.
Credentials in plain text:
MAP_EMAIL/MAP_PASSWORDend up unencrypted in your MCP client's config file (and in this process's environment) when set this way - treat that file like any other secret, and skip this if you'd rather keep credentials out of it entirely (use manual login instead).
Environment Variables
Variable | Default | Description |
| - | Bayernwerk-Netz account email. If set together with |
| - | Bayernwerk-Netz account password. |
|
| Set to |
Local Development
# Set up project environment
uv sync --extra dev
# Linting & formatting
uv run ruff format .
uv run ruff check --fix .
# Tests
uv run pytestRelated Projects
Project | Description |
Python client library (and CLI) this MCP server is built on |
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Document OCR, vehicle analysis, and workspace usage tools for Scanverion.
Provides access to Civic Plus - See Click Fix, allowing you to interact with your data via an LLM.…
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Pay-per-call web & EU business intelligence for AI agents (x402 USDC on Base). 11 tools.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables conversion between EDIFACT and BO4E data formats through the transformer.bee service. Provides natural language access to energy data transformation capabilities for German energy market communication.21MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage OpenProject work packages, projects, and time tracking. It provides comprehensive tools for creating, updating, and querying tasks and project metadata through the OpenProject API.1141 npm1MIT
- AlicenseNot gradedqualityAmaintenance87+ specialized tools for German and European energy data. Direct AI access to Marktstammdatenregister (MaStR), ENTSO-E, Redispatch 2.0, and Grid Operations for utilities and datacenters.2GPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables querying German distribution grid operator data from vnbdigital.de and BDEW register, including lookup by ID, postcode, coordinates, and free-text search.MIT