@cenogram/mcp-server 0.2.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -10
- package/dist/api-client.d.ts +678 -7
- package/dist/api-client.js +169 -22
- package/dist/auth-dispatch.js +0 -27
- package/dist/client-id.js +0 -5
- package/dist/error-messages.d.ts +4 -0
- package/dist/error-messages.js +50 -7
- package/dist/formatters.d.ts +20 -1
- package/dist/formatters.js +1094 -21
- package/dist/index.d.ts +1 -0
- package/dist/index.js +73 -40
- package/dist/mappings.d.ts +12 -5
- package/dist/mappings.js +131 -14
- package/dist/oauth-jwt.js +1 -3
- package/dist/sentry-scrub.d.ts +2 -0
- package/dist/sentry-scrub.js +14 -0
- package/dist/sentry.d.ts +2 -0
- package/dist/sentry.js +29 -0
- package/dist/tools.d.ts +1 -0
- package/dist/tools.js +487 -86
- package/dist/transport-mode.d.ts +2 -0
- package/dist/transport-mode.js +6 -0
- package/package.json +20 -7
package/README.md
CHANGED
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
[](https://nodejs.org)
|
|
5
5
|
[](LICENSE)
|
|
6
6
|
|
|
7
|
-
**Polish Real Estate Transaction Data for AI**
|
|
7
|
+
**Polish Real Estate Transaction & Parcel Data for AI**
|
|
8
8
|
|
|
9
|
-
MCP server for Polish real estate data. Access 8M+ real estate transactions from the national Registry of Prices and Values (Rejestr Cen Nieruchomosci, RCN) directly from Claude, Cursor, or any MCP-compatible AI assistant.
|
|
9
|
+
MCP server for Polish real estate data. Access 8M+ real estate transactions from the national Registry of Prices and Values (Rejestr Cen Nieruchomosci, RCN) - prices from notarial deeds, not listings - directly from Claude, Cursor, ChatGPT, Grok, or any MCP-compatible AI assistant. Beyond transaction prices, the server resolves cadastral parcels and adds per-parcel context: zoning, flood and landslide risk, heritage register, building permits and construction activity, public transport access, agricultural land classification and surrounding land use.
|
|
10
10
|
|
|
11
|
-
Data source: Polish national RCN registry (Rejestr Cen Nieruchomosci) | Platform: [cenogram.pl](https://cenogram.pl)
|
|
11
|
+
Data source: Polish national RCN registry (Rejestr Cen Nieruchomosci) | Platform: [cenogram.pl](https://cenogram.pl?src=mcpstdio)
|
|
12
12
|
|
|
13
13
|
## Get your API key
|
|
14
14
|
|
|
15
|
-
1. Go to [cenogram.pl/api](https://cenogram.pl/api)
|
|
15
|
+
1. Go to [cenogram.pl/api](https://cenogram.pl/api?src=mcpstdio)
|
|
16
16
|
2. Enter your email
|
|
17
17
|
3. You'll receive your `cngrm_...` API key by email
|
|
18
18
|
|
|
@@ -176,7 +176,7 @@ Requires **Node.js >= 18**. Use this if you want to run the server locally inste
|
|
|
176
176
|
|
|
177
177
|
| Env Variable | Required | Default | Description |
|
|
178
178
|
|---|---|---|---|
|
|
179
|
-
| `CENOGRAM_API_KEY` | **Yes** (stdio) | - | API key from [cenogram.pl/api](https://cenogram.pl/api) |
|
|
179
|
+
| `CENOGRAM_API_KEY` | **Yes** (stdio) | - | API key from [cenogram.pl/api](https://cenogram.pl/api?src=mcpstdio) |
|
|
180
180
|
| `CENOGRAM_API_URL` | No | `https://cenogram.pl` | API base URL |
|
|
181
181
|
| `MCP_TRANSPORT` | No | `stdio` | Set to `http` for Streamable HTTP mode |
|
|
182
182
|
| `MCP_PORT` | No | `3002` | HTTP server port (HTTP mode only) |
|
|
@@ -184,12 +184,17 @@ Requires **Node.js >= 18**. Use this if you want to run the server locally inste
|
|
|
184
184
|
|
|
185
185
|
You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
|
|
186
186
|
|
|
187
|
+
## Tips
|
|
188
|
+
|
|
189
|
+
- **Model selection**: For best results, use Claude **Opus 4.7**. It makes more sequential tool calls and produces richer analysis. You can switch the model in the dropdown at the bottom of the chat window.
|
|
190
|
+
|
|
187
191
|
## Example Prompts
|
|
188
192
|
|
|
189
193
|
**Polish:**
|
|
190
194
|
- "Jaka jest mediana cen mieszkan w Krakowie w 2025?"
|
|
191
195
|
- "Pokaz transakcje z ulicy Pulawskiej 15 na Mokotowie"
|
|
192
|
-
- "Znajdz transakcje na dzialce
|
|
196
|
+
- "Znajdz transakcje na dzialce 126104_9.0015.201"
|
|
197
|
+
- "Sprawdz plan miejscowy i ryzyko powodziowe dla dzialki 126104_9.0015.201"
|
|
193
198
|
- "Znajdz transakcje gruntow w promieniu 5km od centrum Wroclawia powyzej 500 000 PLN"
|
|
194
199
|
- "Porownaj ceny mieszkan na Mokotowie i Woli"
|
|
195
200
|
- "Pokaz rozklad cen nieruchomosci w Polsce"
|
|
@@ -197,7 +202,8 @@ You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
|
|
|
197
202
|
**English:**
|
|
198
203
|
- "What's the median apartment price in Krakow in 2025?"
|
|
199
204
|
- "Show transactions at Pulawska 15 in Mokotow"
|
|
200
|
-
- "Find all transactions on parcel
|
|
205
|
+
- "Find all transactions on parcel 126104_9.0015.201 and then search nearby"
|
|
206
|
+
- "Check the zoning and flood risk for parcel 126104_9.0015.201"
|
|
201
207
|
- "Find land transactions within 5km of Wroclaw center above 500,000 PLN"
|
|
202
208
|
- "Compare apartment prices in Mokotow and Wola districts"
|
|
203
209
|
- "Show the price distribution of real estate in Poland"
|
|
@@ -215,12 +221,27 @@ You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
|
|
|
215
221
|
| `search_parcels` | Search parcels by cadastral ID prefix | q (parcel ID prefix, min 3 chars) |
|
|
216
222
|
| `search_by_polygon` | Search within a GeoJSON polygon | polygon, propertyType, dateFrom/dateTo |
|
|
217
223
|
| `compare_locations` | Compare stats across 2-5 districts | districts (comma-separated), propertyType |
|
|
224
|
+
| `get_building_breakdown` | Per-building breakdown for one transaction (footprint, storeys, est. floor area) | transaction_id (UUID from a search result) |
|
|
225
|
+
| `get_parcel_report` | Composite dossier for one parcel: core, 9 enrichment layers, transaction history, local price context and municipal context | parcelId (cadastral id or UUID) |
|
|
226
|
+
| `resolve_parcel` | Resolve a cadastral parcel identifier to its canonical record | parcelId or q (id prefix), or lat + lng |
|
|
227
|
+
| `get_demographics` | Population and demographic context for a location | location or teryt, year (or yearFrom/yearTo), category |
|
|
228
|
+
| `get_infrastructure_signals` | Municipal infrastructure signals (tenders, utilities, capital spending) | location or teryt |
|
|
229
|
+
| `estimate_value` | Comparable-sales value estimate for a property | area, plus lat + lng or parcelId; rooms, market |
|
|
230
|
+
| `get_transaction_flood` | Flood risk for the property in a transaction | transaction_id (UUID from a search result) |
|
|
231
|
+
| `get_transaction_heritage` | Heritage-register status for the property | transaction_id |
|
|
232
|
+
| `get_transaction_landslide` | Landslide risk for the property | transaction_id |
|
|
233
|
+
| `get_transaction_surroundings` | Nuisance and land-use context around the property | transaction_id |
|
|
234
|
+
| `get_transaction_transit` | Public transport accessibility for the property | transaction_id |
|
|
235
|
+
| `get_transaction_permits` | Building permits recorded for the property | transaction_id |
|
|
236
|
+
| `get_transaction_planning` | Local zoning and planning status for the property | transaction_id |
|
|
237
|
+
| `get_transaction_farmland` | Agricultural land-use classification for the property | transaction_id |
|
|
218
238
|
|
|
219
239
|
### Location naming
|
|
220
240
|
|
|
221
241
|
- Most cities: use the city name directly (e.g., "Gdansk", "Lublin")
|
|
222
|
-
- Warsaw:
|
|
223
|
-
- Krakow:
|
|
242
|
+
- Warsaw: "Warszawa" covers all 18 districts at once; name one ("Mokotow", "Srodmiescie", "Wola") to narrow it down
|
|
243
|
+
- Krakow and Lodz work the same way: the city name covers every sub-district, or name one ("Krakow-Podgorze")
|
|
244
|
+
- Neighbourhood names are not administrative units - search by radius or polygon instead
|
|
224
245
|
- Use `list_locations` to find valid names
|
|
225
246
|
|
|
226
247
|
### Property types
|
|
@@ -251,6 +272,7 @@ This mimics how a property appraiser finds comparable transactions for valuation
|
|
|
251
272
|
- **Date range:** 2003 - present
|
|
252
273
|
- **Source:** Polish national RCN registry (Rejestr Cen Nieruchomosci)
|
|
253
274
|
- **Refresh:** periodic updates from RCN
|
|
275
|
+
- **Per-parcel context:** zoning, flood and landslide risk, heritage register, building permits and construction activity, transit access, agricultural land use and surroundings, addressable by cadastral ID
|
|
254
276
|
|
|
255
277
|
## Troubleshooting
|
|
256
278
|
|
|
@@ -258,7 +280,7 @@ This mimics how a property appraiser finds comparable transactions for valuation
|
|
|
258
280
|
|
|
259
281
|
**npx hangs or fails** - Check your Node.js version with `node -v`. The stdio mode requires Node.js >= 18. If you're on an older version, use the HTTP remote option instead (no Node.js needed).
|
|
260
282
|
|
|
261
|
-
**
|
|
283
|
+
**A location returns 0 results** - The name may not be an administrative unit. Districts and neighbourhoods are two different things: "Mokotow" is a district and works, "Sluzew" is a neighbourhood inside it and does not. Use `list_locations(search="...")` to find valid names, or search by radius (`search_by_area`) for anything smaller than a district.
|
|
262
284
|
|
|
263
285
|
**401 Unauthorized (HTTP mode)** - The `Authorization` header must be `Bearer cngrm_...` (with the `Bearer` prefix). Double-check that the full API key is included, not just the prefix.
|
|
264
286
|
|