Référence MCP

Serveur MCP — Vue d'ensemble

Le serveur MCP Normi expose 32 outils DVF, DPE, BDNB, ANIL et SIRENE via le protocole Model Context Protocol (HTTP Streamable). Branchez-le à Claude Desktop, Claude Code, Cline ou tout client MCP compatible.

Connexion

URL du serveurhttps://normimcp-server-production.up.railway.app/mcp
TransportHTTP Streamable — stateless, sans session
AuthentificationAuthorization: Bearer VOTRE_TOKEN

Le serveur ne maintient aucun état entre les requêtes : chaque appel est indépendant. Votre client peut appeler initialize comme d'habitude, mais rien n'est requis avant un tools/call — et il n'y a pas de mcp-session-id à conserver entre deux appels.

Exemple d'initialisation

Requête

curl -X POST https://normimcp-server-production.up.railway.app/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer normi_votre_token" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "mon-agent", "version": "1.0.0" }
    }
  }'

Réponse

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {},
      "prompts": {}
    },
    "serverInfo": {
      "name": "Normi-MCP",
      "version": "1.0.0"
    }
  }
}

Appel d'outil

curl -X POST https://normimcp-server-production.up.railway.app/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer normi_votre_token" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "analyze_market_statistics",
      "arguments": {
        "code_postal": "75011",
        "type_local": "Appartement"
      }
    }
  }'

Les 32 outils MCP

OutilCréditsDescription
search_property_transactions5 créditsRecherche transactions DVF avec filtres
analyze_market_statistics5 créditsStats agrégées : médiane, prix/m², volume
analyze_purchasing_power5 créditsRatio prix/revenu par commune (pouvoir d'achat), croisant DVF et INSEE Filosofi
analyze_rental_yield10 créditsRendement locatif brut estimé par commune, croisant loyers ANIL et prix DVF
detect_flips10 créditsReventes rapides : taux de flip, marge brute et durée de détention par commune
find_property_comparables10 créditsBiens similaires autour d'un point GPS
analyze_price_trends10 créditsSéries temporelles par mois/trimestre/an
compare_locations10 créditsComparer 2 à 5 zones côte à côte
analyze_market_activity10 créditsVolume d'activité et saisonnalité
get_zonal_price_distribution15 créditsPrix par zone (code postal / commune) — données JSON pour cartographie
lookup_property_history20 créditsHistorique complet pour une adresse précise
estimate_property_value10 créditsAVM : fourchette basse/médiane/haute à partir de comparables DVF
score_market_health10 créditsScore de santé du marché (0–100) pour une zone
add_property_to_portfolio / list_portfolio_properties / get_portfolio_property / update_portfolio_property / delete_portfolio_property0–10 créditsGérer un portefeuille de biens avec estimations automatiques
create_market_alert / list_market_alerts / update_market_alert / delete_market_alert0 créditsAlertes webhook sur nouvelles transactions (Pro/Enterprise)
analyze_dpe_distribution10 créditsDistribution DPE (A–G) et médianes énergétiques pour une zone
analyze_dpe_price_premium10 créditsPrime de prix par classe DPE — croisement DVF×DPE cadastral
analyze_dpe_price_and_thermal_risk10 créditsAnalyse combinée : prix par classe, passoires thermiques, prime verte
get_building_characteristics2 créditsCaractéristiques BDNB du bâtiment le plus proche d'une transaction DVF : année, matériaux, usage, étages
analyze_building_age_price_impact10 créditsPrix médian/m² par tranche de construction (avant 1919, 1919–1945 … 2006+)
score_renovation_potential10 créditsScore de potentiel de rénovation (0–100) : bâtiments anciens sous-valorisés dans la zone
analyze_building_stock5 créditsStock de bâtiments par commune/département : répartition par tranche, usage, logements

Crédits

Chaque appel d'outil déduit un nombre fixe de crédits de votre solde. La déduction se fait en arrière-plan après l'exécution réussie (fire-and-forget). Si vos crédits sont insuffisants, l'outil retourne un message d'erreur dans content[0].text — pas d'erreur HTTP 402.

Chaque réponse inclut un champ _credits : { "used": 5, "remaining": 95 }. Un champ note apparaît quand le solde restant est inférieur à 20.

Codes d'erreur HTTP

CodeCauseAction recommandée
401Token absent, invalide ou révoquéVérifiez is_active sur votre clé API.
429Limite de débit dépassée60 req/min par défaut. Plans supérieurs : agent 30/min, pro 60/min, enterprise 120/min.
Crédits insuffisants : erreur dans le contenu, pas HTTP
Quand un outil ne peut pas s'exécuter faute de crédits, le serveur retourne HTTP 200 avec un message d'erreur dans content[0].text. Surveillez ce champ dans vos intégrations.