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

Cenogram MCP Server

npm version Node.js License: MIT

Dados de Transações Imobiliárias e Parcelas Polonesas 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 de transação, o servidor resolve parcelas cadastrais e adiciona contexto por parcela: zoneamento, risco de inundação e deslizamento, registro de patrimônio, licenças de construção e atividade de construção, acesso ao transporte público, classificação de terras agrícolas e uso do solo ao redor.

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. Informe seu e-mail
  3. Você receberá sua chave de API cngrm_... por e-mail

Gerencie suas chaves em cenogram.pl/ustawienia.

Instalação

Escolha seu cliente. Todas as opções abaixo usam o servidor hospedado - nenhuma instalação local é necessária (exceto npx/stdio).

Claude Code

Um 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 > MCP Servers. 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 isto se quiser executar o servidor localmente em vez de conectar ao 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 > MCP Servers

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 modo HTTP Streamable
MCP_PORTNão3002Porta do servidor HTTP (apenas modo HTTP)
CENOGRAM_CLIENT_IDNãoauto-geradoIdentificador persistente do cliente

Você também pode usar o flag 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 de ferramentas sequenciais 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:

  • "Qual é o preço mediano de apartamentos em Cracóvia em 2025?"
  • "Mostre transações na Rua Pulawska 15 no Mokotów"
  • "Encontre transações no lote 126104_9.0015.201"
  • "Verifique o plano local e o risco de inundação para o lote 126104_9.0015.201"
  • "Encontre transações de terrenos num raio de 5 km do centro de Wrocław acima de 500.000 PLN"
  • "Compare os preços de apartamentos em Mokotów e Wola"
  • "Mostre a distribuição de preços de imóveis na Polônia"

Inglês:

  • "Qual é o preço mediano de apartamentos em Cracóvia em 2025?"
  • "Mostre transações na Pulawska 15 no Mokotów"
  • "Encontre todas as transações no lote 126104_9.0015.201 e depois busque nas proximidades"
  • "Verifique o zoneamento e o risco de inundação para o lote 126104_9.0015.201"
  • "Encontre transações de terrenos num raio de 5 km do centro de Wrocław acima de 500.000 PLN"
  • "Compare os preços de apartamentos nos distritos de Mokotów e Wola"
  • "Mostre a distribuição de preços de imóveis na Polônia"

Ferramentas

FerramentaDescriçãoParâmetros-chave
search_transactionsBuscar transações com filtroslocalização, rua, número do edifício, ID do lote, tipo de propriedade, tipo de mercado, faixa de preço/data/área
get_price_statisticsEstatísticas de preço/m2 por localização (somente residencial)localização (opcional)
get_price_distributionHistograma de preçosbins, maxPrice
search_by_areaBusca por raio geográficolatitude, longitude, radiusKm
get_market_overviewVisão geral do banco de dados e estatísticas(nenhum)
list_locationsListar localizações disponíveisbusca (opcional)
search_parcelsBuscar lotes por prefixo do ID cadastralq (prefixo do ID do lote, mínimo 3 caracteres)
search_by_polygonBuscar dentro de um polígono GeoJSONpolígono, tipo de propriedade, dataInício/dataFim
compare_locationsComparar estatísticas entre 2-5 distritosdistritos (separados por vírgula), tipo de propriedade
get_building_breakdownDetalhamento por edifício para uma transação (pegada, andares, área útil estimada)transaction_id (UUID de um resultado de busca)
get_parcel_reportDossiê composto para um lote: núcleo, 9 camadas de enriquecimento, histórico de transações, contexto de preços locais e contexto municipalparcelId (ID cadastral ou UUID)
resolve_parcelResolver um identificador de lote cadastral para seu registro canônicoparcelId ou q (prefixo do ID), ou lat + lng
get_demographicsContexto populacional e demográfico para uma localizaçãolocalização ou teryt, ano (ou anoInício/anoFim), categoria
get_infrastructure_signalsSinais de infraestrutura municipal (licitações, utilidades, gastos de capital)localização ou teryt
estimate_valueEstimativa de valor de vendas comparáveis para uma propriedadeárea, mais lat + lng ou parcelId; quartos, mercado
get_transaction_floodRisco de inundação para a propriedade em uma transaçãotransaction_id (UUID de um resultado de busca)
get_transaction_heritageStatus do registro de patrimônio para a propriedadetransaction_id
get_transaction_landslideRisco de deslizamento para a propriedadetransaction_id
get_transaction_surroundingsContexto de incômodos e uso do solo ao redor da propriedadetransaction_id
get_transaction_transitAcessibilidade ao transporte público para a propriedadetransaction_id
get_transaction_permitsLicenças de construção registradas para a propriedadetransaction_id
get_transaction_planningZoneamento local e status de planejamento para a propriedadetransaction_id
get_transaction_farmlandClassificação de uso agrícola do solo para a propriedadetransaction_id

Nomenclatura de localizações

  • 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 Lodz 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 lotes e coordenadas GPS, possibilitando 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.

Dados

  • Mais de 8 milhões de transações de toda a Polônia (380 condados)
  • Período: 2003 - presente
  • Fonte: Registro nacional polonês RCN (Rejestr Cen Nieruchomosci)
  • Atualização: atualizações periódicas do RCN
  • Contexto por lote: zoneamento, risco de inundação e deslizamento, registro de patrimônio, licenças de construção e atividade de construção, acesso a transporte, uso agrícola do solo e arredores, 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 remoto (sem necessidade de Node.js).

Uma localização retorna 0 resultados - O nome pode não ser uma unidade administrativa. Distritos e bairros são 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.

Desenvolvimento

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

Licença

MIT