Skip to main content

deweloperuch-mcp icon

deweloperuch-mcp

CI Latest release PyPI version Python versions License: MIT

Ask an AI assistant about new-build apartments in Poland: asking prices with their history, real transaction prices and official statistics.

An unofficial MCP server and command-line tool over the public data of deweloperuch.pl: developers' asking prices (with price history), transaction prices from the Real Estate Price Register (RCN) and statistics of GUS and NBP. Thirteen read-only tools, usable from an MCP client such as Claude Desktop or Claude Code, or from the deweloperuch CLI.

Disclaimer. This is an independent project. It is not affiliated with, endorsed by or sponsored by deweloperuch.pl, GUS, NBP or the Register's publishers.

  • It is read-only: it never creates or changes anything on the service.
  • It is a polite client: at most 1 request per second, one at a time, shared by all processes on your machine; responses are cached; after a 401, 403, 429 or a captcha/WAF challenge it stops sending requests until you clear the lock yourself.
  • Please respect the service. It is run by other people; ask narrow questions and do not build loops or bulk downloads on top of this tool.
  • Data accuracy is not guaranteed. Prices are asking or registered prices, not valuations or advice.
  • You are responsible for how you use the tool and the data, including the terms of the service.

What you can ask

  • Buying a flat: "Find flats of 40–55 m² in Kraków's Podgórze up to 800 000 PLN, cheapest per m² first." (The service has no filter by number of rooms; filter by area instead.)
  • Judging an offer's price: "Is this offer a good deal? Show its price history, the lowest price of the last 30 and 90 days, and whether the reduction looks suspicious."
  • Checking a developer: "What does this developer build, and how many offers are active in which cities?"
  • Market and transaction prices: "How do asking prices in Gdańsk compare with registered transaction prices over the last quarters?"
  • Valuation: "Roughly what is a 55 m² flat at this address worth, based on nearby transactions?"
  • Comparing cities: "Rank cities by transaction price per m², and show wages and unemployment next to them."

Install

Pick the option that fits you. Supported systems: macOS and Linux. Windows is not supported (the shared request limiter uses fcntl file locks).

1. Claude Desktop, one click

  1. Download deweloperuch-mcp-<version>.mcpb from the latest release.
  2. Double-click it, or drag it into Claude Desktop → Settings → Extensions → Install.

The first start installs Python and the dependencies with uv and takes about a minute. The extension has no command-line tool; if the server is ever stopped (STOP), see lifting a STOP without a checkout.

2. With uv, from PyPI

Requires uv. Nothing to clone. (pip install deweloperuch-mcp works too.)

Claude Desktop (claude_desktop_config.json; any MCP client that starts a stdio server works the same way). If Claude Desktop reports spawn uvx ENOENT, put the full path from which uvx in command:

{
  "mcpServers": {
    "deweloperuch": {
      "command": "uvx",
      "args": ["deweloperuch-mcp"]
    }
  }
}

Claude Code:

claude mcp add deweloperuch -- uvx deweloperuch-mcp

CLI:

uvx --from deweloperuch-mcp deweloperuch --help

3. With uv, straight from GitHub

The same as option 2 with --from git+https://github.com/MBratkowski/deweloperuch-mcp@v0.1.1 (@v0.1.1 pins the release; drop it to follow main):

claude mcp add deweloperuch -- uvx --from git+https://github.com/MBratkowski/deweloperuch-mcp@v0.1.1 deweloperuch-mcp
uvx --from git+https://github.com/MBratkowski/deweloperuch-mcp@v0.1.1 deweloperuch --help

In claude_desktop_config.json use "args": ["--from", "git+https://github.com/MBratkowski/deweloperuch-mcp@v0.1.1", "deweloperuch-mcp"].

4. From source (developers)

Requirements: Python 3.11 or newer and uv.

git clone https://github.com/MBratkowski/deweloperuch-mcp.git
cd deweloperuch-mcp
uv sync
uv run deweloperuch --help                  # sends no requests
uv run deweloperuch locations search krak   # first real request

As the client command use uv run --directory /path/to/deweloperuch-mcp deweloperuch-mcp (Claude Code: claude mcp add deweloperuch -- uv run --directory /path/to/deweloperuch-mcp deweloperuch-mcp). The server speaks stdio and logs to stderr. More: docs/mcp/README.md.

Tools

Overview, argument rules, errors and result sizes: docs/mcp/README.md.

Tool Description
search_locations Finds cities, districts and streets by a name fragment and returns city_slug.
search_offers A page of developers' apartment offers in a city or the whole of Poland, with price, area, price-per-m², district, status and price-drop filters and sorting.
get_offer One offer with its full price history and price flags (lowest price in 30/90 days, suspicious reduction).
search_investments Investments of a city (averages, sorting, filter by developer) or by name across Poland.
get_investment An investment with its developer, average prices and a list of offers.
search_developers Finds developers by a name fragment and returns developer_slug.
get_developer A developer profile: summary, investments with active offers and cities.
get_market_statistics Offer-market statistics of one city: counts, price, price per m² and area distributions, the largest developers.
get_transaction_statistics Transaction prices (RCN) of a city by month or quarter.
rank_locations A ranking of places or powiats by RCN transactions and price per m².
get_building A building from the RCN with its units and transactions.
estimate_property_value An approximate apartment value at a point from nearby RCN transactions.
get_government_statistics Official GUS and NBP time series (dwellings, NBP prices, unemployment, wages, demography) for Poland, aggregates and 66 cities.

Every tool rejects arguments that are not in its schema with an error that lists the allowed names. Tool descriptions, error messages and CLI output are in Polish, because the service and its users are Polish.

Prompts

Four ready-made prompts appear in Claude Desktop as commands. They send no requests themselves; they guide the model through the tools above. Arguments and details: docs/mcp/prompts.md.

Prompt Description
znajdz_mieszkanie ("Znajdź mieszkanie") Flats from developers in one city with a budget, area and district: a table of offers from the lowest price per m².
ocen_oferte ("Oceń ofertę") A price assessment of one offer: price history, comparison with the city market and with the valuation from nearby transactions.
przeswietl_dewelopera ("Prześwietl dewelopera") A developer profile: where and how much it builds, its investments, active offers, prices and their changes.
porownaj_miasta ("Porównaj miasta") A comparison of the flat market of several cities (at most 5) in one table: asking prices, RCN transaction prices, optionally wages and unemployment.

CLI commands

Overview, output format and exit codes: docs/cli/README.md.

Command Description
deweloperuch locations search QUERY Finds cities, districts and streets; returns the city slug.
deweloperuch offers search CITY Searches offers in a city or the whole of Poland with filters and sorting.
deweloperuch offers get OFFER_ID --investment SLUG Shows an offer with its price history and price flags.
deweloperuch investments search [CITY] Searches investments of a city or by name.
deweloperuch investments get SLUG Shows an investment with its developer and offers.
deweloperuch developers search NAME Finds developers by name; returns the developer slug.
deweloperuch developers get SLUG Shows a developer profile.
deweloperuch buildings get SLUG Shows a building from the RCN with its units and transactions.
deweloperuch valuation estimate --lat --lng --area Estimates an apartment's value at a point.
deweloperuch stats market CITY Shows offer-market statistics of one city.
deweloperuch stats transactions CITY Shows RCN transaction prices of a city by month or quarter.
deweloperuch stats cities Shows a ranking of places or powiats by RCN transactions.
deweloperuch stats government LOCATION DATASET Shows GUS and NBP statistics of a location as a table of periods.
deweloperuch stop status [--json] Shows the STOP lock shared by all processes (offline; exit code 3 when active).
deweloperuch stop clear Clears the STOP lock, after you have checked the cause.

How it works

deweloperuch.pl  →  api  →  models  →  usecases  →  consumers (CLI, MCP server)
Layer Role
api/ Talks to the service: an HTTP transport with the shared limiter, cache and STOP lock; readers for its JSON API and page data; DTOs that map responses to models.
models/ Plain frozen dataclasses (offers, investments, price history, statistics). No I/O.
usecases/ One module per operation (for example SearchOffers), written against ports that api/ implements.
consumers/ The CLI and the MCP server, both thin: they parse arguments, call a use case and present the result.

The layers are wired in bootstrap.py, and import-linter enforces the direction of imports. Design decisions and their reasons: docs/decisions.md. The service's data, endpoints and limits: docs/discovery/README.md. Configuration, the limiter and the STOP lock: docs/configuration.md.

Development

uv sync
make fast     # ruff, ruff format --check, mypy, import-linter (a few seconds)
make check    # fast + the offline tests + dead-code check + complexity and duplication reports

Every make target is offline; the tests never open a network socket and run against real responses stored in docs/discovery/samples/ and tests/fixtures/.

Folder Contents
tests/unit/ Unit tests mirroring src/.
tests/contract/ Stored service responses against the DTOs and adapters.
tests/integration/ Use cases with the real adapters over a mocked service.
tests/characterization/ Golden outputs of the CLI and MCP server (tests/golden/).
tests/architecture/, tests/safeguards/ Layering and naming rules; no-network guarantees.
tests/support/ Test infrastructure (fakes, builders, checks), no tests.
tests/e2e/ The opt-in live suite, see below.

After an intended output change, refresh the golden outputs with DEWELOPERUCH_UPDATE_GOLDEN=1 uv run pytest tests/characterization and review the diff (tests/golden/README.md).

Live end-to-end tests are off by default. They check the installed server, the CLI and the helper scripts against the real service, so they send real requests. Run them sparingly, only when a change needs it:

DEWELOPERUCH_LIVE=1 uv run pytest -m live tests/e2e -rs --maxfail=3

Both the variable and -m live are required. Scenarios and request budget: tests/e2e/README.md. Contributing guide and release procedure: CONTRIBUTING.md.

Documentation

Document Contents
docs/mcp/README.md The MCP server: tools, prompts, client configuration, argument rules, errors, result sizes
docs/cli/README.md The deweloperuch CLI: commands, output format, exit codes
docs/configuration.md Environment variables, files, the request limiter, the cache and the STOP lock
docs/discovery/README.md Map of the data layer: service architecture, access channels, key findings
docs/discovery/endpoints.md Catalog of the service's /api/* endpoints
docs/discovery/pages-rsc.md Pages as a data source: filters, sorting, pagination
docs/discovery/entities.md Entities, identifiers, relations, value dictionaries
docs/discovery/samples/ Trimmed response samples (the basis of the contract tests)
docs/capability-matrix.md Capabilities, the requests behind them and the tool or command that exposes them
docs/open-questions.md Known gaps and unverified assumptions about the service
docs/decisions.md Architecture decisions
CHANGELOG.md Changes between versions

Data sources and licences

  • deweloperuch.pl: the source of all offer, investment, developer and statistics data. Its terms apply to your use of the data.
  • RCN (Real Estate Price Register) transaction data, reached through the service. The service's authors publish raw RCN data as CC0 in their public repository.
  • GUS (Central Statistical Office) and NBP (National Bank of Poland) statistics, reached through the service. Name them as the source when you republish figures.

The code is licensed under the MIT licence. The licence covers code only; the samples and fixtures used for testing contain data from the sources above and are described in NOTICE.

Contributing

Issues and pull requests are welcome; please read CONTRIBUTING.md first, especially the polite-client rules. Security reports: SECURITY.md.

Metadata

Release files for deweloperuch-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for deweloperuch-mcp 0.1.1
File Size Uploaded
deweloperuch_mcp-0.1.1.tar.gz 214.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for deweloperuch-mcp 0.1.1
File Interpreter ABI Platform
deweloperuch_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 523.6 kB

Release files / deweloperuch_mcp-0.1.1.tar.gz

Download URL deweloperuch_mcp-0.1.1.tar.gz
Size 214.1 kB
Tags Source
SHA-256 checksum
How to use checksums
88338df3d2d87fff755d6cb333a405f2eefd6752ae83b1bcb8a5545086dc4f86
BLAKE2b-256 checksum
How to use checksums
14d0b71b91fec4ae77190ae2d9a9eeab0441511468a73d9819eeeeaf09e1ef90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release files / deweloperuch_mcp-0.1.1-py3-none-any.whl

Download URL deweloperuch_mcp-0.1.1-py3-none-any.whl
Size 309.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb5f80644df2c126672831cdeacb69b553b81b955156c3baf8bdf4a7370cd54d
BLAKE2b-256 checksum
How to use checksums
5f1949ce11aadeadfe0355d4b4806b8cf00ab2a25e4cc668284341af15cf71d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page