Guide d'installation / Claude Code

Connecter Normi à Claude Code

Une commande pour ajouter Normi à Claude Code, puis /mcp pour vous connecter. Claude Code peut alors interroger les ventes DVF, les DPE et la BDNB depuis le terminal, vos scripts ou la CI.

https://mcp.normi.fr/mcp

Testé le 10 octobre 2026 avec Claude Code 2.1.233 (ajout du serveur et détection OAuth), et vérifié avec la documentation officielle. Documentation Claude Code 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 le serveur, puis lancez /mcp dans Claude Code : il ouvre la page de connexion Normi. Aucune clé à copier. --scope user rend Normi disponible dans tous vos projets.

claude mcp add --transport http --scope user normi https://mcp.normi.fr/mcp
# puis, dans Claude Code :
/mcp

Vérifiez l'état de la connexion :

claude mcp list
# normi: https://mcp.normi.fr/mcp (HTTP) - ✔ Connected

Variante avec clé API (CI, machine distante)

Sans navigateur, passez une clé dans l'en-tête Authorization :

export NORMI_API_KEY=normi_VOTRE_TOKEN
claude mcp add --transport http --scope user normi https://mcp.normi.fr/mcp \
  --header "Authorization: Bearer $NORMI_API_KEY"

Pour partager la config avec votre équipe, versionnez un .mcp.json à la racine du projet. Claude Code remplace ${NORMI_API_KEY} par la variable d'environnement de chaque développeur : la clé ne finit jamais dans Git.

Fichier : .mcp.json

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

Alternative : paquet STDIO

Le paquet npm @normi/mcp-dvf tourne en local et relaie les appels vers le même serveur Normi. Le -- sépare les options de Claude Code de la commande du serveur.

claude mcp add --env NORMI_API_KEY=normi_VOTRE_TOKEN --transport stdio normi \
  -- npx -y @normi/mcp-dvf

Premier prompt à essayer

“Avec Normi, les appartements mal classés au DPE se vendent-ils moins cher à Paris 11 ?”

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": {
    "A": { "count": 669,  "median_prix_m2": 9217, "vs_median_pct": -0.8 },
    "B": { "count": 241,  "median_prix_m2": 9543, "vs_median_pct": 2.7 },
    "C": { "count": 1678, "median_prix_m2": 9501, "vs_median_pct": 2.3 },
    "D": { "count": 5303, "median_prix_m2": 9354, "vs_median_pct": 0.7 },
    "F": { "count": 4366, "median_prix_m2": 9206, "vs_median_pct": -0.9 },
    "G": { "count": 1808, "median_prix_m2": 9286, "vs_median_pct": 0 }
  },
  "summary": "Class B homes sell at +2.7% vs. median; class F at -0.9%"
}

À Paris 11, l'écart reste faible : de -0,9 % (classe F) à +2,7 % (classe B) autour de la médiane, sur plus de 20 000 ventes rapprochées d'un DPE. Les médianes ne sont pas corrigées de l'emplacement ni de l'année de vente : c'est une description, pas une « valeur verte » mesurée.

Dépannage

claude mcp list affiche « ! Needs authentication »↓
Le serveur est bien ajouté mais pas encore connecté. Lancez /mcp dans Claude Code, choisissez normi et suivez la connexion dans le navigateur. Sans navigateur, utilisez la variante avec clé API.
Normi n'apparaît que dans un seul dossier↓
Sans --scope, le serveur est enregistré en portée locale (ce projet uniquement). Supprimez-le (claude mcp remove normi) puis rajoutez-le avec --scope user.
${NORMI_API_KEY} vide avec .mcp.json↓
La variable doit être exportée dans le shell qui lance Claude Code. Vérifiez avec echo $NORMI_API_KEY avant de lancer claude.
Révoquer l'accès OAuth↓
Dans /mcp, choisissez normi puis « Clear authentication ». Côté Normi : Tableau de bord → Tokens → Applications connectées → Révoquer.
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