MCP server for accessing vnbdigital.de grid operator data (Verteilnetzbetreiber)
Project description
vnbdigital-mcp
MCP server for accessing the vnbdigital.de database of German distribution grid operators (Verteilnetzbetreiber, VNB).
Built on top of the vnbdigital-client library, which also ships a standalone CLI and can be used directly as a Python library in your own code. This repository adds an MCP interface on top, making the data available to AI assistants and agents via the Model Context Protocol (MCP).
Looking for the Python library or CLI? Head over to vnbdigital-client.
Tools
vnbdigital.de lookups
| Tool | Description |
|---|---|
get_operator |
Basic master data for an operator by BDEW code or vnbdigital ID |
get_operator_details |
Full details including services, documents and logo |
get_operators |
Batch lookup for up to 50 IDs in a single call |
search |
Free-text search (postcode, name, city, region) |
search_by_coordinates |
Find responsible operators for a GPS coordinate (lat/lon) |
search_by_postcode |
Find responsible operators for a German postcode |
get_nsp_operator |
Low-voltage (Niederspannung) operator for a postcode or coordinate |
get_msp_operator |
Medium-voltage (Mittelspannung) operator for a postcode or coordinate |
BDEW register lookups (bdew-codes.de)
| Tool | Description |
|---|---|
bdew_lookup_by_company_code |
Look up a company by its 6–7 digit BDEW CompanyUId |
bdew_lookup_by_market_code |
Look up a company by a 13-digit BDEW market function code |
bdew_get_market_function_detail |
Fetch address and contact details for a market function entry |
Note: Company names in the BDEW register do not always match those on vnbdigital.de. Use both sources together for cross-referencing.
Installation
Prerequisites
- Python ≥ 3.12
- uv
Install dependencies
uv sync
Start the server (development)
uv run vnbdigital-mcp
# or
uv run python -m vnbdigital_mcp.server
Test with MCP Inspector
uv run mcp dev src/vnbdigital_mcp/server.py
Configuration in VS Code / Claude Desktop
Add the server to your MCP configuration (.vscode/mcp.json or claude_desktop_config.json):
Install from PyPI (recommended):
{
"servers": {
"vnbdigital": {
"command": "bash",
"args": [
"-l",
"-c",
"uvx vnbdigital-mcp"
]
}
}
}
Install from GitHub (latest unreleased):
{
"servers": {
"vnbdigital": {
"command": "bash",
"args": [
"-l",
"-c",
"uvx --from git+https://github.com/the78mole/vnbdigital-mcp.git vnbdigital-mcp"
]
}
}
}
Local development (workspace checkout):
{
"servers": {
"vnbdigital": {
"command": "bash",
"args": [
"-l",
"-c",
"uv --directory ${workspaceFolder} run vnbdigital-mcp"
]
}
}
}
Note:
bash -lloads the login shell profile, which ensuresuvx/uvare found in~/.local/binwithout any additionalenvconfiguration.
Environment Variables
| Variable | Default | Description |
|---|---|---|
VNBDIGITAL_API_URL |
https://www.vnbdigital.de/gateway/graphql |
GraphQL endpoint |
VNBDIGITAL_TIMEOUT |
30 |
HTTP timeout in seconds |
BDEW_LOOKUP_URL |
https://bdew-codes.de |
Base URL for BDEW lookups |
Example Queries
Operator by ID
Known example IDs:
- 179 → ESTW - Erlanger Stadtwerke AG
- 180 → Stadtwerke Eschwege GmbH
- 99 → Stadtwerke Bramsche GmbH
Operators for a location
get_nsp_operator and get_msp_operator accept either a 5-digit postcode
or a "lat,lon" coordinate string:
get_nsp_operator("97816") # by postcode
get_nsp_operator("49.998037,9.58033") # by coordinates
BDEW lookup
bdew_lookup_by_company_code(660188) # → A&A Stromallianz GmbH
bdew_lookup_by_market_code("9903445000000") # → same company, one market function
bdew_get_market_function_detail(141) # → address/contact for that market function
Local Development
# Set up project environment
uv sync
# Linting & formatting
uv run ruff format .
uv run ruff check --fix .
# Tests
uv run pytest
Related Projects
| Project | Description |
|---|---|
| vnbdigital-client | Python client library this MCP server is built on. Provides typed access to the vnbdigital.de GraphQL API and the BDEW register. |
| vnbdigital.de | Official database of German distribution grid operators. |
| bdew-codes.de | BDEW market participant register with company and market function codes. |
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vnbdigital_mcp-0.6.2.tar.gz.
File metadata
- Download URL: vnbdigital_mcp-0.6.2.tar.gz
- Upload date:
- Size: 65.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e07b8d52a9f2b302e5d827f6dd7c30d53bbf71be9fe20c1e294666d8976baaaf
|
|
| MD5 |
29de28b50bde6a8efa30e700e260d0cc
|
|
| BLAKE2b-256 |
549ddccafbe68a7ebabf459131aef41beeb798499ddbc946f0eae4453a7f1b85
|
Provenance
The following attestation bundles were made for vnbdigital_mcp-0.6.2.tar.gz:
Publisher:
publish.yml on the78mole/vnbdigital-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vnbdigital_mcp-0.6.2.tar.gz -
Subject digest:
e07b8d52a9f2b302e5d827f6dd7c30d53bbf71be9fe20c1e294666d8976baaaf - Sigstore transparency entry: 1583355630
- Sigstore integration time:
-
Permalink:
the78mole/vnbdigital-mcp@8caef33a463390149722fb01bfc4c0f7a577ff95 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/the78mole
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8caef33a463390149722fb01bfc4c0f7a577ff95 -
Trigger Event:
push
-
Statement type:
File details
Details for the file vnbdigital_mcp-0.6.2-py3-none-any.whl.
File metadata
- Download URL: vnbdigital_mcp-0.6.2-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5511af18867ea032b5564bd5041fb44df850499a77af52bdc40cfc1425e2899
|
|
| MD5 |
aa83e0bd73afbe1074faa4ff1dae20b8
|
|
| BLAKE2b-256 |
6496b43a2219b289757b207d7ed0906cbe7e10d1acbdf52c6ec5907d3ef3a3c1
|
Provenance
The following attestation bundles were made for vnbdigital_mcp-0.6.2-py3-none-any.whl:
Publisher:
publish.yml on the78mole/vnbdigital-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vnbdigital_mcp-0.6.2-py3-none-any.whl -
Subject digest:
e5511af18867ea032b5564bd5041fb44df850499a77af52bdc40cfc1425e2899 - Sigstore transparency entry: 1583355872
- Sigstore integration time:
-
Permalink:
the78mole/vnbdigital-mcp@8caef33a463390149722fb01bfc4c0f7a577ff95 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/the78mole
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8caef33a463390149722fb01bfc4c0f7a577ff95 -
Trigger Event:
push
-
Statement type: