mcp-abfall
mcp-abfall
English · Deutsch
독일 도시와 구역의 폐기물 수거 일정을 위한 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에 없는 이유이기도 합니다. 휠은 깔끔하게 설치되지만 여전히 작동하지 않을 것이기 때문입니다.
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).
도구
도구 이름과 응답은 독일어입니다. 도메인과 사용자가 독일어이기 때문입니다.
Tool | Purpose |
| 주소 입력, 수거 날짜 출력. 일반적인 진입점입니다. |
| 지역 또는 회사 이름으로 당국을 검색합니다. 지오코딩 없음. |
| 당국은 어떤 인수를 기대하나요? |
| 대상 쿼리, 예: 후속 질문에 답하기 위해. |
| 얼마나 많은 당국과 데이터 소스가 포함되는지. |
또한 전체 당국 목록이 포함된 abfall://traeger 리소스가 있습니다.
묻는 것이 추측보다 낫다
값을 명확하게 결정할 수 없을 때 서버는 추측하는 대신 status: "rueckfrage"와 구체적인 옵션 목록을 반환합니다. 이는 의도적입니다. 잘못 추측된 도시는 기꺼이 이웃 지방자치단체의 일정표를 반환할 것입니다. 옳은 것처럼 보이는 틀린 답변입니다.
측정된 커버리지
scripts/build_registry.py는 150개의 소스 모듈에서 995개 폐기물 당국을 수집합니다.
scripts/smoke.py는 실제 주소를 실제 포털에 질의합니다. 독일 전역 21개 주소에 대한 실행(2026년 8월 기준):
Outcome | Share |
수거 날짜가 직접 반환됨 | 48 % |
누락된 세부 정보에 대한 후속 질문 | 14 % |
어떤 당국도 날짜를 반환하지 않음 | 38 % |
이것은 추정치가 아니라 측정된 수치입니다. 그리고 여기서 언급하는 이유는 “모든 독일 도시를 포함한다”는 것이 당국 목록에 대해서는 사실이지만, 맨 주소만으로 완전 자동 해석에 대해서는 사실이 아니기 때문입니다.
자체 ID 조회가 필요한 당국
일부 포털은 주소에서 파생할 수 없는 내부 식별자를 요구합니다. 이러한 경우 포털의 주소 대화상자가 lookup.py에 재구현되어 있습니다:
Authority | Identifier | Scope |
Abfall.IO / AbfallPlus |
| 41개 당국 |
Stadtreinigung Hamburg |
| 함부르크 |
Berliner Stadtreinigungsbetriebe |
| 베를린 |
함부르크의 업스트림 마법사는 이제 구식입니다. 포털이 양식을 JavaScript 구성 요소로 옮겼으며, 여기서는 해당 주소 엔드포인트를 페이지에서 읽어냅니다.
나머지 사례가 실패하는 지점
조회 경로가 없는 추가 ID 인수: 드레스덴의
standort, 라이프치히의idHouseNumber, 슈투트가르트의streetnr. 위의 세 가지와 같은 패턴을 따르는 각각 하나의 리졸버가 더 필요합니다.제안 목록을 제공하지 않는 다른 철자를 사용하는 포털 (에르푸르트, 킬).
당국 측의 장애, 속도 제한 및 잘못된 형식의 응답 (자르브뤼켄은 ICS 대신 HTML을 반환합니다).
레이아웃
File | Responsibility |
| 벤더 라이브러리에 대한 브리지; |
| 당국 목록 및 독일어 어간 추출을 사용한 위치 검색. |
| Nominatim, 주소 변형, 타당성 검사. |
| 주소 → 당국 → 확인된 인수 → 수거 날짜. |
| 내부 ID가 있는 당국에 대한 주소 대화상자(Abfall.IO, 함부르크, BSR). |
| MCP 도구, stdio 및 HTTP. |
레지스트리는 런타임에 빌드되지 않습니다. data/providers.json은 스크립트로 생성되므로 서버를 시작할 때 150개 모듈을 가져오지 않습니다. 서브모듈 업데이트 후 다시 빌드하세요.
데이터 소스 및 사용
수거 날짜는 각 폐기물 당국의 포털에서, 주소 해석은 Nominatim(OpenStreetMap)에서 가져옵니다. Nominatim에는 사용 정책이 있습니다. 초당 최대 1회 요청이며, 서버는 이를 준수하고 결과를 ~/.cache/mcp-abfall/에 캐시합니다.
무언가가 의존하는 날짜(대형 폐기물, 유해 폐기물 수거 지점)의 경우 모든 응답에 포함된 포털 주소를 확인해 볼 가치가 있습니다.
기여
가장 유용한 기여는 특정 당국이 작동하지 않는다는 보고입니다. 올바른 질문을 담은 이슈 템플릿이 있습니다. 당국 리졸버를 추가하는 방법은 CONTRIBUTING.md에 있습니다. 보안 문제는 비공개 보고에 해당하며, SECURITY.md를 참조하세요. 변경 사항은 CHANGELOG에 나열됩니다. 이 저장소에서 작업하는 에이전트는 AGENTS.md를 읽어야 합니다.
하나의 원칙이 프로젝트 전체에 흐르며 기여에도 적용됩니다. 의심스러우면 묻고, 추측하지 마세요. 잘못 추측된 도시는 기꺼이 이웃 지방자치단체의 일정표를 반환합니다. 옳은 것처럼 보이는 틀린 답변입니다.
라이선스
MIT, LICENSE 참조. 서브모듈 vendor/hacs_waste_collection_schedule는 자체 MIT 라이선스(저작권 (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