Guide d'installation / Cursor

Connecter Normi à Cursor

Déclarez Normi dans le mcp.json de Cursor : l'agent interroge alors les ventes DVF croisées avec les DPE et la BDNB, directement depuis l'éditeur.

https://mcp.normi.fr/mcp

Configuration vérifiée le 10 octobre 2026 avec la documentation MCP officielle de Cursor. Documentation Cursor MCP

Avant de commencer

  • Un compte Normi : connexion avec Google, 500 crédits gratuits par mois.
  • Pour la connexion par clé API ou le paquet STDIO : une clé normi_…, créée dans Tableau de bord → Tokens. Elle n'est affichée qu'une fois.
  • Pour le paquet STDIO : Node.js 18 ou plus récent (npx).

Connexion distante (HTTP Streamable)Recommandé

Ajoutez ce bloc au fichier de configuration. Sans en-tête, Cursor détecte la connexion OAuth de Normi : au premier usage, il ouvre normi.fr, vous vous connectez et autorisez Cursor. Aucune clé à copier ; si votre compte n'en a pas encore, une clé gratuite est créée à l'autorisation.

Fichier : ~/.cursor/mcp.json (tous les projets) ou .cursor/mcp.json (ce projet)

{
  "mcpServers": {
    "normi": {
      "url": "https://mcp.normi.fr/mcp"
    }
  }
}

Variante avec clé API

Pour une machine sans navigateur, ou si vous préférez une clé : exportez NORMI_API_KEY dans votre shell, puis référencez-la avec la syntaxe ${env:…} de Cursor. Ne collez jamais la clé en clair dans un .cursor/mcp.json versionné.

{
  "mcpServers": {
    "normi": {
      "url": "https://mcp.normi.fr/mcp",
      "headers": {
        "Authorization": "Bearer ${env:NORMI_API_KEY}"
      }
    }
  }
}

Alternative : paquet STDIO

Si votre environnement n'autorise pas les serveurs distants, lancez le paquet npm @normi/mcp-dvf en local. Il relaie les appels vers le même serveur Normi.

{
  "mcpServers": {
    "normi": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@normi/mcp-dvf"],
      "env": {
        "NORMI_API_KEY": "${env:NORMI_API_KEY}"
      }
    }
  }
}

Premier prompt à essayer

“Avec Normi, compare le prix au m² des appartements à Lyon 6 selon leur classe DPE.”

L'agent appelle analyze_dpe_price_premium (10 crédits). Extrait de la réponse réelle, relevée le 10 octobre 2026 sur les données DVF 2014–2025 :

{
  "classes": {
    "B": { "count": 192,  "median_prix_m2": 5479, "vs_median_pct": 18.5 },
    "C": { "count": 827,  "median_prix_m2": 4788, "vs_median_pct": 3.6 },
    "D": { "count": 1421, "median_prix_m2": 4547, "vs_median_pct": -1.6 },
    "F": { "count": 239,  "median_prix_m2": 4619, "vs_median_pct": -0.1 },
    "G": { "count": 94,   "median_prix_m2": 4679, "vs_median_pct": 1.2 }
  },
  "summary": "Class B homes sell at +18.5% vs. median; class A at -3%"
}

À Lyon 6 (69006), les appartements classés B se vendent 18,5 % au-dessus de la médiane du secteur, alors que F et G restent à peu près au niveau médian. Ce croisement vente × DPE n'existe dans aucune source publique telle quelle.

Dépannage

Normi n'apparaît pas dans les outils de l'agent↓
Vérifiez que le fichier est bien .cursor/mcp.json (projet) ou ~/.cursor/mcp.json (global) et que le JSON est valide. Dans Customize, le serveur doit être activé. Les journaux sont dans le panneau Output (Cmd+Shift+U), canal « MCP Logs ».
${env:NORMI_API_KEY} reste vide↓
Cursor lit les variables d'environnement de son processus. Exportez NORMI_API_KEY dans votre profil shell (~/.zshrc, ~/.bashrc), puis quittez et relancez Cursor. Les serveurs distants n'acceptent pas envFile.
La fenêtre de connexion Normi ne s'ouvre pas (OAuth)↓
Retirez puis réactivez le serveur dans Customize pour relancer l'authentification. Si votre réseau bloque le retour vers localhost, passez à la variante avec clé API.
Erreur 401 — Unauthorized↓
Clé API : elle est absente, mal recopiée ou révoquée (le préfixe normi_ fait partie de la clé). Vérifiez que la variable d'environnement est bien visible du client. OAuth : l'accès a expiré ou a été révoqué, relancez la connexion depuis le client.
« no active API key » (403) sur chaque appel↓
Votre compte n'a plus de clé active. Créez-en une dans le tableau de bord : une connexion OAuth reprend dès l'appel suivant, une config par clé doit recevoir la nouvelle clé.
Crédits insuffisants↓
Le message arrive dans la réponse de l'outil, pas en HTTP 402. Le plan gratuit recharge 500 crédits le 1er du mois ; vous pouvez aussi acheter des crédits depuis le tableau de bord.
Erreur 429 — Rate limited↓
Vous dépassez la limite de requêtes par minute de votre plan. Attendez quelques secondes, ou limitez les appels en parallèle de votre agent.

Étapes suivantes