Guide d'installation / Windsurf (Devin Desktop)

Connecter Normi à Windsurf (Devin Desktop)

Windsurf s'appelle Devin Desktop depuis juin 2026. Ajoutez Normi à son fichier mcp_config.json : l'agent interroge alors les ventes DVF, les DPE et la BDNB depuis l'éditeur.

https://mcp.normi.fr/mcp

Configuration vérifiée le 10 octobre 2026 avec la documentation officielle de Devin Desktop (format actuel, et ancien format Windsurf/Cascade). Documentation Devin 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).
Windsurf est devenu Devin Desktop
Cognition a renommé Windsurf en Devin Desktop le 2 juin 2026. Les installations existantes ont été mises à jour automatiquement ; le fichier de configuration MCP, lui, a changé. Les deux formats sont décrits ci-dessous.

Connexion distante (HTTP Streamable)Recommandé

Ajoutez ce bloc et enregistrez. Sans en-tête, Devin Desktop détecte la connexion OAuth de Normi : cliquez sur Authenticate dans la fiche du serveur, connectez-vous à normi.fr et autorisez l'application.

Fichier : ~/.config/devin/mcp_config.json (Windows : %APPDATA%\devin\mcp_config.json)

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

Pour un seul projet, utilisez .devin/mcp_config.json à la racine du dépôt (ou .devin/mcp_config.local.json, ignoré par Git).

Variante avec clé API

Exportez NORMI_API_KEY dans votre environnement, puis référencez-la avec ${env:…} : la clé n'apparaît jamais en clair dans le fichier.

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

Ancien format Windsurf (Cascade)

Les installations encore sous le nom Windsurf lisent ~/.codeium/windsurf/mcp_config.json et attendent le champ serverUrl. Ouvrez-le depuis le menu … du panneau Cascade → section MCPs → « Open MCP config file ».

Fichier : ~/.codeium/windsurf/mcp_config.json

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

Alternative : paquet STDIO

Si les serveurs distants sont bloqués, lancez le paquet npm @normi/mcp-dvf en local. Il relaie les appels vers le même serveur Normi.

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

Premier prompt à essayer

“Avec Normi, donne le prix au m² des appartements à Nantes (44000) par 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": {
    "A": { "count": 329,  "median_prix_m2": 3571, "vs_median_pct": 4 },
    "C": { "count": 2474, "median_prix_m2": 3526, "vs_median_pct": 2.7 },
    "D": { "count": 4671, "median_prix_m2": 3395, "vs_median_pct": -1.1 },
    "F": { "count": 1103, "median_prix_m2": 3303, "vs_median_pct": -3.8 },
    "G": { "count": 418,  "median_prix_m2": 3440, "vs_median_pct": 0.2 }
  },
  "summary": "Class A homes sell at +4% vs. median; class F at -3.8%"
}

À Nantes centre, l'écart entre classes est net : +4 % au-dessus de la médiane pour la classe A, -3,8 % pour la classe F. Ces médianes décrivent le marché, elles ne sont pas corrigées de l'emplacement ni de l'année de vente.

Dépannage

Le serveur n'apparaît pas après avoir modifié le fichier↓
Vérifiez le chemin : ~/.config/devin/mcp_config.json sur macOS et Linux, %APPDATA%\devin\mcp_config.json sous Windows. Une installation encore sous le nom Windsurf lit l'ancien fichier (voir plus haut). Redémarrez complètement l'application après la modification.
« Needs auth » à côté de Normi↓
La connexion OAuth a expiré ou n'a jamais été faite. Ouvrez la fiche du serveur Normi dans la liste MCP et cliquez sur « Authenticate » pour relancer la connexion dans le navigateur.
Trop d'outils actifs (ancien agent Cascade)↓
L'agent Cascade limite le nombre total d'outils MCP actifs (100). Normi en expose une trentaine : désactivez ceux dont vous n'avez pas besoin avec la liste disabledTools du serveur, ou d'autres serveurs.
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