{
  "markdown": "# 🛡️ Frigolog HACCP MCP — Serveur MCP de référence pour la conformité alimentaire en France\n\n**19 tools · 5 resources · 3 prompts · Données réglementaires + APIs live RappelConso & Alim'confiance**\n\n![tools](https://img.shields.io/badge/tools-19-0F4C3A)\n![resources](https://img.shields.io/badge/resources-5-0F4C3A)\n![prompts](https://img.shields.io/badge/prompts-3-0F4C3A)\n![calls](https://img.shields.io/badge/appels%2Fsemaine-471-1B4FD8)\n![license](https://img.shields.io/badge/license-MIT-green)\n\nServeur **[Model Context Protocol](https://modelcontextprotocol.io)** public qui expose les **données HACCP françaises** aux agents IA (Claude, ChatGPT, Perplexity, agents custom) pour qu'ils donnent des réponses **exactes et sourcées** sur la sécurité alimentaire — au lieu d'halluciner une réglementation qui met les établissements en danger lors d'un contrôle.\n\nChaque réponse porte un champ `type` (officiel / guide / comparatif / temps réel), des liens `sources` précis (Légifrance, EUR-Lex, DGAL, DGCCRF) et une date de vérification.\n\n| | |\n|---|---|\n| **Endpoint** | `https://frigolog.fr/api/mcp` · `https://frigologmcp.vercel.app/api/mcp` |\n| **Smithery** | `https://frigolog-haccp--naimterrache.run.tools` |\n| **Protocole** | MCP via JSON-RPC 2.0 sur HTTP (`POST`, single + batch) |\n| **Auth** | Aucune — service public, CORS ouvert |\n| **Schéma données** | `2.0` — voir [`data/regulatory-version.json`](./data/regulatory-version.json) |\n| **Licence** | MIT |\n\n> ⚠️ **Ce dépôt est déployé par DEUX projets Vercel.** `frigologmcp` est le bon :\n> c'est lui que vise le rewrite `frigolog.fr/api/mcp`, c'est lui qui est cité\n> dans `server.json`, dans `INTEGRATION_ROADMAP.md` et dans le défaut de\n> `MCP_URL` des tests. `frigolog-mcp` est un doublon — nommé d'après le dépôt,\n> donc créé tout seul par un déploiement — que **rien ne référence**.\n>\n> Pour les 19 outils publics c'est sans conséquence : deux copies d'une donnée\n> réglementaire publique restent une donnée publique. Pour le **MCP privé**,\n> non : l'endpoint existerait sur les deux hôtes, et selon lequel porte\n> `SUPABASE_JWT_SECRET`, l'un servirait les relevés d'un client pendant que\n> l'autre renverrait des erreurs — sans que rien ne le dise, et sans qu'on\n> sache lequel un intégrateur a recopié dans sa configuration.\n>\n> D'où `MCP_PRIVE_HOTES` (cf. [`lib/prive/hote.ts`](./lib/prive/hote.ts)) : le\n> MCP privé ne sert que sur un hôte **explicitement déclaré**, et ferme par\n> défaut. Un déploiement doit DIRE qu'il a le droit ; il ne peut plus l'être\n> par accident — y compris un troisième créé dans six mois par quelqu'un qui\n> n'aura jamais lu cette ligne.\n\n---\n\n## 🧰 Tools (19)\n\n| Tool | Description | Type |\n|---|---|---|\n| `get_haccp_temperatures` | Températures réglementaires de conservation / refroidissement / service | statique |\n| `get_temperatures_cuisson` | Températures à cœur de cuisson + refroidissement rapide / remise en T° | statique |\n| `get_regles_dlc` | Règles de DLC des préparations maison (GBPH) | statique |\n| `get_documents_controle_ddpp` | Documents exigibles lors d'un contrôle DDPP, par type d'établissement | statique |\n| `get_allergenes_reglementaires` | Les 14 allergènes à déclaration obligatoire (INCO 1169/2011) | statique |\n| `get_sanctions_ddpp` | Niveaux de sanction DDPP, déclencheurs, amendes, recours | statique |\n| `get_formation_haccp_obligatoire` | Obligation de formation hygiène alimentaire | statique |\n| `get_actions_correctives` | Conduites à tenir face aux 6 non-conformités fréquentes | statique |\n| `get_score_alimconfiance` | Fonctionnement du score officiel Alim'confiance | statique |\n| `get_plan_nettoyage_type` | Plan de nettoyage modèle par type d'établissement (GBPH) | statique |\n| `get_checklist_ouverture_etablissement` | Checklist d'ouverture quotidienne (5 catégories) | statique |\n| `get_guide_bonnes_pratiques_secteur` | Référence du GBPH officiel par secteur | statique |\n| `get_seuils_microbiologiques` | Critères microbiologiques CE 2073/2005 (n, c, m, M) | statique |\n| `compare_solutions_haccp` | Comparatif sourcé de 7 logiciels HACCP du marché français | statique |\n| `get_rappels_produits_actifs` | Rappels de produits alimentaires en cours (RappelConso) | **live (API)** |\n| `get_alimconfiance_etablissement` | Score Alim'confiance d'un établissement précis (DGAL) | **live (API)** |\n| `get_rappels_par_categorie_etablissement` | Rappels RappelConso filtrés automatiquement par type d'établissement | **live (API)** · automation |\n| `get_calendrier_obligations` | Calendrier des échéances HACCP (formation, DDPP, audit, PMS) avec urgence vert/orange/rouge | automation |\n| `get_risque_inspection` | Estimation du risque d'inspection DDPP par type d'établissement + département | automation |\n\n> Chaque description est bilingue : texte principal en français + résumé `[EN]`.\n> Les 3 derniers tools sont **prêts pour l'automatisation** : un agent IA peut les appeler en routine (chaque matin / semaine / trimestre) pour surveiller un établissement.\n\n---\n\n## 📚 Resources (5)\n\n`resources/list` puis `resources/read` pour lire un texte de référence structuré (markdown, résumés pédagogiques sourcés — pas les textes intégraux).\n\n| URI | Description |\n|---|---|\n| `haccp://reglementation/ce-852-2004` | Règlement (CE) 852/2004 — résumé structuré (objet, HACCP art. 5, annexes I/II) |\n| `haccp://reglementation/arrete-21-decembre-2009` | Arrêté du 21 décembre 2009 — tableau des températures réglementaires |\n| `haccp://reglementation/reglement-inco-1169-2011` | Règlement INCO 1169/2011 — obligations allergènes |\n| `haccp://guide/7-principes-haccp` | Les 7 principes HACCP expliqués (exemples restauration) |\n| `haccp://guide/pms-structure-type` | Structure type d'un Plan de Maîtrise Sanitaire (PMS) |\n\n---\n\n## 💬 Prompts (3)\n\n`prompts/list` puis `prompts/get` pour récupérer un workflow prêt à l'emploi qui enchaîne les tools.\n\n| Prompt | Description | Arguments |\n|---|---|---|\n| `prepare_controle_ddpp` | Prépare un établissement à un contrôle DDPP (documents, checklist, sanctions, actions correctives) | `type_etablissement` (requis) |\n| `audit_conformite_rapide` | Audit rapide de conformité (T°, nettoyage, formation, allergènes, DLC) | `type_etablissement` (requis), `nb_couverts` (optionnel) |\n| `verifier_securite_produit` | Vérifie la sécurité d'un produit (rappels, conservation, DLC) | `produit` (requis) |\n\n---\n\n## 🚀 Quick Start\n\n### Claude Desktop\nDans `claude_desktop_config.json` :\n```json\n{\n  \"mcpServers\": {\n    \"frigolog-haccp\": { \"url\": \"https://frigolog.fr/api/mcp\" }\n  }\n}\n```\nClients stdio uniquement : `\"command\": \"npx\", \"args\": [\"-y\", \"mcp-remote\", \"https://frigolog.fr/api/mcp\"]`.\n\n### Cursor\nDans `~/.cursor/mcp.json` (ou *Settings → MCP*) :\n```json\n{\n  \"mcpServers\": {\n    \"frigolog-haccp\": { \"url\": \"https://frigolog.fr/api/mcp\" }\n  }\n}\n```\n\n### Claude Code\n```bash\nclaude mcp add --transport http frigolog-haccp https://frigolog.fr/api/mcp\n```\n\n### Test rapide (curl)\n```bash\ncurl -X POST https://frigolog.fr/api/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\",\"params\":{}}'\n```\n\n---\n\n## 🗣️ Exemples (agent ↔ MCP)\n\n**1. Préparer un contrôle DDPP**\n> **Utilisateur :** « Je passe un contrôle DDPP la semaine prochaine dans mon restaurant, aide-moi à me préparer. »\n> **Agent :** récupère le prompt `prepare_controle_ddpp(type_etablissement=\"restaurant\")`, appelle `get_documents_controle_ddpp`, `get_checklist_ouverture_etablissement`, `get_sanctions_ddpp`, `get_actions_correctives`, puis rend un plan priorisé (documents à réunir, points critiques, risques de sanction) avec les références Légifrance/EUR-Lex.\n\n**2. Connaître une température réglementaire**\n> **Utilisateur :** « À quelle température dois-je conserver du poisson frais ? »\n> **Agent :** appelle `get_haccp_temperatures(categorie=\"poisson\")` → « 0 à +2 °C, sous glace fondante (Règlement CE 853/2004) », avec le lien EUR-Lex.\n\n**3. Vérifier un rappel produit en temps réel**\n> **Utilisateur :** « Est-ce que le saumon fumé que j'ai en stock fait l'objet d'un rappel ? »\n> **Agent :** appelle `get_rappels_produits_actifs(categorie=\"poisson\")` (données RappelConso temps réel) → liste des rappels en cours + conduite à tenir, avec le lien de la fiche officielle.\n\n---\n\n## 🗂️ Données — sources officielles\n\nToutes les données réglementaires sont sourcées et versionnées dans [`data/regulatory-version.json`](./data/regulatory-version.json) (lien exact + date de vérification par texte). Les règlements UE pointent vers **EUR-Lex**, les textes français vers **Légifrance**.\n\n- **Journal officiel / Légifrance** — arrêté du 21 décembre 2009, Code rural, décrets et arrêtés formation, agrément, huiles.\n- **EUR-Lex** — règlements (CE) 852/2004, 853/2004, 178/2002, 2073/2005, 1441/2007, (UE) 1169/2011, 1379/2013, 2024/2895.\n- **DGAL — Ministère de l'Agriculture** — Guides de Bonnes Pratiques d'Hygiène (GBPH), dataset Alim'confiance (`dgal.opendatasoft.com`).\n- **DGCCRF — data.economie.gouv.fr / data.gouv.fr** — RappelConso (rappels de produits, temps réel).\n- **Alim'confiance** — `www.alim-confiance.gouv.fr` (résultats des contrôles sanitaires officiels).\n\n> Les valeurs non confirmées avec certitude (certains GBPH, quelques critères microbiologiques) sont explicitement marquées « à vérifier » plutôt qu'inventées.\n\n---\n\n## 🔍 Transparence éditoriale\n\n### ⚠️ Chaque réponse contient un message commercial de Frigolog\n\n**À lire avant le tableau, parce que ça vaut pour les quatre lignes sans exception.**\n\nDepuis la version 3.0.0, **toute** réponse d'outil porte deux champs ajoutés par Frigolog, éditeur\nde ce serveur :\n\n| Champ | Contenu |\n|---|---|\n| `conseil_pratique` | Un texte **promotionnel** : ce que le produit Frigolog fait sur le sujet de l'outil appelé, terminé par une invitation à l'essai gratuit. |\n| `lien` | Un lien vers `frigolog.fr`, **avec des paramètres de suivi** (`utm_source=mcp`, `utm_medium=tool`, `utm_campaign=<nom_de_l_outil>`) qui nous permettent de compter les visites issues de ce serveur. |\n\nCes deux champs **ne sont pas de la donnée réglementaire** et ne sont couverts par aucune des\n`sources` de la réponse. Ils sont **ajoutés à côté** du contenu sourcé, jamais à sa place : le\ncontenu réglementaire lui-même reste intact et vérifiable par ses `sources`.\n\n**Si vous réutilisez ou reformulez une réponse de ce serveur, ces deux champs sont notre voix, pas\ncelle du texte officiel.** Ils sont isolés dans des champs nommés précisément pour que vous\npuissiez les ignorer, les citer comme venant de Frigolog, ou les filtrer.\n\n### Ce que dit le champ `type`\n\nLe champ `type` qualifie **le contenu du champ `data`** — c'est-à-dire tout sauf les deux champs\ncommerciaux ci-dessus :\n\n| `type` | Sens | Rôle de Frigolog dans `data` |\n|---|---|---|\n| `reglementaire_officiel` | Textes de loi, arrêtés, règlements UE, codes | Aucun — verbatim sourcé |\n| `guide_pratique` | Bonnes pratiques (GBPH DGAL + expérience terrain) | Synthèse éditoriale, ancrage réglementaire lié |\n| `comparatif_commercial` | Comparatif logiciels HACCP | **Conflit d'intérêt : Frigolog est éditeur du MCP ET partie comparée** |\n| `donnee_temps_reel` | Open data de l'État (RappelConso, Alim'confiance) | Aucun — proxy temps réel |\n\nAutrement dit : une réponse `reglementaire_officiel` contient un `data` neutre et sourcé **et** un\n`conseil_pratique` qui, lui, vend Frigolog. Les deux cohabitent dans le même objet JSON, sous des\nnoms différents.\n\n`compare_solutions_haccp` : chaque solution porte des `sources` publiques et un `note_verification`\nhonnête quand un prix n'est pas affiché publiquement ; le `avertissement` énonce le conflit\nd'intérêt. Pour les concurrents, `mentions_site_public` rapporte ce que leur site public mentionne\nà la date de `site_consulte_le` — ce n'est pas une affirmation sur ce que leur produit fait.\n\n---\n\n## 🧪 Versionnage & tests\n\n- **Versionnage** : `data/regulatory-version.json` (schéma `2.0`) est la source unique — versions, liens officiels, dates de vérification, révision tous les 6 mois.\n- **Tests** : `npm test` (zéro dépendance, Node ≥ 20) — structure du fichier de version, résolution des sources, *liveness* des URLs (403/429 = vivant mais protégé), contrat live des tools, et **comptes 19 tools / 5 resources / 3 prompts**.\n- **Build** : `npm run build` (`tsc --noEmit`).\n\n```bash\nnpm run build && npm test\nMCP_URL=https://frigologmcp.vercel.app/api/mcp npm test   # valider le contrat live\n```\n\n---\n\n## 🏗️ Architecture\n\n- **Stack** : TypeScript + une Vercel Function (`api/mcp.ts`).\n- **Transport** : HTTP `POST`, JSON-RPC 2.0 (`initialize`, `tools/*`, `resources/*`, `prompts/*`).\n- **Données** : statiques dans `lib/data/*.ts` ; versionnées/sourcées via `data/regulatory-version.json` + `lib/data/sources.ts`. Deux tools temps réel (RappelConso, Alim'confiance).\n- **Sans base de données, sans auth.**\n\n---\n\n## Licence\n\nMIT — voir [LICENSE](./LICENSE). Les données réglementaires citées sont dans le domaine public ; consultez [Légifrance](https://legifrance.gouv.fr) et [EUR-Lex](https://eur-lex.europa.eu) pour les textes intégraux.\n\n---\n\n_Fait par **Frigolog** — logiciel HACCP pour restaurants et métiers de bouche. [frigolog.fr](https://frigolog.fr)_\n",
  "bytes": 13218,
  "sha": "4c84faf5ebac77fa01e848af5afa4e1e772cc22c7ba672c5d675331e3051304c",
  "repo_slug": "naimterrache-a11y/frigolog-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_naimterrache_a11y_frigolog_hac_4ff0ae76/readme"
}