OpenPLZ — German postal codes, streets & administrative tree

io.github.mohammad-abbasi-shPublished by GitHub account mohammad-abbasi-shv0.1.0Updated Nov 14, 2026

Unofficial read-only MCP server for German postal data — PLZ lookup, streets & admin tree.

Overview

AI-generated overview

Read-only MCP server for German postal data: look up postal codes, search localities and streets, and walk the administrative tree.

What you can do
  • Look up which localities a 5-digit German postal code belongs to, with municipality and federal state keys
  • Search localities by name, optionally limited to one postal code
  • Search streets by name, postal code or locality, plus free-form street search across name, postal code and city
  • List the 16 federal states with key and capital, and step down the administrative tree from state to district to municipality
  • Check reachability of the upstream OpenPLZ API
When to use it
Useful when an assistant needs to resolve German addresses or postal codes, normalize place names, or map locations onto official administrative keys for Germany. Not suitable for Austrian or Swiss data, which the server does not expose.
Requirements
Runs locally over stdio, typically launched with uvx from the PyPI package openplz-mcp, or as a Python module needing mcp<2 and httpx. No API key or login; network access to the OpenPLZ API is required.
Before you install
Read-only and needs no credentials, but queries go to the third-party OpenPLZ API, so searched names and postal codes leave the machine. Street search matches the stored abbreviated form, so results may miss full spellings. It is unofficial and not affiliated with the OpenPLZ API project, and covers Germany only.

Installation

In SourceWeft

  1. Open OpenPLZ — German postal codes, streets & administrative tree in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

openplz-mcp 🧭

mcp-name: io.github.mohammad-abbasi-sh/openplz-mcp

Unofficial read-only MCP server for German postal data via the OpenPLZ API (by the openpotato project): localities, streets, municipalities, districts, government regions and the 16 federal states (Bundesländer) — with the official administrative keys. No key, no login.

Built by Mohammad Abbasi as part of the "Germany MCP factory". Not affiliated with the OpenPLZ API / openpotato project.

For AI agents

Add to your MCP client config (stdio):

json
{  "mcpServers": {    "openplz": {      "command": "uvx",      "args": ["openplz-mcp==0.1.0"]    }  }}

Or run locally: python -m openplz_mcp.server (needs mcp<2, httpx).

Tools

ToolDescription
openplz_lookup_postal_codeWhich locality (or localities) a German postal code belongs to
openplz_search_localitySearch localities (Orte) by name, optionally within one postal code
openplz_search_streetSearch streets by name, postal code and/or locality
openplz_full_text_searchFree-form street search across street name, postal code and city
openplz_list_federal_statesAll 16 federal states (Bundesländer) with key + capital
openplz_admin_childrenWalk one step down the administrative tree (state → district → municipality …)
openplz_healthReachability check (ok / blocked / error) — one polite request

Example output (openplz_lookup_postal_code / 10115):

json
{"postal_code": "10115", "count": 1, "localities": [{"postal_code": "10115", "name": "Berlin",   "municipality": {"key": "11000000", "name": "Berlin, Stadt", "type": "Kreisfreie Stadt"},   "federal_state": {"key": "11", "name": "Berlin"}}]}

Notes:

  • A German postal code is exactly 5 digits (e.g. 10115 = Berlin-Mitte, 80331 = München).
  • Official administrative keys: federal states "01"–"16" (Berlin "11", Bayern "09"), districts 5 digits ("11000" = Berlin), municipalities 8 digits ("09162000" = München). Use them with openplz_admin_children — e.g. federal_state "11" → districts returns the single Berlin district; district "11000" → localities lists Berlin's localities.
  • Street-name search matches the stored, abbreviated form (e.g. "Ackerstr."). For free-form queries (e.g. "10115 Berlin" or "München Marienplatz") use openplz_full_text_search.
  • A postal code can cover several localities, and a locality can have several postal codes — openplz_lookup_postal_code returns all of them.
  • Data covers Germany only (/de/ endpoints); the OpenPLZ API also serves Austria (/at/) and Switzerland (/ch/), which this server does not expose.

Built by Mohammad Abbasi — Almanibama · mabbasi.ir

Source: README.md at commit f6664b7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestNov 14, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts