BETA - GristCoderMCP

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 MCP tools/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é construite
    • plan/{token} — plan courant + phase + prochaine étape recommandée
    • schema-diagram/{token} — diagramme ER Mermaid généré à la volée
    • code/{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.

:wave:

#Grist #MCP #LLM #CustomWidget #OpenSource

2 « J'aime »