@cenogram/mcp-server 0.1.7 → 0.5.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 +28 -24
- package/dist/api-client.d.ts +687 -7
- package/dist/api-client.js +202 -25
- package/dist/auth-dispatch.d.ts +59 -0
- package/dist/auth-dispatch.js +141 -0
- package/dist/client-id.js +0 -5
- package/dist/error-messages.d.ts +12 -0
- package/dist/error-messages.js +80 -0
- package/dist/formatters.d.ts +21 -1
- package/dist/formatters.js +1133 -24
- package/dist/index.d.ts +1 -0
- package/dist/index.js +149 -44
- package/dist/mappings.d.ts +12 -5
- package/dist/mappings.js +135 -17
- package/dist/oauth-jwt.d.ts +19 -0
- package/dist/oauth-jwt.js +63 -0
- package/dist/request-context.d.ts +5 -0
- package/dist/request-context.js +2 -0
- 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 +544 -81
- package/dist/transport-mode.d.ts +2 -0
- package/dist/transport-mode.js +6 -0
- package/package.json +16 -7
package/README.md
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
**Polish Real Estate Transaction Data for AI**
|
|
8
8
|
|
|
9
|
-
MCP server for Polish real estate data. Access
|
|
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.
|
|
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
|
|
|
@@ -62,22 +62,7 @@ Add to your config file:
|
|
|
62
62
|
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
63
63
|
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
64
64
|
|
|
65
|
-
**
|
|
66
|
-
```json
|
|
67
|
-
{
|
|
68
|
-
"mcpServers": {
|
|
69
|
-
"cenogram": {
|
|
70
|
-
"type": "http",
|
|
71
|
-
"url": "https://mcp.cenogram.pl/mcp",
|
|
72
|
-
"headers": {
|
|
73
|
-
"Authorization": "Bearer YOUR_API_KEY"
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Stdio fallback** (older versions - requires Node.js >= 18):
|
|
65
|
+
**npx (stdio):**
|
|
81
66
|
```json
|
|
82
67
|
{
|
|
83
68
|
"mcpServers": {
|
|
@@ -191,7 +176,7 @@ Requires **Node.js >= 18**. Use this if you want to run the server locally inste
|
|
|
191
176
|
|
|
192
177
|
| Env Variable | Required | Default | Description |
|
|
193
178
|
|---|---|---|---|
|
|
194
|
-
| `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) |
|
|
195
180
|
| `CENOGRAM_API_URL` | No | `https://cenogram.pl` | API base URL |
|
|
196
181
|
| `MCP_TRANSPORT` | No | `stdio` | Set to `http` for Streamable HTTP mode |
|
|
197
182
|
| `MCP_PORT` | No | `3002` | HTTP server port (HTTP mode only) |
|
|
@@ -199,6 +184,10 @@ Requires **Node.js >= 18**. Use this if you want to run the server locally inste
|
|
|
199
184
|
|
|
200
185
|
You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
|
|
201
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
|
+
|
|
202
191
|
## Example Prompts
|
|
203
192
|
|
|
204
193
|
**Polish:**
|
|
@@ -230,12 +219,27 @@ You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
|
|
|
230
219
|
| `search_parcels` | Search parcels by cadastral ID prefix | q (parcel ID prefix, min 3 chars) |
|
|
231
220
|
| `search_by_polygon` | Search within a GeoJSON polygon | polygon, propertyType, dateFrom/dateTo |
|
|
232
221
|
| `compare_locations` | Compare stats across 2-5 districts | districts (comma-separated), propertyType |
|
|
222
|
+
| `get_building_breakdown` | Per-building breakdown for one transaction (footprint, storeys, est. floor area) | transaction_id (UUID from a search result) |
|
|
223
|
+
| `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) |
|
|
224
|
+
| `resolve_parcel` | Resolve a cadastral parcel identifier to its canonical record | parcelId or q (id prefix), or lat + lng |
|
|
225
|
+
| `get_demographics` | Population and demographic context for a location | location or teryt, year (or yearFrom/yearTo), category |
|
|
226
|
+
| `get_infrastructure_signals` | Municipal infrastructure signals (tenders, utilities, capital spending) | location or teryt |
|
|
227
|
+
| `estimate_value` | Comparable-sales value estimate for a property | area, plus lat + lng or parcelId; rooms, market |
|
|
228
|
+
| `get_transaction_flood` | Flood risk for the property in a transaction | transaction_id (UUID from a search result) |
|
|
229
|
+
| `get_transaction_heritage` | Heritage-register status for the property | transaction_id |
|
|
230
|
+
| `get_transaction_landslide` | Landslide risk for the property | transaction_id |
|
|
231
|
+
| `get_transaction_surroundings` | Nuisance and land-use context around the property | transaction_id |
|
|
232
|
+
| `get_transaction_transit` | Public transport accessibility for the property | transaction_id |
|
|
233
|
+
| `get_transaction_permits` | Building permits recorded for the property | transaction_id |
|
|
234
|
+
| `get_transaction_planning` | Local zoning and planning status for the property | transaction_id |
|
|
235
|
+
| `get_transaction_farmland` | Agricultural land-use classification for the property | transaction_id |
|
|
233
236
|
|
|
234
237
|
### Location naming
|
|
235
238
|
|
|
236
239
|
- Most cities: use the city name directly (e.g., "Gdansk", "Lublin")
|
|
237
|
-
- Warsaw:
|
|
238
|
-
- Krakow:
|
|
240
|
+
- Warsaw: "Warszawa" covers all 18 districts at once; name one ("Mokotow", "Srodmiescie", "Wola") to narrow it down
|
|
241
|
+
- Krakow and Lodz work the same way: the city name covers every sub-district, or name one ("Krakow-Podgorze")
|
|
242
|
+
- Neighbourhood names are not administrative units - search by radius or polygon instead
|
|
239
243
|
- Use `list_locations` to find valid names
|
|
240
244
|
|
|
241
245
|
### Property types
|
|
@@ -262,7 +266,7 @@ This mimics how a property appraiser finds comparable transactions for valuation
|
|
|
262
266
|
|
|
263
267
|
## Data
|
|
264
268
|
|
|
265
|
-
- **
|
|
269
|
+
- **8M+ transactions** from all of Poland (380 counties)
|
|
266
270
|
- **Date range:** 2003 - present
|
|
267
271
|
- **Source:** Polish national RCN registry (Rejestr Cen Nieruchomosci)
|
|
268
272
|
- **Refresh:** periodic updates from RCN
|
|
@@ -273,7 +277,7 @@ This mimics how a property appraiser finds comparable transactions for valuation
|
|
|
273
277
|
|
|
274
278
|
**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).
|
|
275
279
|
|
|
276
|
-
**
|
|
280
|
+
**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.
|
|
277
281
|
|
|
278
282
|
**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.
|
|
279
283
|
|