Cenogram - Polish Real Estate Transactions (RCN)

Preços de transações imobiliárias polonesas provenientes de escrituras notariais, não de anúncios — mais de 8 milhões de registros do registro nacional RCN, de 2003 até o presente, com OAuth 2.1.

Documentação

Servidor MCP Cenogram

npm version Node.js License: MIT

Dados de Transações Imobiliárias e Parcelas na Polônia para IA

Servidor MCP para dados imobiliários poloneses. Acesse mais de 8 milhões de transações imobiliárias do registro nacional de Preços e Valores (Rejestr Cen Nieruchomosci, RCN) — preços de escrituras notariais, não de anúncios — diretamente do Claude, Cursor, ChatGPT, Grok ou qualquer assistente de IA compatível com MCP. Além dos preços das transações, o servidor resolve parcelas cadastrais e adiciona contexto por parcela: zoneamento, risco de inundação e deslizamento, registro de patrimônio histórico, licenças de construção e atividade de construção, acesso a transporte público, classificação de terras agrícolas, uso do solo ao redor, natureza — florestas próximas e áreas protegidas sobrepostas — o que está no subsolo (terrenos de mineração e principais reservatórios de água subterrânea), a classificação de uso do solo e qualidade do solo, e acesso viário.

Fonte de dados: registro nacional polonês RCN (Rejestr Cen Nieruchomosci) | Plataforma: cenogram.pl

Obtenha sua chave de API

  1. Acesse cenogram.pl/api
  2. Digite seu e-mail
  3. Você receberá sua chave de API cngrm_... por e-mail

Gerencie suas chaves em cenogram.pl/ustawienia.

Plano gratuito

Novas contas começam com 1.000 tokens e um teste de 14 dias do plano Standard. Depois disso, a chave continua funcionando com 50 tokens por semana — o saldo é restaurado para 50 a cada 7 dias, em vez de acumular — sem data de expiração e sem cartão de crédito.

Uma chamada custa 1 token para estatísticas, dados de referência, identidade de parcela e contexto municipal; 2 para uma busca de transações, um histograma de preços ou uma lista de parcelas em uma área; 4 para uma camada de contexto de uma parcela ou transação; 5 para busca espacial, contornos de parcelas, avaliação e uma comparação multi-distrital; 45 para get_parcel_report, que retorna todas as camadas de uma vez. Catálogos de locais são gratuitos. Planos pagos aumentam o limite — veja cenogram.pl/api.

Instalação

Escolha seu cliente. Todas as opções abaixo usam o servidor hospedado — sem necessidade de instalação local (exceto npx/stdio).

Claude Code

Um único comando — zero arquivos de configuração:

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

Adicione ao .cursor/mcp.json no seu projeto:

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

Adicione ao seu arquivo de configuração:

  • 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

Adicione ao .vscode/mcp.json no seu espaço de trabalho:

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

Adicione ao ~/.codeium/windsurf/mcp_config.json:

HTTP remoto:

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

Se HTTP não funcionar, use a opção npx (stdio) abaixo.

Cline

No VS Code: Configurações > Cline > Servidores MCP. Adicione:

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

Requer Node.js >= 18. Use esta opção se quiser executar o servidor localmente em vez de se conectar ao servidor hospedado.

{
  "mcpServers": {
    "cenogram": {
      "command": "npx",
      "args": ["-y", "@cenogram/mcp-server@latest"],
      "env": {
        "CENOGRAM_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}
ClienteArquivo de configuração
Cursor.cursor/mcp.json
Claude Code.mcp.json no seu projeto
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json
ClineConfigurações do VS Code > Cline > Servidores MCP

Configuração

Variável de AmbienteObrigatóriaPadrãoDescrição
CENOGRAM_API_KEYSim (stdio)-Chave de API de cenogram.pl/api
CENOGRAM_API_URLNãohttps://cenogram.plURL base da API
MCP_TRANSPORTNãostdioDefina como http para o modo HTTP Streamable
MCP_PORTNão3002Porta do servidor HTTP (somente modo HTTP)
CENOGRAM_CLIENT_IDNãogerado automaticamenteIdentificador persistente do cliente

Você também pode usar o sinalizador de CLI --http em vez de MCP_TRANSPORT=http.

Dicas

  • Seleção de modelo: Para melhores resultados, use Claude Opus 4.7. Ele faz mais chamadas sequenciais de ferramentas e produz análises mais ricas. Você pode trocar o modelo no menu suspenso na parte inferior da janela de chat.

Exemplos de Prompts

Polonês:

  • "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"

Ferramentas

FerramentaDescriçãoParâmetros Principais
search_transactionsBuscar transações com filtroslocalização, rua, númeroDoEdifício, idDaParcela, tipoDePropriedade, tipoDeMercado, faixa de preço/data/área
get_price_statisticsEstatísticas de preço/m² por localização (somente residencial)localização (opcional)
get_price_distributionHistograma de preçosbins, preçoMáximo
search_by_areaBuscar transações por raio geográficolatitude, longitude, raioKm
get_market_overviewVisão geral do banco de dados e estatísticas(nenhum)
list_locationsListar locais disponíveisbusca (opcional)
search_parcelsBuscar parcelas por prefixo de ID cadastralq (prefixo do ID da parcela, mínimo 3 caracteres)
list_parcels_in_areaListar as parcelas cadastrais em uma área — lista leve ou contornos completosteryt, localização, bbox, lat + lng + raioKm, ou polígono; incluirGeometria, áreaMín/áreaMáx, rua/númeroDoEdifício, cursor
search_by_polygonBuscar transações dentro de um polígono GeoJSONpolígono, tipoDePropriedade, dataDe/dataAté
compare_locationsComparar estatísticas entre 2-5 distritosdistritos (separados por vírgula), tipoDePropriedade
get_building_breakdownDetalhamento por edifício para uma transação (pegada, andares, área útil estimada)idDaTransação (UUID de um resultado de busca)
get_parcel_reportDossiê composto para uma parcela: núcleo, 13 camadas de enriquecimento, histórico de transações, contexto de preços local e contexto municipalidDaParcela (ID cadastral ou UUID)
resolve_parcelResolver uma parcela para sua identidade cadastralidDaParcela, q (ID cadastral completo ou 'localidade + número da parcela' — não um endereço de rua), ou lat + lng
get_demographicsContexto populacional e demográfico para uma localizaçãolocalização ou teryt, ano (ou anoDe/anoAté), categoria
get_infrastructure_signalsSinais de infraestrutura municipal (licitações, serviços públicos, gastos de capital)localização ou teryt
estimate_valueEstimativa de valor por vendas comparáveis para uma propriedadeárea, mais lat + lng ou idDaParcela; quartos, mercado
get_transaction_floodRisco de inundação para a propriedade em uma transaçãoidDaTransação (UUID de um resultado de busca)
get_transaction_heritageStatus no registro de patrimônio histórico para a propriedadeidDaTransação
get_transaction_landslideRisco de deslizamento para a propriedadeidDaTransação
get_transaction_surroundingsContexto de incômodos e uso do solo ao redor da propriedadeidDaTransação
get_transaction_transitAcessibilidade a transporte público para a propriedadeidDaTransação
get_transaction_permitsLicenças de construção registradas para a propriedadeidDaTransação
get_transaction_planningZoneamento local e status de planejamento para a propriedadeidDaTransação
get_transaction_farmlandClassificação de uso agrícola do solo para a propriedadeidDaTransação
get_transaction_natureFlorestas próximas e áreas naturais protegidas sobrepostas para a propriedadeidDaTransação
get_transaction_subsurfaceTerrenos de mineração e principais reservatórios de água subterrânea sob a propriedadeidDaTransação
get_transaction_roadsEvidência geométrica de acesso viário para a propriedade (distâncias, classe da via, indicador de acesso)idDaTransação

Nomenclatura de locais

  • A maioria das cidades: use o nome da cidade diretamente (ex.: "Gdansk", "Lublin")
  • Varsóvia: "Warszawa" cobre todos os 18 distritos de uma vez; nomeie um ("Mokotow", "Srodmiescie", "Wola") para restringir
  • Cracóvia e Łódź funcionam da mesma forma: o nome da cidade cobre todos os subdistritos, ou nomeie um ("Krakow-Podgorze")
  • Nomes de bairros não são unidades administrativas — busque por raio ou polígono
  • Use list_locations para encontrar nomes válidos

Tipos de propriedade

ValorPolonêsInglês
landGruntTerreno
buildingBudynekEdifício
developed_landGrunt zabudowanyTerreno desenvolvido
unitLokalApartamento/unidade

Fluxos de trabalho

Os resultados incluem IDs de parcelas e coordenadas GPS, permitindo pesquisa em várias etapas:

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")

Isso imita como um avaliador de propriedades encontra transações comparáveis para relatórios de avaliação.

Começar pelo terreno em vez de pela escritura é um caminho 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")

A etapa 1 pagina por cursor; a etapa 2 é limitada e geralmente truncada, então restrinja a caixa em vez de ler uma resposta truncada como a lista de parcelas da área.

Dados

  • Mais de 8 milhões de transações de toda a Polônia (380 condados)
  • Intervalo de datas: 2003 - presente
  • Fonte: registro nacional polonês RCN (Rejestr Cen Nieruchomosci)
  • Atualização: atualizações periódicas do RCN
  • Contexto por parcela: zoneamento, risco de inundação e deslizamento, registro de patrimônio histórico, licenças de construção e atividade de construção, acesso a transporte público, uso agrícola do solo, arredores, natureza (florestas próximas e áreas protegidas), subsolo (terrenos de mineração e principais reservatórios de água subterrânea), classificação de uso do solo e qualidade do solo, e acesso viário — endereçável por ID cadastral

Solução de problemas

"Erro: CENOGRAM_API_KEY é obrigatório" — Isso se aplica apenas ao modo stdio. Certifique-se de que CENOGRAM_API_KEY esteja definido no bloco env da sua configuração MCP. Para HTTP remoto, a chave vai no cabeçalho Authorization.

npx trava ou falha — Verifique sua versão do Node.js com node -v. O modo stdio requer Node.js >= 18. Se você estiver em uma versão mais antiga, use a opção HTTP remota (sem necessidade de Node.js).

Um local retorna 0 resultados — O nome pode não ser uma unidade administrativa. Distritos e bairros são duas coisas diferentes: "Mokotow" é um distrito e funciona, "Sluzew" é um bairro dentro dele e não funciona. Use list_locations(search="...") para encontrar nomes válidos, ou busque por raio (search_by_area) para qualquer coisa menor que um distrito.

401 Não Autorizado (modo HTTP) — O cabeçalho Authorization deve ser Bearer cngrm_... (com o prefixo Bearer). Verifique se a chave de API completa está incluída, não apenas o prefixo.

402 Pagamento Necessário — A conta está sem tokens. Em uma conta gratuita, a resposta informa a data a partir da qual o saldo volta ao limite semanal de 50; a chave e a conexão permanecem válidas até lá. Um plano pago remove o limite — veja cenogram.pl/api.

Desenvolvimento

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

Licença

MIT