BETA - GristCoderMCP - structurer un document Grist complet avec un client LLM
GristCoderMCP => https://gitlab.cerema.fr/mcp/gristcoder_mcp
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
① Ce que ça fait
GristCoderMCP permet à un client LLM compatible MCP de structurer un document Grist
de manière complète, en une session de conversation :
● Tables, colonnes typées, formules Python, références entre tables
● Widgets HTML ou React stockés dans le document, pages liées et configurées
● Webhooks vers des APIs externes
Les widgets générés ont accès aux données via un bridge Grist injecté automatiquement :
grist.docApi.fetchTable(), grist.onRecord(), applyUserActions()
Types d’artefacts supportés : html, react, app (SPA), markdown, mermaid, svg, python, sql
Compatible : grist.numerique.gouv.fr ✓ · Grist Community Edition ✓ · docs.getgrist.com ✓
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
② Architecture - widget + serveur MCP intégré
Le widget est servi directement par le serveur MCP — un seul processus,
un seul déploiement, zéro infrastructure supplémentaire.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
③ Principe d’architecture - la contextualisation du client LLM
Le serveur ne se contente pas d’exposer des outils.
Il maintient une représentation active de la session et la sert au client LLM
à chaque étape sous forme de ressources et de hints.
-
Filtrage progressif des outils par phase
6 phases de session : qualifying → assessing → designing → building → verifying → done
À chaque phase, seuls les outils pertinents sont visibles (13 à 28).
La transition envoie une notification MCPtools/list_changed—
le client re-fetche la liste automatiquement. -
Hints de navigation embarqués dans chaque réponse
Chaque réponse d’outil inclut_next(action recommandée) et_next_resources
(ressources à lire avant d’agir). Le client LLM ne navigue pas à l’aveugle. -
Ressources contextuelles live
context/{token}— snapshot complet : schéma, graphe FK, artefacts,
pages, audit qualité automatique, delta plan vs réalité construiteplan/{token}— plan courant + phase + prochaine étape recommandéeschema-diagram/{token}— diagramme ER Mermaid généré à la voléecode/{token}— code source de tous les artefacts en un appel
-
Documentation embarquée
10 ressources statiques servies par le serveur : schéma Grist, templates d’artefacts,
recettes de pages, géo (BAN, IGN, OSM), open data (SIRENE, DVF, data.gouv),
patterns d’intégration IA. Le client LLM lit ce dont il a besoin, au bon moment. -
Sub-agents spécialisés
Délégation à des rôles ciblés : data-architect, ui-designer, page-architect, ux-navigator.
Chaque rôle reçoit un system prompt dédié et un contexte réduit au strict nécessaire.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
④ En beta
Stable - mono-utilisateur, localhost :
● CRUD Grist complet (tables, colonnes, formules, pages, webhooks)
● Écriture, patch et prévisualisation des widgets
● Cartes Leaflet et MapLibre GL dans les artefacts
● Authentification widget + client LLM unifiée sur uid:{grist_user_id}
● Déploiement Docker (1 commande)
Fonctionnel, à polir :
● Wizard overlay - multi-cartes, transitions à affiner
● Chat intégré - pas de persistance entre sessions
● Sub-agents - dépendent du support sampling du client MCP
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⑤ À venir - dans la continuité du principe de contextualisation
● Persistance du plan et de la session dans une table Grist -
le contexte survit aux redémarrages, le LLM retrouve l’état exact où il en était
● Mode standalone - boucle d’inférence embarquée dans le serveur,
composant chat conditionnel dans le widget.
Détection automatique : client MCP connecté → mode MCP,
sinon → chat activé dans le widget.
Même session, même auth, même contextualisation - seul le chemin de l’inférence change.
● Multi-utilisateur et déploiement distant - sessions isolées par uid,
streams SSE filtrés, HTTPS reverse proxy
● CSS framework configurable - aujourd’hui DSFR injecté automatiquement
(contexte Cerema / secteur public), à rendre paramétrable
● Tests automatisés - pytest + httpx test client
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⑥ Retours
Cas d’usage envisagés, retours sur grist.numerique.gouv.fr,
expériences avec d’autres clients LLM compatibles MCP,
idées sur la contextualisation ou le mode standalone -
issues et MR bienvenus sur le dépôt.
![]()
#Grist #MCP #LLM #CustomWidget #OpenSource

