Mcp Immo

io.github.OlivierLAVAUD由 GitHub 帳號 OlivierLAVAUD 發布v1.12.0更新於 Oct 24, 2026

French real-estate intelligence from official open data: DVF, valuations, rents, tax, DPE, risks.

概覽

AI 產生的概覽

法國房產資料伺服器:助理可依地址查詢公證成交、估值、租金、房產稅、DPE 與風險等官方開放資料。

可以做什麼
  • 地址與行政區:地理編碼與反查、市鎮概況、IRIS 分區、地籍地塊、PLU 都市計畫分區。
  • 市場分析:地址周邊實際公證成交、每平方公尺價格中位數與四分位及走勢、刊登租金指標、租金管制參考價。
  • 估值與比較:以可比成交加權估值並給出區間、2 至 5 個地址並列比較、完整房產報告、依預算反查可及市鎮。
  • 成本與風險:取得成本與毛/淨報酬率、平均房產稅、DPE 診斷、自然與技術風險、周邊生活機能。
  • 模型稽核:依面積級距與年度的滾動回測誤差指標。
適用情境
適合需要回答法國房產問題的情境,例如某間房子值多少、附近成交行情、租金、能源等級、都市計畫分區或自然風險,且數字必須能追溯到官方開放資料而非房仲刊登資訊。
執行需求
透過 npm 套件 mcp-immo-olv 以 stdio 在本機執行,需要 Node.js 18 或更新版本。不需 API 金鑰或帳號。可選用 IMMO_HTTP_PORT 切換為 Streamable HTTP、IMMO_HTTP_HOST 設定綁定位址、IMMO_CACHE_DIR 啟用 DVF 持久快取。需要連線法國公共 API 的網路。
安裝前請注意
估值屬於開放資料分析,並非專業估價或財務建議;可比成交少於三筆時引擎會拒絕估值,且不考慮屋況、樓層與裝修。房產稅為市鎮平均值而非個人稅單,報酬率也非淨淨報酬。若設定 IMMO_HTTP_PORT,伺服器沒有任何身分驗證,需謹慎綁定位址並加以保護。資料涵蓋有限:2021 年前無地理定位 DVF,阿爾薩斯-摩澤爾與馬約特無資料,租金管制僅限涵蓋區域。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Immo,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-immo-olv

Données immobilières françaises issues de l'open data public À partir d'une adresse, un client MCP peut consulter les ventes notariées (DVF), obtenir une estimation par comparables, les loyers d'annonce, une indication de la taxe foncière, les DPE, les risques Géorisques et le profil INSEE de la commune — sans clé API..

L'objet de ce MCP, produire des données à partir de sources fiables

Les portails immobiliers affichent parfois des prix demandés et des estimations opaques. Les données publiques françaises offrent mieux : actes notariés DVF, diagnostics ADEME, indicateurs de loyer, fiscalité locale REI, risques et référentiels d'adresses. mcp-immo-olv les relie dans des réponses auditables.

Chaque chiffre expose sa source, sa portée et ses limites. Une estimation reste une analyse d'open data, pas un avis de valeur professionnel ni un conseil financier.

Modalités de connexion

Prérequis unique : Node.js 18 ou plus récent. Aucune clé API, aucun compte. Par défaut le serveur tourne en local, en stdio : rien n'est exposé sur le réseau. Un mode Streamable HTTP optionnel (variable IMMO_HTTP_PORT) permet de l'héberger et de le partager — voir § 6.

Votre contexteConnexion en une ligne
Claude Codeclaude mcp add immo-olv -- npx -y mcp-immo-olv@latest
Clinecline mcp add immo-olv --yes -- npx -y mcp-immo-olv@latest
Autre client MCPcopier le bloc JSON ci-dessous dans mcpServers
Registre MCP officielserveur io.github.OlivierLAVAUD/mcp-immo
Aucun client MCPconsole web locale : npm run dev → http://localhost:5173
Hébergement / accès distantIMMO_HTTP_PORT=8123 npx -y mcp-immo-olv@latest → http://127.0.0.1:8123/mcp

1. Claude Code

bash
claude mcp add immo-olv -- npx -y mcp-immo-olv@latest

Vérifier avec claude mcp list : immo-olv doit y figurer. Pour les commandes /immo-olv:rapport, /immo-olv:estimation et /immo-olv:risques, installez le plugin (voir Installer en plugin Claude Code).

2. Cline

En une commande (CLI cline) :

bash
cline mcp add immo-olv --yes -- npx -y mcp-immo-olv@latest

Sans --yes, la commande ouvre l'assistant d'ajout avec ces champs pré-remplis. Vérifier avec cline config mcp : immo-olv doit y figurer, actif.

Depuis l'IDE : dans le panneau Cline, icône MCP Servers (barre d'outils) → onglet Configure → bouton Configure MCP Servers, puis ajouter dans mcpServers :

json
{  "mcpServers": {    "immo-olv": {      "command": "npx",      "args": ["-y", "mcp-immo-olv@latest"],      "disabled": false,      "autoApprove": []    }  }}

L'extension ouvre son propre fichier de réglages MCP ; la CLI, elle, lit ~/.cline/data/settings/cline_mcp_settings.json (surcharge possible avec la variable CLINE_MCP_SETTINGS_PATH). Ensuite, redémarrer Cline : les 21 outils apparaissent dans la liste MCP.

3. Tout autre client MCP

Copier ce bloc dans la configuration du client (mcpServers) :

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

Redémarrer le client : les 21 outils apparaissent dans sa liste d'outils MCP.

4. Depuis ce dépôt (développement)

bash
npm installnpm run build

Pointer ensuite le client sur le build local au lieu du paquet publié :

json
{  "mcpServers": {    "immo-olv": {      "command": "node",      "args": ["/chemin/vers/mcp-immo-olv/dist/index.js"]    }  }}

Équivalent en une commande avec Claude Code :

bash
claude mcp add immo-olv -- node /chemin/vers/mcp-immo-olv/dist/index.js

Le serveur se lance aussi seul, mais il attend un client sur stdin :

bash
node dist/index.js

5. Console web (sans client MCP)

bash
npm --prefix ui installnpm run build        # le pont a besoin de dist/index.jsnpm run dev          # console : http://localhost:5173

Sans rien installer, un client compatible résout le serveur depuis le registre MCP officiel sous le nom io.github.OlivierLAVAUD/mcp-immo — voir Installer depuis le registre MCP.

6. Hébergement / Streamable HTTP

Par défaut le serveur est un processus stdio lancé par un client MCP. En définissant IMMO_HTTP_PORT, ce même registre d'outils bascule sur le transport MCP Streamable HTTP, pour l'héberger, le partager en équipe ou le joindre depuis un client qui ne sait pas lancer un sous-processus.

bash
IMMO_HTTP_PORT=8123 npx -y mcp-immo-olv@latest# → mcp-immo-olv listening on Streamable HTTP: http://127.0.0.1:8123/mcp

Point un client MCP « remote » sur l'URL de l'endpoint :

json
{  "mcpServers": {    "immo-olv": { "url": "http://127.0.0.1:8123/mcp" }  }}
VariableDéfautRôle
IMMO_HTTP_PORT(absente = stdio)Port d'écoute ; sa présence bascule le serveur en mode HTTP
IMMO_HTTP_HOST127.0.0.1Adresse de liaison
IMMO_CACHE_DIR(absente = mémoire seule)Dossier de cache disque persistant pour les DVF : accélère le cold start d'un ordre de grandeur

À savoir avant d'exposer le serveur :

  • Bouclage local par défaut. Il n'écoute que sur 127.0.0.1 : un serveur MCP sans authentification donne accès à tout le surface d'outils. Pour le partager au-delà de la machine, liez-le délibérément (IMMO_HTTP_HOST) et protégez l'accès (reverse proxy avec authentification, pare-feu…). Aucune authentification n'est implémentée côté serveur.
  • Sessions. Chaque session MCP (initialize) reçoit son propre couple serveur/transport, routé par l'en-tête Mcp-Session-Id. Une session inconnue répond 404, une méthode non autorisée 405.
  • Réponses JSON. Chaque outil est une requête/réponse unique (pas de flux serveur-initié), donc le serveur répond en JSON direct — compatible curl et tout client Streamable HTTP (qui doit accepter application/json et text/event-stream, comme le veut la spécification).
  • stdio reste la voie par défaut. Rien ne change pour Claude Code, Cline ou tout client qui lance le paquet : sans IMMO_HTTP_PORT, c'est exactement le même comportement qu'avant.

Installer depuis le registre MCP

Le serveur est référencé dans le registre officiel MCP sous le nom :

io.github.OlivierLAVAUD/mcp-immo

Un client capable de résoudre un serveur depuis le registre le trouve par ce nom, sans clé API ni compte à créer. Le registre ne stocke que les métadonnées : le serveur tourne en local, en stdio, et se lance depuis le paquet npm mcp-immo-olv. La configuration manuelle ci-dessus reste équivalente.

bash
# Vérifier la fiche publiéecurl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.OlivierLAVAUD%2Fmcp-immo"

Installer en plugin Claude Code

Le dépôt est aussi un marketplace de plugins Claude Code. Deux commandes suffisent, sans clé API :

bash
claude plugin marketplace add OlivierLAVAUD/mcp-immo-olvclaude plugin install immo-olv@mcp-immo-olv

Le plugin immo-olv lance le serveur MCP en stdio via npx -y mcp-immo-olv@latest, et ajoute trois commandes qui pré-câblent les appels d'outils :

CommandeCe qu'elle produit
/immo-olv:rapport <adresse>Dossier complet sur une adresse
/immo-olv:estimation <adresse> <type> <surface>Estimation par comparables et fiabilité mesurée du modèle
/immo-olv:risques <adresse>Risques, urbanisme et cadastre

Un skill de cadrage (immobilier-france) accompagne les outils : il impose de citer la source de chaque chiffre, de ne jamais inventer une donnée, et de traiter un risque available: false comme inconnu et non comme absent.

Sous Windows natif, si npx n'est pas résolu, déclare le serveur à la main :

bash
claude mcp add immo-olv -- cmd /c npx -y mcp-immo-olv@latest

Outils

OutilRésultatSource
property_reportDossier complet : marché, ventes, estimation, loyers, taxe, DPE, risques, commune, cadastre, PLU, IRIS, encadrement ; option format: "markdown" pour une fiche partageable, ou addresses (2–5) pour un dossier par adresseToutes les sources ci-dessous
compare_propertiesComparaison côte à côte de 2 à 5 adresses : marché, estimation, loyers, DPE, classementsDVF + Carte des loyers + ADEME
acquisition_costsSimulation des frais d'acquisition (droits de mutation, émoluments, taxe foncière moyenne) et rendements brut/netBarème officiel + REI + Carte des loyers
search_by_budgetRecherche inversée : quelles communes un budget donné peut atteindre, surfaces et rendementsDVF + Carte des loyers + geo.api.gouv.fr
estimate_propertyEstimation pondérée par comparables, fourchette, échantillon effectif, loyer et rendementsDVF + Carte des loyers + REI pour la taxe moyenne
backtest_estimatorBacktest walk-forward du modèle : MAPE, biais, couverture des intervalles, par bande de surface et par annéeDVF (DGFiP / Etalab)
property_salesVentes notariées réelles autour d'une adresse ou dans une communeDVF (DGFiP / Etalab)
price_per_m2Médiane, quartiles, évolution annuelle et fenêtre 12 moisDVF (DGFiP / Etalab)
rent_estimateIndicateurs de loyer d'annonce par segmentCarte des loyers (Ministère du Logement / ANIL)
rent_controlLoyer de référence, plafond légal (majoré) et minoréEncadrement des loyers (Ville de Paris, Métropole de Lyon, Montpellier)
property_tax_estimateCharge annuelle moyenne par article taxable, ventilée par composanteREI (DGFiP), via API publique OFGL
dpe_lookupDiagnostics de performance énergétique à l'adresse, logements existants et neufs, avec statut légal de location par étiquette (décret n° 2024-501) et coût énergétique annuel estiméADEME (dpe03existant, dpe02neuf)
cadastral_parcelParcelle cadastrale : identifiant idu, section, numéro, contenance officiellePCI, IGN / DGFiP (API Carto)
urbanism_zoningZone PLU (U / AU / A / N), règlement et prescriptions d'urbanismeGéoportail de l'urbanisme (DGALN / IGN)
iris_lookupIRIS INSEE d'une adresse : code, nom, type, communeCONTOURS-IRIS / ADMINEXPRESS, IGN
nearby_amenitiesCe qu'il y a autour d'une adresse : transports, écoles, commerces, santé, espaces verts — nombre dans le rayon et distance à vol d'oiseau des plus proches, avec un détail train / métro / tram / bus pour les transportsOpenStreetMap (ODbL), API Overpass
natural_risksRisques naturels et technologiques officielsGéorisques
risk_summaryDigest des risques : une phrase par risque (inondation, argile, radon, ICPE, DPE), explicite sur les inconnusGéorisques + ADEME
commune_infoPopulation (recensement + population légale INSEE pmun/pcap/ptot), code postal, département, région, surface, centregeo.api.gouv.fr / INSEE
geocode_address / reverse_geocodeAdresse ↔ coordonnées, code INSEE et identifiant BANBase Adresse Nationale

Sortie structurée

Les 21 outils déclarent le schéma de leur résultat (outputSchema, spécification MCP 2025-06-18). Chaque appel renvoie donc la même charge utile deux fois : structuredContent, l'objet validé par le SDK avant envoi, et le bloc texte JSON historique, conservé pour les clients antérieurs à cette révision. Un client peut typer le résultat, le rendre sans le reparser, et faire confiance à la forme annoncée — estimate_property promet estimate.per_m2.estimate, estimate.confidence, estimate.top_comps[], et le serveur échoue plutôt que de livrer autre chose.

Les schémas sont volontairement ouverts (additionalProperties: true) : un champ ajouté par une source en amont ne peut pas invalider un outil. Ils sont vérifiés à deux niveaux — test/output-schemas.test.ts les confronte à un payload réel capturé (ui/fixtures/property-report-lyon.json), et npm run smoke valide les réponses live contre les mêmes schémas.

Taxe foncière et rendement « net »

property_tax_estimate ne prétend jamais connaître l'avis de taxe foncière d'un bien. Le REI publie des montants agrégés et nombres d'articles imposés par commune : le serveur calcule leur charge moyenne, avec les composantes publiées (part communale, intercommunale, syndicats, GEMAPI, TEOM). L'avis réel dépend de la valeur locative cadastrale, des exonérations, du propriétaire et de l'imposition : demandez-le avant tout achat.

Le rendement après taxe moyenne retire cette seule moyenne au loyer annuel. Il ne déduit ni charges de copropriété, assurance, gestion, vacance, travaux ni impôt sur les revenus : ce n'est pas un rendement net-net.

Exemples

Les sorties réelles des outils — digest de risques, proximité, comparaison, recherche par budget, fiche Markdown, lots d'adresses et messages d'erreur — sont dans EXAMPLES.md, rejouables avec npm run examples.

Des prompts d'exemple pour les 21 outils (à copier dans votre client), classés par besoin et par parcours, sont dans Prompts.md. Ils incluent des prompts qui vérifient les garde-fous : source injoignable → inconnu, estimation refusée sous trois comparables, adresse inexistante.

Méthodologie d'estimation

L'estimation est une médiane pondérée des ventes comparables : même type de bien, surface 40–250 % de la cible, un seul logement par acte, valeurs extrêmes écartées. Les prix anciens sont ramenés au niveau du dernier millésime de marché par commune (coefficient borné 0,7–1,6). Les poids combinent distance, similarité de surface et ancienneté ; les quartiles pondérés donnent la fourchette. Chaque comparable, son ajustement et son poids sont restitués.

Le moteur refuse une estimation sous trois comparables. Il ne connaît ni l'état, ni l'étage, ni la vue, ni les travaux, ni les contraintes juridiques.

Backtesting du moteur

backtest_estimator rejoue le moteur sur les ventes de la commune : chaque vente est estimée en n'utilisant que les ventes enregistrées avant sa propre date (découpe asOf, acte exclu), puis comparée au prix réellement payé. Aucun comparable futur, aucun niveau de marché futur ne peut fuiter.

Il publie la MAPE, l'erreur médiane et le 90ᵉ centile, le biais signé (positif = le modèle surestime) et la couverture de l'intervalle P25–P75 — à lire près de 50 %, pas 95 % : un intervalle P25–P75 bien calibré contient la moitié des ventes réalisées. Le tout est ventilé par bande de surface et par année, avec les dix plus grosses erreurs pour audit. Une exécution de contrôle sur Lyon donne une MAPE d'environ 21 %, un biais de +8 % et une couverture de 52,5 %.

Sources, licences et limites

Chaque jeu renvoie à sa page de référence officielle (le nom du jeu est un lien) ; les URL que le serveur renvoie dans une réponse — source_url, officialReportUrl, unavailable.portal_url — sont vérifiées en direct par npm run smoke.

JeuProducteurUsage dans le serveur
DVF géolocaliséesDGFiP / EtalabVentes 2021 → présent ; aucune source géolocalisée avant 2021 ; pas d'Alsace-Moselle ni Mayotte ; délai de publication
Carte des loyersMinistère du Logement / ANILLoyer d'annonce modélisé, charges comprises ; pas un loyer de référence réglementé
Encadrement des loyersVille de Paris, Métropole de Lyon et MontpellierLoyers de référence des zones couvertes uniquement ; « non couvert » est renvoyé explicitement ailleurs
REIDGFiP, exposé par OFGLFiscalité locale agrégée ; moyenne par article, jamais taxe individuelle
DPE logements existants et neufsADEMEDiagnostics dpe03existant et dpe02neuf, chacun étiqueté par registre
Cadastre (PCI)IGN / DGFiP (API Carto)Parcelle, idu et contenance ; jamais la propriété ni le droit de construire
Géoportail de l'urbanismeDGALN / IGN (API Carto)Zonage et prescriptions opposables ; les communes sans PLU en sont absentes
CONTOURS-IRIS / ADMINEXPRESSIGN (source INSEE)Identité de l'IRIS ; aucune donnée socio-démographique dans cette couche
GéorisquesMinistère de la Transition écologiqueRapport de risques officiel ; si leur API ne répond pas, la réponse porte available: false et le dit explicitement au lieu de renvoyer une liste vide
OpenStreetMap (via Overpass)Contributeurs OSM, ODbLPoints d'intérêt autour d'une adresse ; couverture communautaire, donc inégale, et un count nul quand Overpass ne répond pas signifie inconnu, jamais « rien autour »
BAN / geo.api.gouv.frIGN / DINUM / INSEEAdresses et unités administratives

Licences : Licence Ouverte / Open Licence (Etalab) pour les jeux de l'État cités ici, ODbL pour OpenStreetMap ; certains jeux de collectivités ont leur propre licence, à vérifier sur la fiche du jeu avant réutilisation. La source doit être citée dès qu'une réponse est reprise. Les jeux publics sont interrogés en direct, sans clé API. Le cache mémoire réduit la latence et les appels répétés, mais est vidé au redémarrage ; définir IMMO_CACHE_DIR (un dossier inscriptible) persiste les lignes DVF lues sur disque — un redémarrage réhydrate depuis le fichier au lieu de tout re-télécharger, sans changer les données servies.

Développement

bash
npm installnpm run buildnpm test          # tests unitaires, sans réseaunpm run smoke     # vérification live des API publiquesnpm run examples  # exemples live, commentés dans EXAMPLES.md
cd uinpm installnpm run dev       # console avec hot reload : http://localhost:5173npm run buildnpm start         # console compilée + pont MCP : http://localhost:8787npm run smoke     # test de rendu avec fixtures réelles

Depuis la racine, les mêmes commandes sont accessibles sans changer de dossier (npm run dev délègue à ui/) :

bash
npm --prefix ui installnpm run dev       # console avec hot reloadnpm run ui:build  # compile l'interfacenpm run ui:start  # console compilée + pont MCP sur un seul port

Licence

MIT. Copyright © 2026 Olivier LAVAUD (voir LICENSE).

來源:README.md,提交 21152a5

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

5
  1. v1.12.0最新Oct 12, 2026
  2. v1.11.0Oct 11, 2026
  3. v1.8.1Oct 9, 2026
  4. v1.3.0Oct 9, 2026
  5. v1.0.3Sep 25, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分