bayernwerk-mcp
Click on "Install 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables 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.11281MIT
- Alicense-qualityAmaintenance87+ 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
- Alicense-qualityCmaintenanceEnables querying German distribution grid operator data from vnbdigital.de and BDEW register, including lookup by ID, postcode, coordinates, and free-text search.MIT
Related MCP Connectors
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Official permit, licensing, compliance, and civic-record tools for AI agents.
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/the78mole/bayernwerk-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server