Mieszkalnictwo26 min czytania
Ceny mieszkań dla agentów AI: serwer MCP dla deweloperuch.pl
Jak w tydzień, z zespołem agentów AI, zbudowałem serwer MCP, który daje asystentom AI dostęp do cen ofertowych i transakcyjnych oraz statystyk z deweloperuch.pl, nie obciążając serwisu, i co to zmienia w porównaniu z wklejaniem linku.
W tym wpisie · 13
W dobie rewolucji AI kluczowa staje się infrastruktura, która pozwala agentom sensownie korzystać z baz danych i wiedzy.
To właśnie interfejs jest de facto wąskim gardłem w zdobywaniu wiedzy. Interfejs przeglądarki zaprojektowano z myślą o naszej biologii i naszych nawykach, a to, co jest dobre dla człowieka, wcale nie musi być dobre dla AI. Oczywiście możemy w rozmowie z agentem AI wkleić link do jakiejś strony, żeby ją podsumował albo wyciągnął z niej interesujące nas dane. Takie podejście kosztuje jednak czas i tokeny: model przepala tokeny na analizę strony, której spora część to nie treść, tylko kod.
Dlatego zadałem sobie pytanie i potraktowałem je jak test: jak szybko, korzystając z agentów AI w rodzaju Claude Code, zbuduję narzędzie, dzięki któremu inni agenci będą mogli jak najlepiej korzystać z danych?
1. Internet zaprojektowany dla ludzi
Dzisiejsze technologie internetowe powstają z myślą o aplikacjach, z których korzystają ludzie. Zwykle mamy część widoczną dla użytkownika (frontend), czyli np. stronę internetową, którą oglądamy w przeglądarce i obsługujemy przez interfejs graficzny. Strona łączy się z zapleczem (backendem), czyli serwerem, który dostarcza dane, najczęściej przez API: za każdą informacją stoi osobne zapytanie.
Deweloperuch.pl pokazuje, że bywa jeszcze trudniej. Listy ofert i karty inwestycji nie mają tam osobnego API, a dane przychodzą wtopione w samą stronę. Podczas rozpoznania serwisu jedna z jego stron zajmowała 942 KB w postaci HTML, a te same dane w formacie, którego używa sama aplikacja, 98 KB, czyli mniej więcej dziesięć razy mniej.1
Agenci są na tyle inteligentni, że gdy zadamy im w rozmowie pytanie, potrafią rozebrać taki problem na czynniki pierwsze. Po pierwsze, kosztuje to jednak czas i tokeny. Po drugie, raz rozpracowany sposób dotarcia do danych przepada, gdy zamykamy czat. Przy każdym kolejnym pytaniu model musi od nowa rozgryźć budowę strony i sposób, w jaki komunikuje się ona z serwerem, a za każdym razem może to zrobić trochę inaczej.
To mnie skłoniło, żeby wyjść z inicjatywą i stworzyć serwer MCP dla deweloperuch.pl.
2. Drugi etat Kowalskiego
Ten tekst jest dla mnie ciągiem dalszym Przemyśleń na temat rynku mieszkaniowego. Pisałem tam, że o mieszkaniach rozmawiamy tak, jakby były butami albo telefonami, a hasło „jak się nie podoba, to nie kupuj” pomija to, że kupujący często nie ma realnego wyboru. To hasło zakłada jeszcze jedno: że kupujący wie, ile co kosztuje. Na rynku mieszkań przez lata nie wiedział.
Dlaczego akurat deweloperuch.pl? Bo to serwis bliski temu, w co wierzę: otwartym danym, dzięki którym możemy podejmować świadome decyzje zakupowe. Rynek nieruchomości rządzi się swoimi prawami. Ceny mieszkań są cenami umownymi i nie zawsze odzwierciedlają rzeczywistą wartość mieszkania, na którą składa się wiele czynników: lokalizacja, układ i cała reszta.
Jeszcze niedawno deweloperzy stosowali praktyki bardzo niewygodne dla kupujących: nie publikowali cen mieszkań. Typowy Kowalski musiał więc de facto wziąć drugi etat, żeby zebrać informacje o rynku, zrobić z tego doktorat i po drodze zostawić w każdym biurze sprzedaży swoje dane osobowe.
Podejrzewam, że niejawne cenniki były też wygodne dla deweloperów, bo dawały pole do elastycznej polityki cenowej. Dużo oglądających i chętnych? Cenę można dopasować do możliwości akurat tej osoby, która pyta. To ta sama logika, którą opisywałem w części o deweloperskich mesjaszach: firma nastawiona na zysk robi to, co jej się opłaca, w granicach wyznaczonych przez prawo.
Sytuację zmieniła dopiero ustawa z 21 maja 2025 roku o jawności cen, która dopisała do ustawy deweloperskiej dwa nowe artykuły. Od 11 lipca 2025 roku deweloper musi podawać na swojej stronie internetowej cenę metra kwadratowego i całego mieszkania, cenę komórki lokatorskiej albo miejsca postojowego, jeśli nie są wliczone, oraz wszystkie inne opłaty. Każdą zmianę ceny publikuje z datą, a poprzednie ceny muszą zostać widoczne, więc powstaje historia ceny. Te same dane raz dziennie trafiają na portal dane.gov.pl.2 Skala problemu przed ustawą była spora: według Otodom Analytics cenę widać było przy 77,3 procent mieszkań deweloperskich w tym serwisie (rok wcześniej przy 68,7 procent), a według RynekPierwotny.pl o cenę trzeba było zapytać w około 91 procentach ogłoszeń.3
Ustawa nie zamknęła tematu. We wrześniu 2025 roku, gdy minął okres przejściowy, w ogłoszeniach pojawiły się mieszkania za złotówkę, a do UOKiK trafiło ponad tysiąc skarg na deweloperów, którzy wciąż nie podawali cen.4 Ceny to zresztą niejedyny problem. W lipcu 2025 roku UOKiK ogłosił sześć decyzji, w których nałożył na deweloperów łącznie ponad 1,6 mln zł kar za wprowadzanie kupujących w błąd co do powierzchni mieszkań: część kupujących musiała potem dopłacać za metry pod ściankami działowymi. Decyzje nie są prawomocne.5
Deweloperuch.pl powstał w marcu 2025 roku jako oddolna inicjatywa: darmowa, bez reklam i bez sponsorów.67 Na początku zbierał ceny od ludzi, którzy odwiedzili biura sprzedaży.8 Dziś ceny ofertowe bierze z raportów, które deweloperzy muszą publikować na portalu dane.gov.pl, i pokazuje je razem z historią zmian.7
3. Ceny, które ktoś naprawdę zapłacił
Cena ofertowa mówi jednak tylko połowę prawdy: za ile deweloper chce sprzedać, a nie za ile ktoś kupił. To drugie zapisuje Rejestr Cen Nieruchomości (RCN). Prowadzi go łącznie 385 jednostek w całym kraju: starostowie, prezydenci miast na prawach powiatu i kilku wójtów oraz burmistrzów.9 Rejestr powstaje na podstawie aktów notarialnych: trafiają do niego m.in. cena, data i rodzaj transakcji, a przy mieszkaniach także powierzchnia, liczba pokoi i piętro.10
Te dane zbierano od lat, tylko trzeba było za nie płacić. Jeszcze na początku 2026 roku zbiór danych z rejestru kosztował 9,39 zł za każdą nieruchomość, a wyciąg 12,53 zł za transakcję. Kto chciał danych do dowolnych celów, np. żeby opublikować je w internecie, płacił podwójnie.11 Każde starostwo miało przy tym własny sposób przyjmowania wniosków. Powiaty zarabiały na tym w sumie około 8 mln zł rocznie, średnio około 20 tysięcy złotych na powiat.12 Typowy szlaban: dane publiczne, zebrane za publiczne pieniądze, zamknięte za symboliczną, ale skuteczną opłatą.
Dlatego cała akcja wokół RCN była wyjątkowym przejawem obywatelskiego zaangażowania. 31 sierpnia 2025 roku deweloperuch.pl ogłosił zbiórkę na zakup danych o transakcjach z 2025 roku z największych miast, m.in. Warszawy, Wrocławia, Krakowa, Łodzi, Poznania i Trójmiasta. Cel, na początku symboliczne 5 tysięcy złotych, trzeba było dwa razy podnosić. Do 2 września prawie 2500 osób wpłaciło 49 778,10 zł. Wpłaciła też ministra funduszy i polityki regionalnej Katarzyna Pełczyńska-Nałęcz, która napisała, że jej wpłata „uwolniła 35 cen mieszkań”.13 Kupione dane serwis publikuje za darmo, a surowe pliki z 12 miast udostępnia na GitHubie na licencji CC0, czyli bez żadnych ograniczeń.14
Kilka tygodni później zmieniło się prawo. Sejm 26 września 2025 roku jednogłośnie, 425 głosami, uchwalił nowelizację Prawa geodezyjnego i kartograficznego, która dopisała RCN do danych udostępnianych bez opłat i uchyliła tabelę opłat za rejestr.1516 Autorzy projektu pisali w uzasadnieniu wprost, że powszechny dostęp do tych danych ograniczy możliwości manipulowania cenami i poprawi pozycję osób, które szukają mieszkania.12 Ustawa weszła w życie 13 lutego 2026 roku. Pięć dni później Główny Urząd Geodezji i Kartografii udostępnił w serwisie geoportal.gov.pl dane z około 320 powiatów, zastrzegając, że to rozwiązanie tymczasowe.17 Pierwsze dane do swojego prowadzonego społecznie serwisu mojgeoportal.pl dodał wtedy były Główny Geodeta Kraju Waldemar Izdebski, zaczynając od około 380 tysięcy transakcji z Warszawy.6
Obie ustawy, o jawności cen i o bezpłatnym RCN, dobrze ilustrują to, o czym pisałem w podsumowaniu poprzedniego tekstu: rynek mieszkaniowy nie istnieje poza prawem. Ceny nie stały się jawne dlatego, że rynek sam do tego doszedł. Stały się jawne, bo zaczęły tego wymagać przepisy, a wcześniej obywatele zrzucili się na dane.
Otwarcie danych z RCN uchyliło rąbka tajemnicy o tym, ile mieszkania faktycznie kosztują, i dało zwykłemu Kowalskiemu możliwość podejmowania świadomych decyzji na podstawie rzeczywistych danych. Rejestr wciąż ma luki: na geoportalu widać tylko powiaty, które przekazały dane z pełną lokalizacją, a sam urząd nazywa to rozwiązanie tymczasowym.17
4. Krok dalej
Skoro RCN jest już otwarty, a deweloperuch.pl działa, zastanowiłem się, czy da się pójść o krok dalej: stworzyć serwer MCP, który pozwoli zwykłemu Kowalskiemu, niezależnie od wybranego agenta, szybciej i lepiej poznawać rynek. Zamiast składać zapytania link po linku, chciałem udostępnić agentowi zestaw narzędzi z odpowiednimi opisami i parametrami, tak żeby mógł z tych danych korzystać jak najlepiej.
Deweloperuch.pl łączy wszystkie trzy rodzaje danych w jednym miejscu: ceny ofertowe z historią, ceny transakcyjne z rejestru i oficjalne statystyki GUS i NBP. To idealny materiał dla agenta, który ma pomóc w decyzji o zakupie. Część liczb, które w Przemyśleniach cytowałem z raportów GUS, na przykład liczbę mieszkań oddanych do użytkowania, agent pobierze teraz jednym narzędziem. Uczciwie trzeba jednak dodać, że „niezależnie od agenta” ma dziś swoje granice: serwer działa w każdej aplikacji, która potrafi uruchomić lokalny serwer MCP, ale bez terminala zainstalujesz go tylko w Claude Desktop, jednym kliknięciem.
5. Czym jest MCP
Model Context Protocol to otwarty standard, który Anthropic przedstawił 25 listopada 2024 roku.18 Problem, który rozwiązuje, ujęto w zapowiedzi krótko: każde nowe źródło danych wymagało dotąd własnej, osobnej integracji. Chcesz, żeby asystent sięgał do kalendarza, bazy danych i serwisu z cenami mieszkań? Każde z tych połączeń trzeba było napisać od zera, osobno dla każdej aplikacji. MCP zastępuje to jednym protokołem: serwis udostępnia narzędzia raz, a korzysta z nich każda aplikacja, która ten protokół obsługuje.
Twórcy porównują MCP do portu USB-C dla aplikacji AI.19 Porównanie jest trafne w jednym ważnym punkcie: laptop nie musi wiedzieć, czy podłączasz dysk, czy monitor, a model nie musi znać budowy strony deweloperuch.pl. Wystarczy mu opis narzędzia: jak się nazywa, do czego służy i jakie przyjmuje parametry.
W MCP są trzy role:20
- host, czyli aplikacja AI, z którą rozmawiasz, na przykład Claude Desktop albo Claude Code;
- klient, czyli część hosta, która utrzymuje połączenie z jednym serwerem (dla każdego serwera host tworzy osobnego klienta);
- serwer, czyli program, który udostępnia narzędzia, dane i gotowe polecenia.
Serwer może udostępniać trzy rodzaje elementów: narzędzia, czyli działania, które model sam postanawia wywołać; zasoby, czyli dane do odczytu, o których użyciu decyduje aplikacja; oraz prompty, czyli gotowe szablony poleceń.20 Deweloperuch-mcp korzysta z dwóch: ma 13 narzędzi i 4 prompty, które w Claude Desktop pojawiają się jako gotowe polecenia, na przykład „Znajdź mieszkanie” albo „Oceń ofertę”.
Wiadomości między klientem a serwerem mają format JSON-RPC 2.0 i są przesyłane na jeden z dwóch sposobów: przez standardowe wejście i wyjście procesu (stdio), gdy serwer działa na tym samym komputerze, albo przez HTTP, gdy działa zdalnie.21 Deweloperuch-mcp działa lokalnie, przez stdio: Claude Desktop sam go uruchamia i sam wyłącza.
Model nie czyta strony: wybiera narzędzie na podstawie opisu, a serwer zwraca mu gotowe dane.
W ciągu pół roku MCP przestał być projektem jednej firmy i stał się standardem branżowym. W marcu 2025 roku wsparcie ogłosiło OpenAI, w kwietniu Google, a w maju Microsoft, który wprowadził MCP m.in. do GitHuba i Windows 11.22 Z kolei 9 grudnia 2025 roku Anthropic przekazał protokół nowemu funduszowi Agentic AI Foundation, działającemu przy Linux Foundation i założonemu wspólnie z firmami Block i OpenAI. Według tego samego ogłoszenia działało wtedy ponad 10 tysięcy aktywnych publicznych serwerów MCP.23
Jest też druga strona medalu. Lokalny serwer działa z uprawnieniami twojego konta, więc złośliwy serwer mógłby sięgnąć do plików albo kluczy, a opisy narzędzi mogą przemycać modelowi polecenia. Dlatego specyfikacja wymaga, żeby aplikacja pytała użytkownika o zgodę przed wywołaniem narzędzia.24 Serwery warto instalować tylko z zaufanych źródeł. Kod deweloperuch-mcp jest publiczny, więc każdy może sprawdzić, co robi.
6. Jak działa deweloperuch-mcp
Deweloperuch-mcp to nieoficjalny serwer MCP i narzędzie wiersza poleceń (CLI), które korzysta z publicznych danych deweloperuch.pl. Ma 13 narzędzi, wszystkie tylko do odczytu: niczego w serwisie nie tworzy ani nie zmienia.25 Opisy narzędzi, komunikaty błędów i wyniki są po polsku, bo serwis i jego użytkownicy są polscy.
Narzędzia odpowiadają na pytania, które zadaje kupujący:
- Gdzie to jest?
search_locations(bez cen). - Na co mnie stać?
search_offers,get_offer,search_investmentsiget_investment(ceny ofertowe). - Kim jest deweloper?
search_developersiget_developer(ceny ofertowe). - Czy w tym mieście jest drogo?
get_market_statistics(ceny ofertowe). - Za ile mieszkania naprawdę się sprzedają?
get_transaction_statistics,get_building,rank_locationsiestimate_property_value(ceny transakcyjne z RCN). - Jak to wygląda na tle kraju?
get_government_statistics(oficjalne dane GUS i NBP).
Tych trzech rodzajów cen nie wolno mieszać i serwer przypomina o tym modelowi w swoich instrukcjach. Cena ofertowa to kwota, za którą deweloper chce sprzedać. Cena transakcyjna pochodzi z aktu notarialnego: za tyle ktoś faktycznie kupił. Dane GUS i NBP to uśrednione statystyki. Najnowsze okresy w danych transakcyjnych są przy tym niepełne, bo akty trafiają do rejestru z opóźnieniem.26
Weźmy jedno pytanie: „mieszkania 40–55 m² w Krakowie do 800 tys. zł”. Model wybiera narzędzie search_offers z argumentami city=krakow, area_min=40, area_max=55 i price_max=800000. Dalej dzieje się tak:
- Serwer sprawdza argumenty, zanim cokolwiek wyśle. Literówka w nazwie parametru, np.
max_pricezamiastprice_max, kończy się błędem z listą poprawnych nazw. We wczesnej wersji roboczej taki parametr był po cichu pomijany i model dostawał wynik bez filtra.27 - Serwer składa adres listy ofert z tymi filtrami. Deweloperuch.pl nie ma do list ofert osobnego API, więc serwer prosi o tę samą stronę, którą widzi przeglądarka, ale w formacie danych samej aplikacji (React Server Components), bez HTML-a.1
- Zapytanie przechodzi przez bezpieczniki: pamięć podręczną (cache), ogranicznik zapytań, czyli limiter (najwyżej 1 zapytanie na sekundę, jedno naraz, wspólnie dla wszystkich procesów na komputerze), i blokadę STOP. Dopiero wtedy wychodzi jedno zapytanie z nagłówkiem, który przedstawia klienta nazwą projektu i linkiem do repozytorium.
- Parser wyciąga z odpowiedzi dane ofert i sprawdza, czy mają oczekiwaną strukturę. Jeśli serwis coś zmienił, model dostaje komunikat, że serwis mógł się zmienić, a nie zmyślone liczby.
- Do modelu wraca zwarty JSON: 10 ofert z ceną, metrażem, ceną za metr i zmianą ceny, a do tego linki do stron serwisu, które model może pokazać użytkownikowi.
Każda warstwa ma jedno zadanie, a bezpieczniki działają tam, gdzie zapytanie wychodzi do serwisu.
Kod jest podzielony na cztery warstwy. api komunikuje się z serwisem, models to same dane, bez dostępu do sieci, usecases to po jednym module na każdą operację, a consumers to proste punkty wejścia: serwer MCP i CLI. Dzięki temu serwer i wiersz poleceń korzystają z tego samego rdzenia, a testy mogą sprawdzać każdą warstwę osobno.
7. Uprzejmy klient
Deweloperuch.pl to projekt społeczny, który ktoś utrzymuje za własne pieniądze. Serwer, przez który dowolny agent AI może zadawać serwisowi pytania, łatwo zamieniłby się w maszynkę do zalewania go zapytaniami. Dlatego od pierwszego dnia projekt ma zasady, które łatwiej nazwać uprzejmością niż wydajnością:28
- Najwyżej 1 zapytanie na sekundę, jedno naraz, wspólnie dla wszystkich procesów na komputerze. Tyle, o ile prosi plik robots.txt serwisu (
Crawl-delay: 1). - Pamięć podręczna. Odpowiedź na pytanie powtórzone w ciągu kilku minut (najwyżej pięciu) nie wymaga kolejnego zapytania, tylko wraca z pamięci.
- STOP. Gdy serwis odpowie kodem 401, 403 lub 429 albo pokaże captchę, klient przestaje wysyłać zapytania we wszystkich procesach. Blokada po 429 mija sama po co najmniej 60 sekundach, pozostałe zdejmuje tylko człowiek, po sprawdzeniu przyczyny. Model dostaje polecenie, żeby przerwał, niczego nie ponawiał i zgłosił to użytkownikowi. Narzędzia, którym mógłby zdjąć blokadę sam, po prostu nie ma.
- Żadnych zrzutów. Część stron serwisu to pełne zrzuty danych. Strona statystyk transakcyjnych Warszawy ma 12,9 MB HTML-a ze wszystkimi transakcjami miasta. Serwer takich stron nie pobiera.
- Bez ponowień. Błąd serwisu kończy się komunikatem „spróbuj później”, a nie pętlą kolejnych prób.
Plik robots.txt serwisu wyklucza z automatycznego dostępu ścieżki /api/, więc zapytałem autorów deweloperuch.pl o zgodę. Autorzy zgodzili się 14 października 2026 roku na takie korzystanie z serwisu, bez dodatkowych warunków. Od wersji 0.1.2 klient przedstawia się w nagłówku User-Agent nazwą projektu i adresem repozytorium, więc autorzy widzą w logach, skąd przychodzi ruch.27
Hamulce widać w testach. Pełny zestaw testów na żywym serwisie, 120 testów, wysłał 84 prawdziwe zapytania i trwał 95,9 sekundy. Przy limicie jednego zapytania na sekundę same odstępy zajmują co najmniej 83 sekundy. Codzienna praca nad kodem w ogóle nie dotyka serwisu: 4648 przypadków testowych działa na zapisanych wcześniej odpowiedziach i nie otwiera ani jednego połączenia sieciowego.
Żeby sprawdzić, ile ta uprzejmość kosztuje w praktyce, zmierzyłem czas odpowiedzi wszystkich 13 narzędzi, każde raz bez cache i raz z cache.29
Pierwsze wywołanie trwa zwykle ułamek sekundy, powtórka kilka milisekund.
Mediana pierwszego wywołania wyniosła 107,9 ms, a powtórki z cache 5,4 ms. Najdłużej, bo 2,93 s, trwało pobranie profilu dewelopera, choć wymagało tylko jednego zapytania: serwis wolno generuje tę stronę przy pierwszym wejściu. Narzędzia, które potrzebują dwóch zapytań, trwają ponad sekundę, bo limiter rozdziela je sekundową przerwą. Nawet najwolniejsze narzędzie mieści się w trzech sekundach.
8. MCP kontra wklejony link
Najpierw porównajmy same drogi. Gdy wklejasz link, model dostaje adres i musi sam zdecydować, jak przeczytać stronę. Gdy korzysta z MCP, od początku wie, jakie ma narzędzia i co z nich dostanie.
Bez MCP model rozpracowuje stronę za każdym razem od nowa, z MCP sięga po gotowe narzędzie.
Teraz liczby. Wróćmy do tezy z początku, że wklejanie linku kosztuje czas i tokeny. Sprawdziłem, ile tekstu dostaje model w obu przypadkach. Dla pięciu typowych pytań porównałem odpowiedź narzędzia MCP ze stroną, którą człowiek wkleiłby do czatu. To dokładnie ta strona, do której narzędzie samo podaje link w swojej odpowiedzi. Zmierzyłem trzy rzeczy: długość odpowiedzi MCP, długość HTML-a strony i długość tekstu, który na stronie widać.29
HTML strony jest kilkadziesiąt razy dłuższy niż odpowiedź MCP, ale sam widoczny tekst już nie.
Surowy HTML okazał się od 61 do 164 razy dłuższy niż odpowiedź MCP, a w przypadku statystyk GUS i NBP aż 499 razy. Ta ostatnia para nie jest przy tym w pełni porównywalna, bo strona pokazuje wszystkie zbiory danych dla Krakowa, a narzędzie zwróciło jeden. Od 23 do 86 procent HTML-a to skrypty, w których aplikacja przekazuje przeglądarce dane i strukturę strony.
Obraz jest jednak bardziej złożony, niż sugeruje pierwsza liczba. Widoczny tekst strony, czyli to, co zostaje po wycięciu znaczników i skryptów, ma już tylko od 0,9 do 2,3 długości odpowiedzi MCP. A właśnie tak działają narzędzia do pobierania stron. WebFetch w Claude Code według własnego opisu zamienia stronę na markdown, a na pytanie o nią odpowiada mniejszy, szybszy model, zanim cokolwiek trafi do głównego. Przewaga MCP nie polega więc tylko na tym, że model czyta mniej. Polega na tym, że:
- dostaje dokładnie te pola, o które pytał, z nazwami i jednostkami, a nie tekst, który musi zinterpretować;
- dostaje też dane, których na stronie nie ma w widocznym tekście, bo aplikacja trzyma je w skryptach, np. do wykresów;
- za każdym razem korzysta z tego samego, przetestowanego narzędzia, zamiast od nowa rozpracowywać stronę;
- przechodzi przez limiter i blokadę STOP, a narzędzie do pobierania stron żadnego z tych bezpieczników nie zna i przy każdej rozmowie zaczyna od zera.
MCP ma też swój koszt. Opisy wszystkich 13 narzędzi to 28 769 znaków, które model dostaje na początku każdej rozmowy, zanim padnie pierwsze pytanie. Policzyłem więc teoretycznie, kiedy ten narzut się zwraca. Wziąłem średnie z czterech zmierzonych par stron: 4766 znaków odpowiedzi MCP i 8238 znaków widocznego tekstu strony na jedno pytanie.29
Przy tekście strony MCP wychodzi taniej od dziewiątego pytania, przy surowym HTML-u od pierwszego.
Jeśli model czyta tylko widoczny tekst strony, rozmowa z MCP jest krótsza dopiero od dziewiątego pytania. Jeśli czyta surowy HTML, MCP wygrywa od pierwszego: jedna strona to średnio około 532 tysięcy znaków, więcej niż cała rozmowa z MCP po dwunastu pytaniach. To model uproszczony. Liczy znaki, a nie tokeny: tokeny rosną mniej więcej proporcjonalnie do znaków, ale przelicznik zależy od modelu i języka. Pomija też streszczanie stron przez narzędzie i to, że w czacie cała historia rozmowy trafia do modelu przy każdej kolejnej odpowiedzi. Pokazuje jednak kierunek: MCP opłaca się w dłuższej rozmowie, w której pytań jest kilka, a dane pochodzą z różnych miejsc. Czy przekłada się to także na trafniejsze odpowiedzi, to temat na osobny pomiar.
9. Tydzień z zespołem agentów
Pytanie z początku brzmiało: jak szybko zbuduję takie narzędzie z agentami AI? Pierwszy commit powstał 9 października 2026 roku, pierwsze wydanie trafiło na PyPI 14 października, a wersja 0.1.3 z obsługą Windows 16 października. W tym czasie powstało 41 commitów i 18 zapisanych decyzji architektonicznych.25
Nie robiłem tego w jednym czacie. W repozytorium pracował zespół siedmiu wyspecjalizowanych agentów Claude Code:
- programista, który pisze kod i testy;
- recenzent, który po każdej rundzie sprawdza zmiany, a sam niczego nie edytuje;
- recenzent narzędzi MCP, który ocenia narzędzia oczami modelu: nazwy, schematy argumentów i rozmiar wyników;
- weryfikator, który sprawdza hipotezy o serwisie pojedynczymi zapytaniami;
- strażnik zmian w serwisie, który porównuje kod strony z zapisanym wcześniej stanem;
- autor dokumentacji;
- autor raportów przekazania, który na koniec każdego etapu zapisuje, co zrobiono, co zostało do zrobienia i jakie są ryzyka.
Agentów pilnowały skrypty, które Claude Code uruchamia przy każdym użyciu narzędzia. Najważniejszy blokował każdą próbę zapytania do deweloperuch.pl z pominięciem limitera i każdą próbę zdjęcia blokady STOP. Inny pozwalał każdemu agentowi edytować tylko jego własne pliki. Po każdej zmianie w kodzie automatycznie uruchamiało się sprawdzanie stylu kodu i typów.
Tak wyglądał ten tydzień:
- 9 października: rozpoznanie serwisu (analiza 114 plików JavaScript, mapa 34 ścieżek API i czterech kanałów danych), powołanie zespołu agentów i wspólny limiter zapytań.
- 10 października: pierwszy działający serwer MCP z czterema narzędziami i CLI, blokada STOP wspólna dla wszystkich procesów oraz naprawa parsera po pierwszym użyciu w Claude Desktop.
- 11 października: poprawka cache po pierwszym pełnym teście na żywo.
- 12 października: linki do stron serwisu w wynikach, narzędzie do statystyk GUS i NBP oraz przebudowa architektury.
- 14 października: komplet 13 narzędzi, publiczne repozytorium, pierwsze wydania na PyPI, zgoda autorów serwisu i jawny User-Agent w wersji 0.1.2.
- 16 października: codzienne archiwum statystyk pobrań i wersja 0.1.3 z natywną obsługą Windows.
Nie wszystko szło gładko, a najciekawsze błędy wyszły dopiero na żywym serwisie:
- po pierwszym użyciu w Claude Desktop wyszukiwanie ofert zawsze kończyło się błędem, bo parser gubił część danych w formacie RSC;
- cache w praktyce nie działał: Cloudflare, który stoi przed serwisem, zwracał kopie starsze niż ich deklarowany czas ważności, więc każde powtórzone pytanie i tak szło do serwisu;
- na pytanie o nieznane miasto serwis odpowiada zwykłą stroną z kodem 200 i ukrytym znacznikiem błędu 404;
- literówka w nazwie parametru była po cichu ignorowana i model dostawał wynik bez filtra;
- wycena mieszkania o powierzchni 41,37 m² wychodziła taka sama jak dla 41 m², bo serwis może pomijać część ułamkową (dziś narzędzie o tym ostrzega).27
Recenzent wyłapał też błąd w samym limiterze: po nagłym zabiciu procesu kolejny mógł wysłać zapytanie już po 4 milisekundach zamiast po sekundzie. A agent-programista raz wysłał to samo zapytanie dwa razy. Takie wpadki to dobry argument za tym, żeby pracę agentów sprawdzał osobny recenzent, a każde zapytanie do serwisu przechodziło przez limiter.
10. Serwer w liczbach
Domyślne odpowiedzi mieszczą się w kilku tysiącach znaków; duże wyniki trzeba świadomie zamówić.
Najwięcej pobrań przypadło na 16 października, dzień wydania wersji 0.1.3.
Pakiet od 14 do 17 października pobrano z PyPI 640 razy (nie licząc serwerów lustrzanych; liczba obejmuje też instalacje automatyczne i moje własne), rozszerzenie do Claude Desktop 31 razy, a repozytorium zebrało 26 gwiazdek. Najwięcej wejść na repozytorium przyszło z X: 161 w ciągu dwóch tygodni.30
11. Co z tego ma kupujący
Deweloperuch-mcp nie wycenia mieszkań i nie doradza. Pokazuje ceny ofertowe z historią, ceny transakcyjne z rejestru i oficjalne statystyki, a model pomaga je zestawić. Dane mogą zawierać błędy: rejestr ma luki, najnowsze okresy są niepełne, a pojedyncze rekordy bywają absurdalne. Dlatego każdą liczbę, która ma znaczenie przy decyzji, warto sprawdzić na stronie, do której model podaje link.
Narzędzie nie odpowie też na pytanie, które w Przemyśleniach uważałem za najważniejsze: czy w danym miejscu da się dobrze żyć. Powie, ile kosztuje metr i za ile sprzedawały się mieszkania obok, ale nie powie, czy przy osiedlu jest chodnik, szkoła i tramwaj. Takiego otoczenia pojedynczy kupujący sobie nie dokupi, nawet z najlepszymi danymi o cenach.
Przykładowe pytania:
- „Znajdź mieszkania 40–55 m² w krakowskim Podgórzu do 800 000 zł, od najtańszych za metr.”
- „Czy ta oferta to dobra okazja? Pokaż historię ceny, najniższą cenę z 30 i 90 dni i powiedz, czy obniżka wygląda podejrzanie.”
- „Jak wypadają ceny ofertowe w Gdańsku na tle cen transakcyjnych z ostatnich kwartałów?”
- „Ile mniej więcej jest warte mieszkanie 55 m² pod tym adresem, na podstawie transakcji z okolicy?”
Najprościej zacząć w Claude Desktop: pobierasz plik deweloperuch-mcp-<wersja>.mcpb z najnowszego wydania na GitHubie, klikasz go dwukrotnie i uruchamiasz aplikację ponownie. W Claude Code wystarczy jedno polecenie:
claude mcp add deweloperuch -- uvx deweloperuch-mcpInstrukcja krok po kroku jest na stronie projektu.31
Jedna prośba: deweloperuch.pl to projekt społeczny. Zadawaj konkretne pytania i nie buduj na tym narzędziu pętli ani masowego pobierania danych. A jeśli znajdziesz błąd, zgłoś go w repozytorium.
Podsumowanie
Dla mnie, osoby mającej ADHD i tysiące pomysłów na sekundę, pojawienie się agentów AI, którzy mogą odwalić całą brudną i żmudną robotę związaną z pisaniem kodu, ustawianiem środowiska oraz konfigurowaniem automatycznych testów i wdrożeń, było zbawieniem. Mogłem poświęcić swój czas na projektowanie architektury, sformułowanie problemu, rozbicie go na części i stworzenie własnych narzędzi pomocniczych, które przy okazji dawały masę zabawy. Napisałem na przykład automatyczny generator grafik do listy zmian w kolejnych wydaniach, całą stronę internetową projektu i mechanizm zbierania zbiorczych statystyk.
Otwarty rejestr cen i obowiązek publikowania cen ofertowych zdjęły z Kowalskiego część drugiego etatu. Serwer MCP próbuje zdjąć kolejną: zamiast przeklejać strony i liczyć w arkuszu, wystarczy zapytać, a potem sprawdzić źródło.
Miłego korzystania!
Źródła
31 przypisów
-
deweloperuch-mcp, mapa warstwy danych deweloperuch.pl i strony jako źródło danych, rozpoznanie serwisu z 9–13 października 2026 r. ↩ ↩2
-
Ustawa z dnia 21 maja 2025 r. o zmianie ustawy o ochronie praw nabywcy lokalu mieszkalnego lub domu jednorodzinnego oraz Deweloperskim Funduszu Gwarancyjnym, Dz.U. 2025 poz. 758, art. 19a i 19b. Ustawa weszła w życie 11 lipca 2025 r.; deweloperzy, którzy prowadzili sprzedaż już wcześniej, mieli dwa miesiące na dostosowanie się. ↩
-
Forbes.pl, artykuł o ukrywaniu cen mieszkań przez deweloperów, 28 marca 2025 r., wypowiedzi Katarzyny Kuniewicz (Otodom Analytics) i Marka Wielgo (RynekPierwotny.pl). ↩
-
Super Biznes, artykuł o mieszkaniach wystawionych za złotówkę, 17 września 2025 r., m.in. za „Rzeczpospolitą”. ↩
-
UOKiK, komunikat o decyzjach w sprawie powierzchni pod ściankami działowymi, 4 lipca 2025 r. Deweloperzy odwołali się do Sądu Ochrony Konkurencji i Konsumentów. ↩
-
Forsal.pl, artykuł o otwarciu danych z Rejestru Cen Nieruchomości, 16 lutego 2026 r. ↩ ↩2
-
Deweloperuch.pl, O nas, stan na 18 października 2026 r. ↩ ↩2
-
Bizblog Spider’s Web, Agata Kołodziej, artykuł o deweloperuch.pl i zbiórce na dane RCN, 2 września 2025 r. ↩
-
Geoportal.gov.pl, Rejestr Cen Nieruchomości (RCN), stan na 18 października 2026 r.: rejestr prowadzi 385 jednostek, czyli starostowie, prezydenci miast na prawach powiatu oraz pięciu wójtów, burmistrzów i prezydentów miast na podstawie porozumień. ↩
-
Ustawa z dnia 17 maja 1989 r. – Prawo geodezyjne i kartograficzne, tekst jednolity Dz.U. 2024 poz. 1151, art. 4 ust. 1a pkt 7 i art. 7d pkt 1 lit. b; zakres danych określa § 40 rozporządzenia w sprawie ewidencji gruntów i budynków, Dz.U. 2021 poz. 1390. ↩
-
Obwieszczenie w sprawie stawek opłat obowiązujących od 1 stycznia 2026 r., M.P. 2025 poz. 1123, tabela nr 12; współczynnik 2,0 dla udostępnienia „dla dowolnych potrzeb” (1,0 dla potrzeb własnych bez prawa publikacji w internecie): ustawa z dnia 16 kwietnia 2020 r., Dz.U. 2020 poz. 782. ↩
-
Sejm RP, poselski projekt ustawy o zmianie ustawy – Prawo geodezyjne i kartograficzne, druk nr 1525, uzasadnienie i ocena skutków regulacji (kwota dochodów powiatów za biznesinteria.pl). ↩ ↩2
-
OnGeo.pl, Paulina Multan, artykuł o zbiórce deweloperuch.pl na dane z RCN, 2 września 2025 r. ↩
-
Deweloperuch, repozytorium rejestr-cen-nieruchomosci na GitHubie, licencja CC0-1.0. ↩
-
Sejm RP, przebieg procesu legislacyjnego, druk nr 1525: uchwalenie 26 września 2025 r. (425 głosów za, 0 przeciw, 0 wstrzymujących się), Senat bez poprawek 16 października, podpis prezydenta 4 listopada 2025 r. ↩
-
Ustawa z dnia 26 września 2025 r. o zmianie ustawy – Prawo geodezyjne i kartograficzne, Dz.U. 2025 poz. 1542: nowa lit. k w art. 40a ust. 2 pkt 1 i uchylenie tabeli nr 12; ustawa weszła w życie po 3 miesiącach od ogłoszenia. ↩
-
Geoportal.gov.pl, W serwisie www.geoportal.gov.pl sprawdzisz dane z rejestru cen nieruchomości, 18 lutego 2026 r. ↩ ↩2
-
Anthropic, Introducing the Model Context Protocol, 25 listopada 2024 r. ↩
-
Model Context Protocol, wprowadzenie do MCP, stan na 18 października 2026 r. ↩
-
Model Context Protocol, opis architektury, stan na 18 października 2026 r. ↩ ↩2
-
Model Context Protocol, specyfikacja 2026-07-28: transporty. ↩
-
TechCrunch, o decyzji OpenAI, 26 marca 2025 r., i o decyzji Google, 9 kwietnia 2025 r.; Microsoft, podsumowanie konferencji Build 2025, 19 maja 2025 r. ↩
-
Anthropic, Donating the Model Context Protocol and establishing the Agentic AI Foundation, 9 grudnia 2025 r. ↩
-
Model Context Protocol, specyfikacja 2026-07-28 (zasady bezpieczeństwa i zgody użytkownika) oraz dobre praktyki bezpieczeństwa. ↩
-
MBratkowski/deweloperuch-mcp: README i historia commitów, wersja 0.1.3. ↩ ↩2
-
deweloperuch-mcp, dokumentacja serwera MCP. ↩
-
deweloperuch-mcp, konfiguracja, limiter i blokada STOP oraz decyzje architektoniczne D2, D5 i D9. ↩
-
Pomiary autora z 18 października 2026 r. na wersji 0.1.3, macOS: czasy narzędzi (13 narzędzi, każde raz bez cache i raz z cache, jedna próba na narzędzie, 15 zapytań do serwisu) oraz porównanie odpowiedzi MCP ze stronami serwisu (5 par, 5 zapytań narzędzi i 5 pobrań stron). „Widoczny tekst” to treść strony bez znaczników, skryptów i stylów. ↩ ↩2 ↩3
-
deweloperuch-mcp, gałąź stats: dane z pypistats.org i statystyk ruchu GitHuba, stan na 18 października 2026 r. ↩
-
Strona projektu deweloperuch-mcp i dokumentacja po polsku. ↩