ziroom-mcp
Ziroom MCP
Dies ist ein MCP-Dienst für die Ziroom-Vermietung: Er unterstützt sowohl zustandsbehaftete Immobilienfilterung als auch das sitzungslose Abrufen einer einzelnen Detailseiten-URL. Bei der Suche ruft der Agent Werkzeuge kontinuierlich in derselben session_id auf; der Server verwaltet die Browser-Seite, den Filterzustand, die Versionsnummer und einen Rollback-Prüfpunkt.
Werkzeuge
create_search_session: Öffnet die entsprechende Ziroom-Seite basierend auf der Stadt.get_filter_schema: Liest die aktuellen Felder, Optionen, Steuerelementtypen und den ausgewählten Zustand.search_location: Sucht nach Wohnanlagen, Geschäftsvierteln oder U-Bahn-Stationen.select_filter_option: Wählt ein Einfach- oder Mehrfachauswahl-Label.set_filter_range: Legt den Mietpreisbereich fest.set_sort: Legt die Sortierung nach Preis, Fläche usw. fest.get_results: Gibt die Namen der Angebote, URLs, alle aktuellen Bedingungen und das Verifizierungsergebnis zurück.get_listing_detail: Gibt über eine/x/{listing-id}.html-URL strukturierte Details und einen chinesischen Markdown-Bericht zurück.restore_checkpoint: Stellt den vollständigen Zustand vor einer Operation wieder her.reset_filter: Setzt das angegebene Feld vollständig auf den Standardwert zurück.close_search_session: Schließt die Seite und gibt Ressourcen frei.
Installation
cd C:\path\to\ziroom-mcp
python -m venv .venv
.venv\Scripts\python.exe -m pip install -e ".[test]"Der Dienst verwendet bevorzugt das bereits unter Windows installierte Chrome oder Edge. Wenn kein Browser verfügbar ist, wird Playwright Chromium installiert:
.venv\Scripts\python.exe -m playwright install chromiumDas Abrufen von Details und die Suche verwenden denselben Playwright-Browserprozess. Jeder Aufruf von get_listing_detail erstellt einen unabhängigen BrowserContext, der nach dem Lesen sofort geschlossen wird und keine bestehende Suchsitzung beeinträchtigt. Die Preis-Ziffern-Sprite-Bilder werden über den Playwright-Request-Kontext heruntergeladen und dekodiert.
Start
.venv\Scripts\ziroom-mcp.exeDer Dienst verwendet standardmäßig stdio; Protokolle dürfen nicht nach stdout geschrieben werden.
Verwendung von Streamable HTTP:
$env:ZIROOM_TRANSPORT="streamable-http"
$env:ZIROOM_HOST="127.0.0.1"
$env:ZIROOM_PORT="8000"
.venv\Scripts\ziroom-mcp.exeDer HTTP-MCP-Endpunkt ist http://127.0.0.1:8000/mcp und verwendet den mit Cloudflare Quick Tunnel kompatiblen JSON-Antwortmodus.
Bei Verwendung eines Reverse-Proxy, der den öffentlichen Host weiterleitet, setzen Sie zusätzlich $env:ZIROOM_BEHIND_PROXY="1". Nach der Aktivierung muss ZIROOM_HOST=127.0.0.1 beibehalten werden, um ein direktes Abhören des öffentlichen Netzwerkadapters zu vermeiden.
Ziroom gibt derzeit für headless Chrome einen leeren Inhalt zurück, daher startet der Dienst standardmäßig einen sichtbaren Browser. Aktivieren Sie den headless-Modus nur, wenn die Zielseite nachweislich unterstützt wird:
$env:ZIROOM_HEADLESS="1"
.venv\Scripts\ziroom-mcp.exeAlternativ kann die Chrome/Edge-Ausführungsdatei über ZIROOM_CHROME_PATH angegeben werden.
Dieselbe Suchsitzung verwendet immer denselben Browser-Tab. Nach der Navigation über Filterlinks behält der Dienst die vorhandenen Abfrageparameter bei, setzt isOpen wieder auf 1 und lokalisiert dann das nächste Element neu; falls die Website den Ziellink weiterhin im DOM verbirgt, wird als Fallback ein DOM-Klick verwendet.
Aufrufkonventionen für den Agenten
Beim Abrufen einer einzelnen Detailseite rufen Sie get_listing_detail einmal direkt auf; es ist nicht erforderlich, eine Suchsitzung zu erstellen oder zu schließen:
{
"url": "https://wh.ziroom.com/x/123456.html",
"timeout_seconds": 30,
"retries": 4,
"include_report": true
}Der Rückgabewert enthält listing_id, url, fetched_at, ein strukturiertes listing sowie optional report_markdown.
Beim Filtern von Immobilien ist die folgende Reihenfolge einzuhalten:
Rufen Sie
create_search_sessionauf.Rufen Sie
get_filter_schemaauf und wählen Sie nur die aktuell von der Seite zurückgegebenen Labels.location,areaundmetrosind sich gegenseitig ausschließende Suchmethoden; behalten Sie nur eine. Bauen Sie eine Fallback-Warteschlange in der Reihenfolgelocation→area→metroauf. Wenn die bevorzugte Option einen Fehler meldet, nicht beibehalten wird oder null Ergebnisse liefert, versuchen Sie nach Bestätigung, dass die Seite wiederhergestellt wurde, die nächste Option.Alle Änderungswerkzeuge verwenden dieselbe
session_idund übergeben die im vorherigen Schritt zurückgegebenestate_version.Prüfen Sie nach jeder Änderung
has_results.Wenn
false, rufen Sierestore_checkpointmit dem diesmal zurückgegebenencheckpointauf und setzen Siereasonaufempty_results.Wenn
skipped=trueundreason=page_did_not_retain_optionzurückgegeben werden, bedeutet dies, dass die Seite dieses Label nicht beibehalten hat und das Werkzeug den ursprünglichen Zustand wiederhergestellt hat;restore_checkpointdarf nicht aufgerufen werden. Aktualisieren Sie das Schema und protokollieren Sie es als nicht verfügbar oder führen Sie gemäß Geschäftsregeln begrenzte Wiederholungen durch. Andere Änderungswerkzeuge geben entsprechendreason=page_did_not_retain_changezurück.Rufen Sie abschließend
get_resultsauf und validieren Sie überexpected_filtersalle Bedingungen, die beibehalten werden sollen.Rufen Sie nach Abschluss
close_search_sessionauf.
Erwartbare Filterkonflikte werden nicht als Werkzeugfehler zurückgegeben. Wenn die aktuelle Seite keine Option hat, die Option bereits angewendet wurde, die Seite die Änderung nicht beibehalten hat oder ein Konflikt zwischen location/area/metro besteht, gibt das Änderungswerkzeug skipped=true, state_changed=false zurück und behält die ursprüngliche state_version und alle ausgewählten Bedingungen bei; der Agent sollte den Grund protokollieren und mit dem nächsten Eintrag fortfahren. Echte Versionskonflikte, Sitzungsablauf, Site-Fehler und interne Fehler werden weiterhin als Werkzeugfehler zurückgegeben.
Tests
.venv\Scripts\python.exe -m pytest -m "not live" -vAlle MCP-Werkzeuge verfügen über Offline-Protokollschicht-Tests:
Die Tests starten außerdem einen stdio-Server-Unterprozess mit einem Fake-Web-Backend, um die MCP-Initialisierung, die Werkzeugerkennung und den Werkzeugaufruf zu verifizieren. ZIROOM_BACKEND=fake ist nur für automatisierte Tests vorgesehen.
Smoke-Test mit echten Webseiten:
$env:ZIROOM_LIVE_TEST="1"
.venv\Scripts\python.exe -m pytest -m live -vThis 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 Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants
Hotel booking MCP server. Search, book, and manage reservations across 250K+ properties worldwide.
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/crispyian/playwright_with_ziroom'
If you have feedback or need assistance with the MCP directory API, please join our Discord server