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é

Capture d'écran 2026-04-01 213036 Capture d'écran 2026-04-01 213155

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

3 « J'aime »

Bonjour Nicolas,
J’ai découvert Grist hier en cherchant une alternative à « Sharepoint Lists » qui serait facilement accessible par un mcp afin d’utiliser des mails, fichier texte de todo pour mettre à jour les taches. Et pourquoi pas aussi dans l’autre sens, mettre en forme, résumer avec un LLM.
Mon usage étant une petite liste de tâche pour une poignée de personnes, je cherche une solution gratuite/self-hostée.
Est-ce que je pourrai utiliser GristCoderMCP si j’auto-héberge Grist ?
Est-ce que le plan gratuit sur GetGrist resterait compatible avec ce MCP ?
Est-ce que toutes ces questions de « noob » sont hors-sujet et je mériterai de commenter par lire un tuto ?

Merci en tout cas pour tous ces plugins et bon weekend !

Bonjour,

Le MCP fonctionne sur toute instance Grist accessible sur le web a priori en configurant l’url vers l’instance Grist configurée dans le client MCP :

"grist-coder": {
  "command": "C:\\Users\\Omen\\.npm-global\\mcp-remote.cmd",
  "args": [
    "http://localhost:8742/mcp",
    "--header",
    "Authorization: Bearer YOUR_API_KEY_GRIST",
    "--header",
    "X-Grist-Site: https://grist.numerique.gouv.fr" 
  ]
}

(remplacer « https://grist.numerique.gouv.fr » par l’instance cible qui match avec user et api_key dans la config MCP, donc aussi avec un http://localhost:8484)

Ce MCP GristCoder est plutôt destinée à la création d’un document Grist complet, en conception.

Pour l’exploitation, je recommanderais plutôt l’utilisation de ce MCP GitHub - nic01asFr/mcp-server-grist: MCP server implementation for Grist API integration · GitHub à utiliser avec un client MCP claissuqe type claude desktop, mistral le chat etc…

A priori je ne crois pas que le plan gratuit empêche l’utilisation de l’API donc je dirai Ok à vérifier, techniquement aucun soucis.

N’hésite pas le forum est aussi fait pour ça ! Grist est une solution optimale pour de nombreux cas d’usage, les ressources sont nombreuses tu devrais trouver ton bonheur :slight_smile:

:wave:

1 « J'aime »