Cenogram - Polish Real Estate Transactions (RCN)

Precios de transacciones inmobiliarias polacas provenientes de escrituras notariales, no de anuncios: más de 8 millones de registros del registro nacional RCN, de 2003 a la fecha, con OAuth 2.1.

Documentación

Servidor MCP de Cenogram

npm version Node.js License: MIT

Datos de transacciones inmobiliarias y parcelas polacas para IA

Servidor MCP para datos inmobiliarios polacos. Accede a más de 8 millones de transacciones inmobiliarias del registro nacional de Precios y Valores (Rejestr Cen Nieruchomosci, RCN): precios de escrituras notariales, no listados—directamente desde Claude, Cursor, ChatGPT, Grok o cualquier asistente de IA compatible con MCP. Más allá de los precios de transacción, el servidor resuelve parcelas catastrales y añade contexto por parcela: zonificación, riesgo de inundación y deslizamiento, registro de patrimonio, permisos de construcción y actividad constructiva, acceso al transporte público, clasificación de tierras agrícolas, uso del suelo circundante, naturaleza—bosques cercanos y áreas protegidas superpuestas—qué hay bajo tierra (terrenos mineros y principales reservas de agua subterránea), la clasificación de uso del suelo y calidad del suelo, y acceso por carretera.

Fuente de datos: registro nacional polaco RCN (Rejestr Cen Nieruchomosci) | Plataforma: cenogram.pl

Obtén tu clave API

  1. Ve a cenogram.pl/api
  2. Introduce tu correo electrónico
  3. Recibirás tu clave API cngrm_... por correo electrónico

Gestiona tus claves en cenogram.pl/ustawienia.

Plan gratuito

Las cuentas nuevas comienzan con 1,000 tokens y una prueba de 14 días del plan Estándar. Después, la clave sigue funcionando con 50 tokens por semana—el saldo se restablece a 50 cada 7 días en lugar de acumularse— sin fecha de caducidad y sin tarjeta.

Una llamada cuesta 1 token para estadísticas, datos de referencia, identidad de parcela y contexto municipal; 2 para una búsqueda de transacciones, un histograma de precios o una lista de parcelas en un área; 4 para una capa de contexto de una parcela o transacción; 5 para búsqueda espacial, contornos de parcela, valoración y una comparación multidistrito; 45 para get_parcel_report, que devuelve todas las capas a la vez. Los catálogos de ubicaciones son gratuitos. Los planes de pago aumentan el límite—consulta cenogram.pl/api.

Instalación

Elige tu cliente. Todas las opciones a continuación usan el servidor alojado—no se necesita instalación local (excepto npx/stdio).

Claude Code

Un solo comando—cero archivos de configuración:

claude mcp add cenogram https://mcp.cenogram.pl/mcp \
  -t http -H "Authorization: Bearer YOUR_API_KEY"
Cursor

Añade a .cursor/mcp.json en tu proyecto:

{
  "mcpServers": {
    "cenogram": {
      "type": "http",
      "url": "https://mcp.cenogram.pl/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
Claude Desktop

Añade a tu archivo de configuración:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

npx (stdio):

{
  "mcpServers": {
    "cenogram": {
      "command": "npx",
      "args": ["-y", "@cenogram/mcp-server@latest"],
      "env": {
        "CENOGRAM_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
VS Code / GitHub Copilot

Añade a .vscode/mcp.json en tu espacio de trabajo:

{
  "servers": {
    "cenogram": {
      "type": "http",
      "url": "https://mcp.cenogram.pl/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}
Windsurf

Añade a ~/.codeium/windsurf/mcp_config.json:

HTTP remoto:

{
  "mcpServers": {
    "cenogram": {
      "type": "http",
      "url": "https://mcp.cenogram.pl/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Si HTTP no funciona, usa la opción npx (stdio) a continuación.

Cline

En VS Code: Configuración > Cline > Servidores MCP. Añade:

{
  "cenogram": {
    "type": "http",
    "url": "https://mcp.cenogram.pl/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
}
npx (stdio) - local/sin conexión

Requiere Node.js >= 18. Usa esto si quieres ejecutar el servidor localmente en lugar de conectarte al alojado.

{
  "mcpServers": {
    "cenogram": {
      "command": "npx",
      "args": ["-y", "@cenogram/mcp-server@latest"],
      "env": {
        "CENOGRAM_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
ClienteArchivo de configuración
Cursor.cursor/mcp.json
Claude Code.mcp.json en tu proyecto
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json
ClineConfiguración de VS Code > Cline > Servidores MCP

Configuración

Variable de entornoRequeridaPredeterminadoDescripción
CENOGRAM_API_KEYSí (stdio)-Clave API de cenogram.pl/api
CENOGRAM_API_URLNohttps://cenogram.plURL base de la API
MCP_TRANSPORTNostdioEstablecer en http para modo HTTP Streamable
MCP_PORTNo3002Puerto del servidor HTTP (solo modo HTTP)
CENOGRAM_CLIENT_IDNogenerado automáticamenteIdentificador de cliente persistente

También puedes usar el indicador de CLI --http en lugar de MCP_TRANSPORT=http.

Consejos

  • Selección de modelo: Para mejores resultados, usa Claude Opus 4.7. Realiza más llamadas de herramientas secuenciales y produce análisis más ricos. Puedes cambiar el modelo en el menú desplegable en la parte inferior de la ventana de chat.

Ejemplos de indicaciones

Polaco:

  • "Jaka jest mediana cen mieszkan w Krakowie w 2025?"
  • "Pokaz transakcje z ulicy Pulawskiej 15 na Mokotowie"
  • "Znajdz transakcje na dzialce 126104_9.0015.201"
  • "Sprawdz plan miejscowy i ryzyko powodziowe dla dzialki 126104_9.0015.201"
  • "Znajdz transakcje gruntow w promieniu 5km od centrum Wroclawia powyzej 500 000 PLN"
  • "Porownaj ceny mieszkan na Mokotowie i Woli"
  • "Pokaz rozklad cen nieruchomosci w Polsce"

Inglés:

  • "What's the median apartment price in Krakow in 2025?"
  • "Show transactions at Pulawska 15 in Mokotow"
  • "Find all transactions on parcel 126104_9.0015.201 and then search nearby"
  • "Check the zoning and flood risk for parcel 126104_9.0015.201"
  • "Find land transactions within 5km of Wroclaw center above 500,000 PLN"
  • "Compare apartment prices in Mokotow and Wola districts"
  • "Show the price distribution of real estate in Poland"

Herramientas

HerramientaDescripciónParámetros clave
search_transactionsBuscar transacciones con filtrosubicación, calle, númeroDeEdificio, idDeParcela, tipoDePropiedad, tipoDeMercado, rango de precio/fecha/área
get_price_statisticsEstadísticas de precio/m2 por ubicación (solo residencial)ubicación (opcional)
get_price_distributionHistograma de precioscontenedores, precioMáximo
search_by_areaBuscar transacciones por radio geográficolatitud, longitud, radioKm
get_market_overviewResumen y estadísticas de la base de datos(ninguno)
list_locationsListar ubicaciones disponiblesbúsqueda (opcional)
search_parcelsBuscar parcelas por prefijo de ID catastralq (prefijo de ID de parcela, mínimo 3 caracteres)
list_parcels_in_areaListar las parcelas catastrales en un área—lista ligera o contornos completosteryt, ubicación, bbox, lat + lng + radioKm, o polígono; incluirGeometría, áreaMín/áreaMáx, calle/númeroDeEdificio, cursor
search_by_polygonBuscar transacciones dentro de un polígono GeoJSONpolígono, tipoDePropiedad, fechaDesde/fechaHasta
compare_locationsComparar estadísticas entre 2-5 distritosdistritos (separados por comas), tipoDePropiedad
get_building_breakdownDesglose por edificio para una transacción (huella, plantas, área de piso estimada)idDeTransacción (UUID de un resultado de búsqueda)
get_parcel_reportExpediente compuesto para una parcela: núcleo, 13 capas de enriquecimiento, historial de transacciones, contexto de precios local y contexto municipalidDeParcela (ID catastral o UUID)
resolve_parcelResolver una parcela a su identidad catastralidDeParcela, q (ID catastral completo o 'localidad + número de parcela'—no una dirección de calle), o lat + lng
get_demographicsContexto poblacional y demográfico para una ubicaciónubicación o teryt, año (o añoDesde/añoHasta), categoría
get_infrastructure_signalsSeñales de infraestructura municipal (licitaciones, servicios públicos, gasto de capital)ubicación o teryt
estimate_valueEstimación de valor por ventas comparables para una propiedadárea, más lat + lng o idDeParcela; habitaciones, mercado
get_transaction_floodRiesgo de inundación para la propiedad en una transacciónidDeTransacción (UUID de un resultado de búsqueda)
get_transaction_heritageEstado del registro de patrimonio para la propiedadidDeTransacción
get_transaction_landslideRiesgo de deslizamiento para la propiedadidDeTransacción
get_transaction_surroundingsContexto de molestias y uso del suelo alrededor de la propiedadidDeTransacción
get_transaction_transitAccesibilidad al transporte público para la propiedadidDeTransacción
get_transaction_permitsPermisos de construcción registrados para la propiedadidDeTransacción
get_transaction_planningEstado de zonificación y planificación local para la propiedadidDeTransacción
get_transaction_farmlandClasificación de uso de tierras agrícolas para la propiedadidDeTransacción
get_transaction_natureBosques cercanos y áreas naturales protegidas superpuestas para la propiedadidDeTransacción
get_transaction_subsurfaceTerrenos mineros y principales reservas de agua subterránea bajo la propiedadidDeTransacción
get_transaction_roadsEvidencia geométrica de acceso por carretera para la propiedad (distancias, clase de carretera, indicador de acceso)idDeTransacción

Nombres de ubicaciones

  • La mayoría de las ciudades: usa el nombre de la ciudad directamente (p. ej., "Gdansk", "Lublin")
  • Varsovia: "Warszawa" cubre los 18 distritos a la vez; nombra uno ("Mokotow", "Srodmiescie", "Wola") para acotar
  • Cracovia y Lodz funcionan igual: el nombre de la ciudad cubre todos los subdistritos, o nombra uno ("Krakow-Podgorze")
  • Los nombres de barrios no son unidades administrativas—busca por radio o polígono en su lugar
  • Usa list_locations para encontrar nombres válidos

Tipos de propiedad

ValorPolacoInglés
landGruntTerreno
buildingBudynekEdificio
developed_landGrunt zabudowanyTerreno urbanizado
unitLokalApartamento/unidad

Flujos de trabajo

Los resultados incluyen IDs de parcela y coordenadas GPS, lo que permite investigación en varios pasos:

1. Search by address    -> search_transactions(location="Mokotow", street="Pulawska", buildingNumber="15")
2. Note parcel_id and coordinates from results
3. Search nearby        -> search_by_area(lat=52.19, lng=21.01, radiusKm=2, propertyType="unit")
4. Compare prices       -> get_price_statistics(location="Mokotow")

Esto imita cómo un tasador de propiedades encuentra transacciones comparables para informes de valoración.

Comenzar desde el terreno en lugar de desde una escritura es una ruta diferente:

1. List the parcels     -> list_parcels_in_area(location="Wawer", minArea=800)
2. Draw the ones you want -> list_parcels_in_area(bbox="21.10,52.20,21.14,52.23", includeGeometry=true)
3. Open one in full     -> get_parcel_report(parcelId="146518_8.0108.27")

El paso 1 pagina con cursor; el paso 2 está limitado y generalmente truncado, así que acota el cuadro en lugar de leer una respuesta truncada como la lista de parcelas del área.

Datos

  • Más de 8 millones de transacciones de toda Polonia (380 condados)
  • Rango de fechas: 2003 - presente
  • Fuente: registro nacional polaco RCN (Rejestr Cen Nieruchomosci)
  • Actualización: actualizaciones periódicas de RCN
  • Contexto por parcela: zonificación, riesgo de inundación y deslizamiento, registro de patrimonio, permisos de construcción y actividad constructiva, acceso al transporte, uso de tierras agrícolas, alrededores, naturaleza (bosques cercanos y áreas protegidas), subsuelo (terrenos mineros y principales reservas de agua subterránea), clasificación de uso del suelo y calidad del suelo, y acceso por carretera—direccionable por ID catastral

Solución de problemas

"Error: CENOGRAM_API_KEY is required" - Esto solo aplica al modo stdio. Asegúrate de que CENOGRAM_API_KEY esté configurado en el bloque env de tu configuración MCP. Para HTTP remoto, la clave va en el encabezado Authorization en su lugar.

npx se cuelga o falla - Verifica tu versión de Node.js con node -v. El modo stdio requiere Node.js >= 18. Si estás en una versión anterior, usa la opción HTTP remota en su lugar (no se necesita Node.js).

Una ubicación devuelve 0 resultados - El nombre puede no ser una unidad administrativa. Distritos y barrios son dos cosas diferentes: "Mokotow" es un distrito y funciona, "Sluzew" es un barrio dentro de él y no funciona. Usa list_locations(search="...") para encontrar nombres válidos, o busca por radio (search_by_area) para cualquier cosa más pequeña que un distrito.

401 No autorizado (modo HTTP) - El encabezado Authorization debe ser Bearer cngrm_... (con el prefijo Bearer). Verifica que la clave API completa esté incluida, no solo el prefijo.

402 Pago requerido - La cuenta no tiene tokens. En una cuenta gratuita, la respuesta indica la fecha a partir de la cual el saldo vuelve a estar en sus 50 semanales; la clave y la conexión siguen siendo válidas hasta entonces. Un plan de pago elimina el límite—consulta cenogram.pl/api.

Desarrollo

git clone https://github.com/cenogram/mcp-server.git
cd mcp-server
npm install
npm test
npm run build

Licencia

MIT