Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - zedd75/mcp-imo: MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys · GitHub
Skip to content

Repository files navigation

mcp-immo

CInpmlicensenode

French real-estate intelligence for AI assistants. Give Claude (or any MCP client) a French address and it can pull the actual notarized sale prices around it, produce a transparent comparables-based valuation with confidence bounds, compute the gross rental yield from official rent indicators, check the energy rating (DPE), list natural & technological risks, and profile the commune — all from official French open data, with zero API keys.

🇫🇷 Serveur MCP pour l'immobilier français : ventes réelles (DVF), estimation par comparables auditable, loyers officiels et rendement locatif, DPE, risques naturels — pour n'importe quelle adresse, sans clé API. Section française ↓

Why this exists

Real-estate portals show asking prices and sell black-box estimates. The French state publishes better raw material — every notarized sale (DVF), every energy diagnostic (ADEME), modelled rents for all 35 000 communes (Carte des loyers), and the official risk report for any parcel (Géorisques) — but scattered across five APIs with three different address keys.

mcp-immo-france joins them properly. One call gives an AI assistant a full due-diligence dossier:

You: I'm visiting a 60 m² flat at 12 rue de la République in Lyon, listed at 450 000 €. Worth it? Could I rent it out?

Claude:(calls property_report) Comparable notarized sales value it around 304 000 € (5 064 €/m², 200 weighted comps, high confidence) — the asking price is ~48 % above that. Median for flats within 500 m over the last 12 months: 4 848 €/m². The official rent indicator is 16.6 €/m²/month, so ≈ 1 000 €/month — a 3.9 % gross yield at the estimated value, much less at asking. Filed DPEs in the building are D. Géorisques flags flood and clay-shrinkage exposure. Recent comparable sales: …

Every number above is traceable: the tool returns its comps, weights, adjustments and sources.

What makes it different

  • A real valuation engine, not a wrapper.estimate_property computes a weighted-median comparables estimate (distance decay, surface similarity, recency, year-level market adjustment) and returns every comp with its weight so the figure can be audited. It reports a Kish effective sample size and refuses to answer below 3 comps rather than hallucinate precision.
  • Boundary-aware search. Commune-file-based DVF tools silently lose half the neighborhood when an address sits near a commune border. This server probes 8 compass points and fans out to every commune the radius touches.
  • Paris/Lyon/Marseille handled correctly. City-wide queries aggregate all municipal arrondissements (a naïve implementation returns zero sales for "Paris").
  • Honest statistics by default. €/m² only from single-dwelling deeds, outliers excluded, trailing-12-months view quoted separately from the all-period median, sources named in every response.
  • Zero configuration. No API key, no signup, no scraping — only official open-data endpoints.

Quickstart

Requires Node.js ≥ 18.

Claude Code

claude mcp add immo-france -- npx -y mcp-immo-france

Claude Desktop — add to claude_desktop_config.json:

{
"mcpServers": {
"immo-france": {
"command": "npx",
"args": ["-y", "mcp-immo-france"]
}
}
}

Any other MCP client — run npx -y mcp-immo-france over stdio.

Tools

ToolWhat it doesSource
property_reportOne call → full dossier: market stats, recent sales, valuation, rent & yield, DPE, risks, commune profileall of the below
estimate_propertyTransparent comparables valuation with confidence bounds, auditable comps and gross rental yieldDVF + Carte des loyers
property_salesActual notarized sales (price, date, surface, rooms) around an address or across a commune, 2021→todayDVF (DGFiP / Etalab)
price_per_m2Median / quartiles €/m², all-period + trailing-12-months + per-year evolutionDVF (DGFiP / Etalab)
rent_estimateOfficial modelled asking rents (€/m²/month): apartments, 1-2 rooms, 3+ rooms, housesCarte des loyers (Min. Logement / ANIL)
dpe_lookupEnergy performance certificates filed for an address (labels A–G, GES, surface, year built)ADEME
natural_risksOfficial risk report: flood, clay shrink-swell, radon, earthquake, industrial sites…Géorisques
commune_infoPopulation, postcodes, département, région, surface, center of any communegeo.api.gouv.fr (INSEE)
geocode_address / reverse_geocodeFrench address ↔ coordinates + INSEE code + BAN idBase Adresse Nationale

Example prompts

  • « Fais-moi le rapport complet sur le 8 rue Oberkampf à Paris, appartement de 45 m². »
  • « Estime un T3 de 65 m² au 25 cours Gambetta à Lyon. Rendement locatif ? »
  • « Prix au m² des maisons à Arcachon : évolution depuis 2021 ? »
  • "Is this address in a flood zone? What DPE ratings were filed there?"

Methodology (and its limits)

Valuation — weighted median over comparable sales: same dwelling type, surface within 40–250 % of the target, single-dwelling deeds only. Comps are re-expressed at the latest market level via commune-wide year medians (clamped ×0.7–1.6), then weighted by exp(-distance/500 m) × exp(-2·|ln(surface ratio)|) × exp(-0.25·age in years). The 25th–75th weighted percentiles give the range; the top 200 comps by weight are kept and the Kish effective sample size is reported.

What the model cannot see: condition, floor, elevator, view, renovation, legal issues. DVF also lags reality by ~6 months and does not cover Alsace-Moselle or Mayotte. Rent indicators are modelled asking rents (charges included), not regulated reference rents. This is public-data analysis, not a professional appraisal, and not financial advice.

DatasetPublisherNotes
DVF géolocaliséesDGFiP / EtalabNotarized sales, 2021→today
Carte des loyersMin. Logement / ANILModelled asking rents, 2025
DPE logements existantsADEMEAll diagnostics since July 2021
GéorisquesMin. Transition écologiqueOfficial risk reports
Base Adresse Nationale / geo.api.gouv.frIGN / DINUM / INSEEAddresses & administrative units

Development

npm install
npm run build # tsc
npm test# 30+ unit tests, no network
npm run smoke # end-to-end against the live public APIs
npm run smoke -- "5 avenue Anatole France Paris"

Dependency-light on purpose: the MCP SDK, zod, and the Node standard library. A weekly CI job runs the live smoke suite to catch upstream dataset changes early. PRs welcome — see CONTRIBUTING.md.

Roadmap

  • Cadastral parcel lookup (surface, geometry)
  • New-build DPE dataset (dpe02neuf)
  • Streamable HTTP transport for remote deployment
  • Per-quarter market trend detection

🇫🇷 En français

Serveur MCP qui branche Claude (ou tout client MCP) sur l'open data officiel de l'immobilier français : ventes notariées (DVF), estimation par comparables dont chaque comparable et chaque poids sont restitués (pas de boîte noire), loyers officiels (Carte des loyers) avec rendement brut, DPE (ADEME), rapport de risques (Géorisques) et données INSEE. Aucune clé API : npx -y mcp-immo-france et c'est en place.

L'outil property_report génère en un appel un dossier complet de due diligence pour n'importe quelle adresse — le genre d'analyse qu'on paie ailleurs, ici open source et auditable.

License

MIT

About

MCP server for French real-estate intelligence: DVF notarized sales, transparent comparables valuations, official rent indicators & gross yield, DPE, Georisques risks - zero API keys

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages