Blog15 mars 2026

MCP Réassurez-moi : tarifier une assurance emprunteur depuis un LLM

Lucas Negro Castro
MCP Réassurez-moi : tarifier une assurance emprunteur depuis un LLM
Le Model Context Protocol (MCP) est un standard ouvert proposé par Anthropic qui permet à un LLM d'interagir avec des systèmes externes via des outils structurés. Concrètement : un agent IA peut appeler des fonctions définies par votre application, exactement comme un développeur appellerait une API. Chez Réassurez-moi, nous avons une API de tarification qui compare en temps réel les offres d'assurance emprunteur de tous les assureurs du marché. L'idée était simple : exposer cette API comme un serveur MCP pour qu'un conseiller puisse poser la question en langage naturel et obtenir la meilleure offre instantanément.
Un chatbot classique avec RAG aurait besoin d'être ré-entraîné ou mis à jour à chaque changement de tarif. Le MCP résout ce problème différemment : le LLM ne connaît pas les tarifs, il sait juste qu'il peut appeler un outil pour les obtenir. Les données restent dans notre système, fraîches et à jour. C'est la séparation des responsabilités appliquée à l'IA :
  • Le LLM comprend le langage naturel et orchestre les appels
  • Le MCP expose les capacités métier sous forme d'outils
  • L'API contient la logique et les données
Le serveur MCP est un processus Node.js qui communique avec le LLM via stdio (ou HTTP selon le client). Il expose trois outils principaux :
Typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({
  name: "reassurezmoi",
  version: "1.0.0",
});
L'outil principal. Il prend les caractéristiques du prêt et retourne les meilleures offres triées par taux.
Typescript
server.tool(
  "tarifier_assurance",
  "Compare les offres d'assurance emprunteur pour un prêt immobilier",
  {
    montant: z.number().describe("Montant du prêt en euros"),
    duree: z.number().describe("Durée du prêt en mois"),
    taux_nominal: z.number().describe("Taux nominal du prêt en %"),
    quotite: z.number().default(100).describe("Quotité d'assurance en %"),
    date_naissance: z.string().describe("Date de naissance (YYYY-MM-DD)"),
    fumeur: z.boolean().default(false),
  },
  async ({ montant, duree, taux_nominal, quotite, date_naissance, fumeur }) => {
    const offres = await apiReassurezmoi.tarifier({
      montant,
      duree,
      taux_nominal,
      quotite,
      date_naissance,
      fumeur,
    });

    const top3 = offres
      .sort((a, b) => a.taux_assurance - b.taux_assurance)
      .slice(0, 3);

    return {
      content: [
        {
          type: "text",
          text: formatOffres(top3),
        },
      ],
    };
  }
);
Retourne la liste des assureurs disponibles avec leurs caractéristiques, utile pour que le LLM puisse orienter la conversation.
Typescript
server.tool(
  "get_offres_assureurs",
  "Retourne les assureurs partenaires et leurs points forts",
  {},
  async () => {
    const assureurs = await apiReassurezmoi.getAssureurs();
    return {
      content: [{ type: "text", text: JSON.stringify(assureurs, null, 2) }],
    };
  }
);
Compare les garanties entre plusieurs offres pour aider le conseiller à argumenter au-delà du seul taux.
Typescript
server.tool(
  "comparer_garanties",
  "Compare les garanties de deux offres d'assurance",
  {
    offre_a: z.string().describe("ID de la première offre"),
    offre_b: z.string().describe("ID de la seconde offre"),
  },
  async ({ offre_a, offre_b }) => {
    const comparaison = await apiReassurezmoi.comparerGaranties(offre_a, offre_b);
    return {
      content: [{ type: "text", text: formatComparaison(comparaison) }],
    };
  }
);
Typescript
const transport = new StdioServerTransport();
await server.connect(transport);
Une fois le MCP branché à Claude Desktop ou à tout client compatible, voici ce que ça donne en pratique : Conseiller : "Mon client veut emprunter 280 000€ sur 25 ans à 3,9%. Il a 38 ans, non fumeur. Quelle est la meilleure assurance ?" Claude (en interne) : appelle tarifier_assurance({ montant: 280000, duree: 300, taux_nominal: 3.9, date_naissance: "1987-03-15", fumeur: false }) Claude (en réponse) : "Voici les 3 meilleures offres pour votre client : 1. Assureur A — 0,11%/an — 25,67€/mois — Garanties : DC, PTIA, ITT, IPT 2. Assureur B — 0,13%/an — 30,33€/mois — Garanties : DC, PTIA, ITT, IPT, IPP 3. Assureur C — 0,14%/an — 32,67€/mois — Garanties complètes dont perte d'emploi L'Assureur A offre le meilleur taux, mais si votre client souhaite une couverture perte d'emploi, l'Assureur C est à privilégier."
Pour brancher le MCP à Claude Desktop, il suffit d'ajouter la configuration dans claude_desktop_config.json :
Json
{
  "mcpServers": {
    "reassurezmoi": {
      "command": "node",
      "args": ["/path/to/mcp-reassurezmoi/dist/index.js"],
      "env": {
        "REASSUREZMOI_API_KEY": "votre_cle_api"
      }
    }
  }
}
Le MCP transforme une API métier en capacité cognitive d'un LLM. Le conseiller n'a plus besoin de naviguer dans une interface, de copier-coller des données, ni de connaître les paramètres techniques de l'API. Il pose une question en français, comme il le ferait à un collègue expert. Le LLM détermine quels outils appeler, dans quel ordre, et synthétise le résultat en langage naturel adapté au contexte. C'est le chaînon manquant entre l'IA générative et les systèmes métier existants — sans avoir à tout reconstruire.
Ce MCP alimente également la GPT App publique Réassurez-moi disponible sur ChatGPT, permettant à n'importe quel particulier de comparer les offres d'assurance emprunteur directement depuis ChatGPT — sans formulaire, sans compte, en langage naturel.
Share this post:
Sur cette page