mcp-abfall
mcp-abfall
英語 · ドイツ語
ドイツの都市と郡のごみ収集カレンダーを提供するMCPサーバー。指定された住所について、収集日(残余廃棄物、生ごみ、紙、包装材、粗大ごみ、有害廃棄物の収集場所)を検索します。
address ──▶ Nominatim ──▶ municipality + district ──▶ provider search (995)
│
collection dates ◀── portal ◀── resolve argumentsなぜこれは簡単ではないのか
ドイツの廃棄物管理は自治体単位で運営されています。全国規模のAPIは存在しません。約400の公的廃棄物当局がそれぞれ独自のポータルを運営しており、その背後には少数のソフトウェアプラットフォーム(Abfall.IO/AbfallPlus、AbfallNavi、Jumomind、AWIDO、C-Trace、Müllmax、その他多数の単純なICSエクスポート)があります。
このサーバーは、データソースとして mampfes/hacs_waste_collection_schedule (MIT) を使用しています。これは950以上のソースモジュールを備え、活発にメンテナンスされているプロジェクトです。その内部パッケージはHome Assistantから独立しており、ここではGitサブモジュールとして組み込まれています。
このプロジェクトの実際の作業は、住所を担当の廃棄物当局とその内部パラメータに変換することです。Home Assistantでは人間が一度クリックするだけで済みますが、MCPサーバーはそれを自力で行わなければなりません。
Related MCP server: vnbdigital-mcp
インストール
このサーバーは、インストールされたパッケージとしてではなくリポジトリのチェックアウトから実行されます。vendor/ ディレクトリのデータソースと data/ ディレクトリのレジストリが必要で、どちらもプロジェクトルートからの相対パスで解決されます。これがPyPIにない理由でもあります。wheelは正常にインストールされるでしょうが、それでも動作しません。
git clone --recurse-submodules https://github.com/AlpayC/mcp-abfall.git
cd mcp-abfall
uv sync
uv run pytestdata/providers.json はリポジトリにチェックインされているので、サーバーはすぐに起動します。サブモジュールを更新したら、再構築してください:
uv run python scripts/build_registry.py接続方法
ローカルではstdio経由 — claude_desktop_config.json または .mcp.json で:
{
"mcpServers": {
"abfall": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-abfall", "run", "mcp-abfall"]
}
}
}HTTPサービスとして:
uv run mcp-abfall --http --host 127.0.0.1 --port 8000すべてのHTTPリクエストが当局のポータルとNominatimに負荷をかけることに注意してください。個人利用を超える用途では、前面にキャッシュを置き、その背後に独自のNominatimインスタンスを配置してください(MCP_ABFALL_NOMINATIM_URL)。
ツール
ツール名と応答はドイツ語です。ドメインとユーザーがドイツ語だからです。
ツール | 目的 |
| 住所を入力すると収集日を返します。通常のエントリポイントです。 |
| ジオコーディングなしで、場所または事業者名で当局を検索します。 |
| 当局がどの引数を期待するかを示します。 |
| 対象を絞ったクエリ。フォローアップの質問に答える場合などに使用します。 |
| カバーされている当局とデータソースの数を示します。 |
さらに、当局の完全なリストを持つリソース abfall://traeger があります。
推測より尋ねる
値が一意に決定できない場合、サーバーは推測する代わりに、具体的な選択肢のリストとともに status: "rueckfrage" を返します。これは意図的な設計です。町を誤って推測すると、隣接する自治体のカレンダーが平然と返ってきます。それは正しい答えのように見える間違った答えです。
カバレッジ(実測値)
scripts/build_registry.py は、150のソースモジュールから995の廃棄物当局を収集します。
scripts/smoke.py は実際のポータルに対して実際の住所を照会します。ドイツ全土の21の住所での実行(2026年8月時点):
結果 | 割合 |
収集日が直接返された | 48 % |
不足している詳細についてのフォローアップ質問 | 14 % |
当局が日付を返さなかった | 38 % |
これは推定ではなく実測値です。そして、ここでその数字を述べる理由でもあります。「すべてのドイツの都市をカバーしている」というのは、当局リストについては真実ですが、素の住所から完全に自動で解決することについては真実ではありません。
独自のIDルックアップを持つ当局
一部のポータルは、住所から導出できない内部識別子を必要とします。これらのために、ポータルの住所ダイアログが lookup.py に再実装されています:
当局 | 識別子 | 範囲 |
Abfall.IO / AbfallPlus |
| 41の当局 |
Stadtreinigung Hamburg |
| ハンブルク |
Berliner Stadtreinigungsbetriebe |
| ベルリン |
アップストリーム側のハンブルク用ウィザードは、現在では古くなっています。ポータルがフォームをJavaScriptコンポーネントに移行したため、ここではその住所エンドポイントをページから読み出しています。
残りのケースが失敗する場所
ルックアップパスがない追加のID引数: ドレスデンの
standort、ライプツィヒのidHouseNumber、シュトゥットガルトのstreetnr。それぞれ、上記3つと同じパターンに従うリゾルバがもう1つ必要です。異なる綴りを使用し、候補リストを提供しないポータル(エアフルト、キール)。
当局側の障害、レート制限、不正なレスポンス(ザールブリュッケンはICSの代わりにHTMLを返します)。
レイアウト
ファイル | 役割 |
| ベンダー提供ライブラリへのブリッジ。パッケージを |
| 当局リストと、ドイツ語のステミングによる場所の検索。 |
| Nominatim、住所のバリエーション、妥当性チェック。 |
| 住所 → 当局 → 解決済み引数 → 収集日。 |
| 内部IDを持つ当局(Abfall.IO、ハンブルク、BSR)の住所ダイアログ。 |
| MCPツール、stdio、HTTP。 |
レジストリは実行時に構築されません。data/providers.json はスクリプトによって生成され、サーバー起動時に150のモジュールをインポートしないようにしています。サブモジュールの更新後は再構築してください。
データソースと利用方法
収集日は各廃棄物当局のポータルから取得され、住所解決は Nominatim (OpenStreetMap) から取得されます。Nominatimには利用ポリシーがあり、1秒あたり最大1リクエストまでです。サーバーはこれを尊重し、結果を ~/.cache/mcp-abfall/ にキャッシュします。
粗大ごみや有害廃棄物の収集など、日程に依存する用事がある場合は、各レスポンスに含まれるポータルアドレスを確認する価値があります。
コントリビューション
最も有用なコントリビューションは、ある当局が動作しないという報告です。適切な質問がまとめられた issueテンプレート があります。当局リゾルバの追加方法は CONTRIBUTING.md にあります。セキュリティ上の問題は非公開の報告に含めるべきです。SECURITY.md を参照してください。変更履歴は CHANGELOG に記載されています。このリポジトリで作業するエージェントは AGENTS.md を読むべきです。
プロジェクト全体に通じる一つの原則は、コントリビューションにも適用されます。疑わしいときは推測せず、尋ねること。 町を誤って推測すると、隣接する自治体のカレンダーが平然と返ってきます。それは正しい答えのように見える間違った答えです。
ライセンス
MITライセンスです。LICENSE を参照してください。サブモジュール vendor/hacs_waste_collection_schedule は独自のMITライセンスの下にあります。Copyright (c) 2020 Steffen Zimmermann — このリポジトリはそれを参照するだけで、コードを同梱しません。第三者の帰属表示は NOTICE にまとめられています。
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
- FlicenseNot gradedqualityCmaintenanceProvides unified access to Deutsche Bahn APIs for real-time railway data, station information, timetables, disruptions, parking, and accessibility services.18
- 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
- AlicenseAqualityAmaintenanceKeyless remote MCP server for German public-infrastructure open data: weather, air quality, traffic, public transit, parking and roadworks across 84+ German cities (DWD, Umweltbundesamt, Mobilithek, GovData). 38 read-only tools.1213Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides programmatic access to official German Bundestag parliamentary data, enabling LLMs to answer questions about legislation, voting records, and members.1MIT
Related MCP Connectors
GovData.de MCP — Germany's national open-data portal (CKAN API).
Real public holiday lookup for 206 countries via a rule-based calendar engine. Paid via x402.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
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/AlpayC/mcp-abfall'
If you have feedback or need assistance with the MCP directory API, please join our Discord server