@cenogram/mcp-server 0.5.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 CHANGED
@@ -4,9 +4,9 @@
4
4
  [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
5
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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
11
  Data source: Polish national RCN registry (Rejestr Cen Nieruchomosci) | Platform: [cenogram.pl](https://cenogram.pl?src=mcpstdio)
12
12
 
@@ -193,7 +193,8 @@ You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
193
193
  **Polish:**
194
194
  - "Jaka jest mediana cen mieszkan w Krakowie w 2025?"
195
195
  - "Pokaz transakcje z ulicy Pulawskiej 15 na Mokotowie"
196
- - "Znajdz transakcje na dzialce 146518_8.0108.27"
196
+ - "Znajdz transakcje na dzialce 126104_9.0015.201"
197
+ - "Sprawdz plan miejscowy i ryzyko powodziowe dla dzialki 126104_9.0015.201"
197
198
  - "Znajdz transakcje gruntow w promieniu 5km od centrum Wroclawia powyzej 500 000 PLN"
198
199
  - "Porownaj ceny mieszkan na Mokotowie i Woli"
199
200
  - "Pokaz rozklad cen nieruchomosci w Polsce"
@@ -201,7 +202,8 @@ You can also use the `--http` CLI flag instead of `MCP_TRANSPORT=http`.
201
202
  **English:**
202
203
  - "What's the median apartment price in Krakow in 2025?"
203
204
  - "Show transactions at Pulawska 15 in Mokotow"
204
- - "Find all transactions on parcel 146502_8.0901.12 and then search nearby"
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"
205
207
  - "Find land transactions within 5km of Wroclaw center above 500,000 PLN"
206
208
  - "Compare apartment prices in Mokotow and Wola districts"
207
209
  - "Show the price distribution of real estate in Poland"
@@ -270,6 +272,7 @@ This mimics how a property appraiser finds comparable transactions for valuation
270
272
  - **Date range:** 2003 - present
271
273
  - **Source:** Polish national RCN registry (Rejestr Cen Nieruchomosci)
272
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
273
276
 
274
277
  ## Troubleshooting
275
278
 
package/dist/index.js CHANGED
@@ -127,14 +127,27 @@ async function main() {
127
127
  }
128
128
  });
129
129
  }
130
- else if (pathname === "/.well-known/oauth-protected-resource") {
130
+ else if (pathname === "/.well-known/oauth-protected-resource" || pathname === "/.well-known/oauth-protected-resource/mcp") {
131
+ const resource = pathname.endsWith("/mcp") ? "https://mcp.cenogram.pl/mcp" : "https://mcp.cenogram.pl";
131
132
  res.writeHead(200, { "Content-Type": "application/json", "Cache-Control": "public, max-age=3600" }).end(JSON.stringify({
132
- resource: "https://mcp.cenogram.pl",
133
+ resource,
133
134
  authorization_servers: ["https://api.cenogram.pl"],
134
135
  scopes_supported: ["mcp"],
135
136
  bearer_methods_supported: ["header"],
136
137
  }));
137
138
  }
139
+ else if (pathname === "/.well-known/glama.json") {
140
+ const maintainer = process.env.GLAMA_MAINTAINER_EMAIL;
141
+ if (!maintainer) {
142
+ res.writeHead(404, { "Content-Type": "application/json" }).end(JSON.stringify({ error: "not_found" }));
143
+ }
144
+ else {
145
+ res.writeHead(200, { "Content-Type": "application/json", "Cache-Control": "public, max-age=3600" }).end(JSON.stringify({
146
+ $schema: "https://glama.ai/mcp/schemas/connector.json",
147
+ maintainers: [{ email: maintainer }],
148
+ }));
149
+ }
150
+ }
138
151
  else if (pathname === "/.well-known/mcp.json") {
139
152
  res.writeHead(200, { "Content-Type": "application/json", "Access-Control-Allow-Origin": "*", "Cache-Control": "public, max-age=3600" }).end(JSON.stringify({
140
153
  name: "Cenogram",
package/dist/tools.js CHANGED
@@ -442,8 +442,8 @@ Example: {"type":"Polygon","coordinates":[[[21.0,52.2],[21.01,52.2],[21.01,52.21
442
442
  maxArea: z.number().optional().describe("Maximum area in m²"),
443
443
  district: z.string().optional().describe("District name filter"),
444
444
  street: z.string().optional().describe("Street name filter (partial match)"),
445
- limit: z.number().min(1).max(5000).default(100).optional()
446
- .describe("Max results (1-5000, default 100). MCP displays up to 50 transactions."),
445
+ limit: z.number().min(1).max(3000).default(100).optional()
446
+ .describe("Max results (1-3000, default 100). MCP displays up to 50 transactions."),
447
447
  }, { readOnlyHint: true, destructiveHint: false, title: "Search Transactions by Polygon" }, async (params) => withErrorHandling("search_by_polygon", apiKey, async () => {
448
448
  requireApiKey(apiKey);
449
449
  const { data, creditInfo } = await searchByPolygon({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cenogram/mcp-server",
3
- "version": "0.5.0",
4
- "description": "MCP server for Polish property prices from notarial deeds, not listings - 8M+ transactions from the RCN registry",
3
+ "version": "0.6.0",
4
+ "description": "MCP server for Polish real estate: 8M+ transaction prices from notarial deeds (RCN registry, not listings), plus per-parcel context by cadastral ID - zoning, flood risk, heritage, building permits, agricultural land and transit",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "cenogram-mcp": "./dist/index.js"
@@ -48,6 +48,11 @@
48
48
  "transactions",
49
49
  "transaction-data",
50
50
  "geospatial",
51
+ "cadastral",
52
+ "parcel-data",
53
+ "zoning",
54
+ "flood-risk",
55
+ "due-diligence",
51
56
  "rcn",
52
57
  "nieruchomosci"
53
58
  ],