Abfallkalender Deutschland

io.github.AlpayC由 GitHub 帳號 AlpayC 發布v0.2.0更新於 Oct 24, 2026

Waste collection dates for German addresses from municipal authority calendars.

已驗證Streamable HTTP可網頁執行位置與生活網頁搜尋與抓取

概覽

AI 產生的概覽

依德國地址查詢垃圾清運日期,自動判定負責的市政清運單位及其入口網站參數。

可以做什麼
依德國地址查詢清運日期,涵蓋一般垃圾、有機垃圾、紙類、包裝與大型垃圾,資訊不足時會進一步詢問。依地名或單位名稱搜尋清運單位,不需地理編碼,並檢視某單位需要的參數、範例地點與入口網站。直接向已知單位查詢清運日期。查看已收錄的單位與資料來源數量,並以資源形式讀取完整單位清單。
適用情境
適合在有人詢問德國某地址的垃圾桶何時清運,或想知道某地由哪個單位負責時使用,可直接從市政入口網站取得答案而非猜測。也適合追問某單位的具體參數或入口網站資訊。
執行需求
可使用遠端 Streamable HTTP 端點,或在本機以 uv 執行倉庫檢出(不是已安裝的套件,需要 vendor 資料來源與登錄表)。未宣告驗證、金鑰或請求標頭。需連網存取 Nominatim 進行地址解析,並存取各清運單位的入口網站。
安裝前請注意
每次請求都會對市政入口網站與 Nominatim 造成負載;超出個人使用時,README 建議加上快取並透過 ABFALL_MCP_NOMINATIM_URL 使用自建 Nominatim。覆蓋率有限:實測約一半地址能直接回傳日期,部分單位會失敗。對重要的清運日期,請依回應中提供的入口網站網址核對。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Abfallkalender Deutschland,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.AlpayC%2Fabfall-mcp-server/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "abfallkalender-deutschland": {
      "type": "http",
      "url": "https://abfall-mcp.alpaycelik.dev/mcp"
    }
  }
}

README

abfall-mcp-server

English · Deutsch

[CI] [License: MIT] [Python 3.11+] [Providers: 995]

[MCP 2026-07-28 readiness]

MCP server for the waste collection calendars of German cities and districts. Looks up collection dates — residual waste, organic waste, paper, packaging, bulky waste, hazardous waste collection points — for a given address.

Website and interactive setup guide: abfall-mcp.alpaycelik.dev.

address ──▶ Nominatim ──▶ municipality + district ──▶ provider search (995)                                                              │                       collection dates ◀── portal ◀── resolve arguments

Why this is not trivial

Waste management in Germany is organised municipally. There is no nationwide API — roughly 400 public waste authorities each run their own portal, backed by a handful of software platforms (Abfall.IO/AbfallPlus, AbfallNavi, Jumomind, AWIDO, C-Trace, Müllmax, plus many plain ICS exports).

This server uses mampfes/hacs_waste_collection_schedule (MIT) as its data source — an actively maintained project with over 950 source modules. Its inner package is independent of Home Assistant and is wired in here as a Git submodule.

The actual work of this project is turning an address into the responsible waste authority and its internal parameters. In Home Assistant a human clicks that together once; an MCP server has to do it on its own.

Installation

The server runs from a repository checkout, not as an installed package: it needs the data source under vendor/ and the registry under data/, both resolved relative to the project root. That is also why it is not on PyPI — a wheel would install cleanly and still not work.

bash
git clone --recurse-submodules https://github.com/AlpayC/abfall-mcp-server.gitcd abfall-mcp-serveruv syncuv run pytest

data/providers.json is checked in, so the server starts right away. After a submodule update, rebuild it:

bash
uv run python scripts/build_registry.py

Wiring it up

Public remote via Streamable HTTP:

json
{  "mcpServers": {    "abfall": {      "url": "https://abfall-mcp.alpaycelik.dev/mcp"    }  }}

The service health endpoint is https://abfall-mcp.alpaycelik.dev/health.

Locally over stdio — in claude_desktop_config.json or .mcp.json:

json
{  "mcpServers": {    "abfall": {      "command": "uv",      "args": ["--directory", "/path/to/abfall-mcp-server", "run", "abfall-mcp-server"]    }  }}

As an HTTP service:

bash
uv run abfall-mcp-server --http --host 127.0.0.1 --port 8000

Keep in mind that every HTTP request puts load on the authorities' portals and on Nominatim. For anything beyond personal use, put a cache in front and your own Nominatim instance behind it (ABFALL_MCP_NOMINATIM_URL).

Tools

Tool names and responses are German, because the domain and the users are.

ToolPurpose
abfuhrtermineAddress in, collection dates out. The usual entry point.
finde_traegerSearch authorities by place or company name, no geocoding.
traeger_detailsWhich arguments does an authority expect?
abfuhrtermine_fuer_traegerTargeted query, e.g. to answer a follow-up question.
abdeckungHow many authorities and data sources are covered.

Plus the resource abfall://traeger with the full list of authorities.

Asking beats guessing

When a value cannot be determined unambiguously, the server returns status: "rueckfrage" along with the concrete list of options instead of guessing. That is deliberate: a wrongly guessed town cheerfully returns the neighbouring municipality's calendar — a wrong answer that looks like a right one.

Coverage, measured

scripts/build_registry.py collects 995 waste authorities from 150 source modules.

scripts/smoke.py queries real addresses against the real portals. A run over 21 addresses across Germany (as of Aug 2026):

OutcomeShare
Collection dates returned directly48 %
Follow-up question for a missing detail14 %
No authority returned dates38 %

That is the measured number, not an estimate — and the reason to state it here: "covers every German city" is true of the authority list, not of fully automatic resolution from a bare address.

Authorities with their own ID lookup

Some portals require internal identifiers that cannot be derived from an address. For these, the portal's address dialog is reimplemented in lookup.py:

AuthorityIdentifierScope
Abfall.IO / AbfallPlusf_id_kommune, f_id_strasse, …41 authorities
Stadtreinigung HamburghnIdHamburg
Berliner Stadtreinigungsbetriebeschedule_idBerlin

The upstream wizard for Hamburg is stale by now — the portal moved its form to a JavaScript component, whose address endpoint is read out of the page here.

Where the remaining cases fail

  • Further ID arguments with no lookup path: standort in Dresden, idHouseNumber in Leipzig, streetnr in Stuttgart. One more resolver each, following the same pattern as the three above.
  • Portals using different spellings that ship no list of suggestions (Erfurt, Kiel).
  • Outages, rate limiting and malformed responses on the authorities' side (Saarbrücken returns HTML instead of ICS).

Layout

FileResponsibility
wcs.pyBridge to the vendored library; registers the package deliberately instead of putting it on sys.path (its parent directory holds a calendar.py that shadows the stdlib).
registry.pyAuthority list and location search with German stemming.
geo.pyNominatim, address variants, plausibility checks.
resolve.pyAddress → authority → resolved arguments → collection dates.
lookup.pyAddress dialogs for authorities with internal IDs (Abfall.IO, Hamburg, BSR).
server.pyMCP tools, stdio and HTTP.

The registry is not built at runtime: data/providers.json is produced by a script so that starting the server does not import 150 modules. Rebuild it after a submodule update.

Data sources and usage

Collection dates come from the portals of the respective waste authorities, address resolution from Nominatim (OpenStreetMap). Nominatim has a usage policy — at most one request per second; the server honours it and caches results in ~/.cache/abfall-mcp-server/.

For dates something depends on (bulky waste, hazardous waste collection), it is worth checking the portal address that every response carries.

Contributing

The most useful contribution is a report that some authority does not work — there is an issue template with the right questions. How to add an authority resolver is in CONTRIBUTING.md; security issues belong in a private report, see SECURITY.md. Changes are listed in the CHANGELOG. Agents working on this repository should read AGENTS.md.

One principle runs through the whole project and applies to contributions too: when in doubt, ask — do not guess. A wrongly guessed town cheerfully returns the neighbouring municipality's calendar — a wrong answer that looks like a right one.

License

MIT, see LICENSE. The submodule vendor/hacs_waste_collection_schedule is under its own MIT license, Copyright (c) 2020 Steffen Zimmermann — this repository only references it, it does not ship the code. Third-party attributions are collected in NOTICE.

來源:README.md,提交 10bdac5

工具

5

abfuhrtermine

Abfuhrtermine zu einer Adresse

Ermittelt den zustaendigen Entsorgungstraeger fuer eine deutsche Adresse und liefert dessen Abfuhrtermine. Erster Anlaufpunkt fuer Fragen wie 'Wann wird bei mir die Biotonne geleert?'.

輸入參數bisvonlimitadresse必填strassehausnummerabfallarten

finde_traeger

Entsorgungstraeger suchen

Sucht Entsorgungstraeger nach Orts- oder Betriebsnamen, ohne Geocoding. Nuetzlich, wenn die Adresssuche nichts findet oder der Betrieb bekannt ist.

輸入參數limitsuchbegriff必填

traeger_details

Details zu einem Traeger

Zeigt, welche Argumente ein Traeger erwartet, welche Orte als Beispiel hinterlegt sind und wo sein Portal liegt.

輸入參數traeger_id必填

abfuhrtermine_fuer_traeger

Abfuhrtermine eines bestimmten Traegers

Fragt einen Traeger direkt ab - fuer Rueckfragen aus `abfuhrtermine` oder wenn der Traeger bereits feststeht.

輸入參數bisvonlimitadresseargumentetraeger_id必填abfallarten

abdeckung

Abdeckung

Zeigt, wie viele Entsorgungstraeger und Datenquellen erfasst sind.

無需輸入參數。

版本歷史

1
  1. v0.2.0最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分